Venue v0.1 Specification

Full technical specification for the Venue hospitality extension.

Version 0.1.0 (Draft)

Namespace URI: https://agenticbooking.org/venue/v1


1. Introduction

1.1 Purpose

AI agents making hospitality recommendations require structured, verifiable information to:

  1. Determine whether a venue fits a user's intent
  2. Defend the recommendation if challenged
  3. Complete a booking without friction

Venue provides this information in a machine-readable format that extends A2A Agent Cards.

1.2 Scope

Venue Defines

  • Identity — Verifiable venue existence
  • Vibe — Subjective character, structured for matching
  • Attributes — Factual, quantified characteristics
  • Evidence — Proof supporting claims
  • Fit — Explicit intent alignment (positive and negative)
  • Actions — Available operations (not their implementation)
  • Units — Bookable sub-entities
  • Neighbourhood — Location context
  • Presentation — A2UI components for human confirmation

Venue Does NOT Define

  • Transport protocols (use A2A)
  • Booking request/response schemas (endpoint-specific)
  • Discovery mechanisms (topology-neutral)
  • Rendering implementation (use A2UI)

1.3 Conformance

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.


2. Venue Structure

A Venue-conformant Agent Card MUST include the venue extension declaration and the venue data block.

2.1 Extension Declaration

{
  "capabilities": {
    "extensions": [{
      "uri": "https://agenticbooking.org/venue/v1",
      "required": true
    }]
  }
}

2.2 Type Hierarchy

Venue defines a type hierarchy enabling polymorphic agent behaviour:

Bookable (base)
└── Venue (hospitality)
    ├── Accommodation (Hotel, BnB, Hostel)
    ├── Eat (Restaurant, Cafe, Bar)
    ├── Experience (Museum, Tour, Activity)
    └── Service (Spa, Salon)

All types inherit from Bookable. Agents MAY interact with any Bookable without knowing its specific type.

Note: The Stay spec defines the booking lifecycle, not a venue type. When booking an Accommodation venue, the booking record follows the Stay state machine.

2.3 Venue Data Block

{
  "venue": {
    "schemaVersion": "0.1.0",
    "type": "venue:hotel",
    "extends": "venue:bookable",
    "identity": { },
    "vibe": { },
    "attributes": { },
    "evidence": { },
    "fit": { },
    "actions": { },
    "units": [ ],
    "neighbourhood": { },
    "presentation": { },
    "answers": [ ]
  }
}

2.4 Type Declaration

The type field declares the specific Venue type using namespaced values:

{ "type": "venue:hotel" }
{ "type": "venue:restaurant" }
{ "type": "venue:museum" }

The extends field indicates inheritance:

{ "extends": "venue:bookable" }
{ "extends": "venue:stay" }

Agents MUST treat any Venue with extends: "venue:bookable" as bookable, regardless of specific type.

2.5 Polymorphic Behaviour

All Bookable types guarantee:

  • identity — Verifiable existence
  • vibe — Subjective character
  • evidence — Proof for claims
  • fit — Intent alignment
  • actions — Available operations (including book)
  • answers — Quotable explanations

Type-specific fields extend but do not replace base fields:

TypeAdditional Fields
Hotelunits (rooms), checkInTime, checkOutTime
Restaurantunits (tables), cuisine, mealPeriods, covers
Museumexhibitions, collections, ticketTypes
Spaservices, duration, specialists

2.6 Required Fields

A Venue block MUST include:

  • schemaVersion
  • type
  • identity
  • actions

All other fields are OPTIONAL but RECOMMENDED.

2.7 Venue Plurality

Multiple Venues MAY exist for the same venue, issued by different parties. Venues MAY disagree. This is expected, not a defect.

Venue defines no single source of truth. There is no "authoritative Venue" for a venue—only Venues with varying evidence quality and provenance.

Agents resolve conflicts via evidence weighting, not protocol authority. Venue is a field of competing truth claims, not a canonical registry.

When multiple Venues exist for the same venue, agents SHOULD:

  • Compare evidence quality and recency
  • Weight by verification status
  • Prefer convergent claims across Venues
  • Disclose uncertainty to users when Venues conflict

2.8 Conformance Levels

Venue Core = identity + evidence + fit + actions

LevelRequired BlocksUse Case
Venue Coreidentity, evidence, fit, actionsMinimum viable implementation
Venue ExtendedCore + vibe, attributes, units, neighbourhoodRich discovery
Venue CompleteExtended + presentation, answersFull agent experience

A minimal compliant implementation requires only Venue Core. Agents MUST handle Venues at any conformance level.


3. Identity

The identity block establishes verifiable venue existence.

3.1 Structure

Public trading name. MUST be the name customers use.

Registered company name if different from trading name.

Primary venue classification.

Physical location with address (string) and coordinates (lat, lng in WGS84).

Primary domain. SHOULD match the domain hosting the Agent Card.

Decentralised identifier. SHOULD use did:web method when present.

Legal registration with jurisdiction, companyNumber, vatNumber.

3.2 Example

{
  "identity": {
    "name": "The Roste",
    "legalName": "The Roste Arms Limited",
    "venueType": "hotel",
    "location": {
      "address": "The Green, Burnton Market, Eastshire PE31 8HD",
      "coordinates": [52.9456, 0.7234]
    },
    "domain": "theroste.com",
    "did": "did:web:theroste.com",
    "registration": {
      "jurisdiction": "GB",
      "companyNumber": "03456789"
    }
  }
}

3.3 Verification

Agents MAY verify identity by cross-referencing:

  • Domain ownership (Agent Card URL matches identity.domain)
  • Company registries (e.g., Companies House, state registrations)
  • DID resolution

4. Vibe

The vibe block captures subjective venue character in structured form.

4.1 Structure

One-line summary of the venue's character.

Array of character descriptors from the vocabulary.

Structured atmosphere with energy, formality, crowd, pace.

Numeric scores (0-1) for warmth, quirkiness, luxury, authenticity.

4.2 Example

{
  "vibe": {
    "essence": "Relaxed coastal elegance",
    "character": ["intimate", "foodie", "understated", "dog-friendly"],
    "atmosphere": {
      "energy": "calm",
      "formality": "smart-casual",
      "crowd": "couples, foodies, dog-owners",
      "pace": "slow"
    },
    "personality": {
      "warmth": 0.8,
      "quirkiness": 0.4,
      "luxury": 0.7,
      "authenticity": 0.9
    }
  }
}

4.3 Derivation

Vibe fields MAY be:

  • Venue-declared — Asserted by the venue
  • Agent-derived — Computed from evidence by consuming agents
  • Registry-derived — Provided by third-party registries or tooling

Consumers SHOULD prefer evidence-backed or third-party-derived vibe signals where available.

4.4 Character Vocabulary

The character array SHOULD use values from the normative vocabulary:

intimate, lively, peaceful, buzzy, traditional, contemporary,
quirky, refined, casual, formal, family-oriented, adults-only,
romantic, social, secluded, central, rustic, modern, historic,
boutique, grand, minimal, cosy, airy, dark, bright

Custom values are permitted but MAY reduce interoperability.


5. Attributes

The attributes block contains factual, quantified characteristics.

5.1 Structure

{
  "attributes": {
    "accommodation": {
      "totalRooms": "integer",
      "roomTypes": ["string"],
      "checkIn": "HH:MM",
      "checkOut": "HH:MM"
    },
    "dining": {
      "restaurants": "integer",
      "bars": "integer",
      "cuisineStyle": ["string"],
      "meals": ["string"]
    },
    "facilities": {
      "parking": { "available": "boolean", "spaces": "integer", "evCharging": "boolean" },
      "wifi": { "available": "boolean", "free": "boolean" },
      "pets": { "allowed": "boolean", "types": ["string"], "fee": "number" },
      "pool": { "available": "boolean", "type": "string" },
      "spa": { "available": "boolean" },
      "gym": { "available": "boolean" }
    },
    "accessibility": {
      "wheelchairAccess": "boolean",
      "accessibleRooms": "integer",
      "lift": "boolean"
    },
    "policies": {
      "cancellation": { "freeCancellationHours": "integer" },
      "children": { "allowed": "boolean", "minimumAge": "integer" },
      "smoking": "boolean"
    }
  }
}

5.2 Requirements

  • Numeric values MUST be integers or decimals, not strings
  • Boolean values MUST be true or false, not strings
  • Time values MUST be in 24-hour HH:MM format

5.3 Extensibility

Additional attribute fields MAY be added. Field names SHOULD be camelCase. Vendor-specific extensions SHOULD use namespaced keys:

{
  "attributes": {
    "vendor:sustainabilityScore": 0.82
  }
}

6. Evidence

The evidence block provides proof for claims, enabling defensible recommendations.

6.1 Structure

Human-readable statement of what is being evidenced.

The actual value if applicable (boolean, number, string).

Confidence score from 0 to 1.

Source agreement: strong, moderate, weak, or conflicting.

Array of source objects providing the evidence.

When the evidence was last verified.

6.2 Source Structure

{
  "sources": [
    {
      "type": "string, REQUIRED",
      "sourceRef": "string or array, REQUIRED",
      "method": "string, REQUIRED",
      "capturedAt": "ISO-8601, REQUIRED",
      "capturedBy": "string, RECOMMENDED",
      "verification": {
        "status": "string, REQUIRED",
        "verifiedBy": "string, OPTIONAL",
        "verifiedAt": "ISO-8601, OPTIONAL"
      }
    }
  ]
}

6.3 Source Types

Source types identify who provided the evidence:

TypeDescriptionExample
third_partyExternal authority"Green Tourism says Bronze"
human_observationSite visit or interview"Dog greets at breakfast"
self_reportVenue-provided"We source fish from Morston"
curator_certificationAuthority certification"Tourism board accreditation"
derivedComputed or inferred"Walk time to station: 8 mins"

Source types MAY be extended using colon-namespaced values:

{ "type": "third_party:aa-rosettes" }
{ "type": "third_party:green-tourism" }
{ "type": "regional:uk-fsa-hygiene" }

6.4 Capture Methods

The method field is implementation-defined. Implementers SHOULD use descriptive values that indicate how evidence was obtained. Common patterns include site visits, form submissions, API lookups, and document review.

6.5 Verification Status

StatusMeaning
unverifiedCaptured but not verified
machine_verifiedAutomatically validated
human_verifiedHuman reviewed
authority_verifiedOfficial body certified

Agents SHOULD weight evidence by verification status when scoring fit.

6.6 Convergence Values

ValueMeaning
strongMultiple source types agree
moderateTwo or more sources agree with minor inconsistencies
weakLimited corroboration
conflictingSources disagree

When convergence is conflicting, agents SHOULD disclose uncertainty to users rather than making definitive claims.

6.7 Evidence Hierarchy

Recommended evidence weighting:

  1. Convergent — Multiple independent sources agree
  2. Authority verified — Government/regulatory sources, DMO certification
  3. Third-party credential — Industry certifications (AA, Green Tourism)
  4. Human observation — DMO site visits, inspections
  5. First-party corroborated — Venue claim with supporting evidence
  6. First-party alone — Venue claim without corroboration

7. Fit

The fit block declares explicit intent alignment—what the venue is good for, and what it is not.

7.1 Structure

{
  "fit": {
    "strong": [
      {
        "intent": "string, REQUIRED",
        "confidence": "number 0-1, REQUIRED",
        "signals": ["string"]
      }
    ],
    "weak": [
      {
        "intent": "string, REQUIRED",
        "reason": "string, REQUIRED"
      }
    ]
  }
}

7.2 Requirements

  • fit.strong lists intents the venue is well-suited for
  • fit.weak lists intents the venue is poorly-suited for
  • Both arrays MAY be empty but SHOULD NOT be omitted

7.3 Intent Vocabulary

The intent field SHOULD use values from the normative vocabulary:

romantic-weekend, family-holiday, dog-friendly-trip,
business-travel, foodie-escape, quiet-retreat, celebration,
group-gathering, accessible-travel, budget-friendly,
luxury-treat, solo-travel, active-adventure, cultural-exploration,
workation, hen-party, stag-do, anniversary, honeymoon,
pet-friendly-coastal, walking-holiday, cycling-trip

7.4 Weak Fit

Venues SHOULD declare weak fit where known. Absence of weak fit declarations SHOULD NOT be interpreted as universal suitability.

Explicit weak fit is unusual in hospitality systems but essential for agents. Bad matches damage reputation more than lost bookings.


8. Actions

The actions block declares what operations an agent can perform.

8.1 Structure

Array of available operations.

URL for the A2A endpoint.

Protocol identifier (e.g., a2a-jsonrpc).

Auth configuration with type and flows.

Booking constraints like maxLeadTimeDays, minLeadTimeHours, maxNights.

8.2 Capability Values

CapabilityDescription
assess-fitQuery fit for user intent
check-availabilityQuery availability
get-ratesRetrieve pricing
holdTemporarily reserve
bookCreate confirmed reservation
modifyChange existing reservation
cancelCancel reservation

8.3 Scope Limitation

Venue declares WHAT actions exist, not HOW they behave.

Venue does NOT define booking request or response schemas. Actions reference A2A-compatible endpoints that define their own operational semantics.


9. Units

The units array contains bookable sub-entities. Each unit is a partial Venue with inheritance from the venue level.

9.1 Structure

{
  "units": [
    {
      "id": "string, REQUIRED",
      "type": "string, REQUIRED",
      "name": "string, REQUIRED",
      "vibe": { },
      "attributes": { },
      "evidence": { },
      "fit": { },
      "pricing": {
        "from": {
          "amount": "number",
          "currency": "string",
          "per": "string"
        }
      },
      "media": [ ]
    }
  ]
}

9.2 Unit Types

Venue TypeUnit TypeExamples
hotelroomStandard, Suite, Cottage
restauranttableIndoor 2-top, Private dining
barareaMain bar, Garden
experienceslotMorning session

9.3 Inheritance

Units inherit venue-level vibe, attributes, and evidence unless explicitly overridden.

A venue declaring pets.allowed: true applies to all units unless a unit declares pets.allowed: false.


10. Neighbourhood

The neighbourhood block provides location context beyond coordinates.

10.1 Structure

Location type: village-centre, rural, city-centre, coastal, etc.

Area character descriptors.

Walkability score from 0 to 1.

Array of nearby points of interest.

Regional context with name and knownFor.

10.2 Proximity Structure

{
  "proximity": [
    {
      "name": "Holkbury Beach",
      "type": "beach",
      "distance": { "value": 3, "unit": "miles" },
      "travelTime": { "value": 8, "unit": "minutes", "mode": "car" },
      "relevance": ["dog-walking", "family-day-out", "nature"]
    }
  ]
}

Proximity items SHOULD include relevance tags indicating why the nearby item matters for intent matching.


11. Presentation

The presentation block defines A2UI components for human-in-the-loop confirmation.

11.1 Purpose

AI agents choose. Humans confirm. The presentation block enables rich UI rendering for that confirmation step, avoiding chat-based friction.

11.2 Structure

{
  "presentation": {
    "a2uiVersion": "string",
    "components": {
      "componentId": {
        "type": "string, REQUIRED",
        "template": { }
      }
    },
    "layouts": {
      "layoutName": ["componentId"]
    }
  }
}

11.3 Component Types

TypePurpose
cardVenue summary
carouselBrowse rooms/options
formCollect booking details
mapLocation context
image-gridPhoto gallery
pricing-tableRate comparison
calendarAvailability display

11.4 Layouts

LayoutContext
summaryAgent presenting shortlist
detailUser exploring venue
bookingUser ready to book
confirmationPre-booking review

11.5 Progressive Enhancement

Agents without A2UI support SHOULD fall back to structured text derived from vibe, attributes, and evidence. The presentation block is OPTIONAL.


12. Verifiable Credentials

Claims MAY be elevated to cryptographically signed Verifiable Credentials.

12.1 Structure

{
  "credentials": [
    {
      "@context": ["https://www.w3.org/2018/credentials/v1"],
      "type": ["VerifiableCredential", "string"],
      "issuer": "did:string",
      "issuanceDate": "ISO-8601",
      "expirationDate": "ISO-8601",
      "credentialSubject": {
        "id": "did:string"
      },
      "proof": { }
    }
  ]
}

12.2 Usage

Verifiable Credentials provide cryptographic proof where URL-based evidence is insufficient. They are OPTIONAL and complement, not replace, the evidence block.


13. Discovery

13.1 Well-Known Endpoint

Venue-conformant Agent Cards SHOULD be published at:

https://{domain}/.well-known/agent.json

13.2 Topology Neutrality

Venue makes no assumptions about discovery topology. Agent Cards MAY be discovered via:

  • Direct fetch from well-known endpoint
  • Private registries
  • Federated registries
  • Peer exchange
  • Search indices

Venue does not define registry protocols or discovery mechanisms.


14. Answers

The answers block provides quotable, evidence-linked explanations for common agent questions.

14.1 Purpose

Agents need to explain recommendations, not just make them.

The answers block provides canonical responses to questions agents actually ask, each tied to Venue evidence. This enables:

  • Quotable explanations for human-in-the-loop confirmation
  • Audit trails for recommendation decisions
  • Defensible justifications that trace to evidence

14.2 Structure

{
  "answers": [
    {
      "question": "string, REQUIRED",
      "answer": "string, REQUIRED",
      "confidence": "number 0-1, REQUIRED",
      "basedOn": ["string"],
      "citations": [ ],
      "lastVerified": "ISO-8601"
    }
  ]
}

14.3 Citation Structure

{
  "citations": [
    {
      "type": "string",
      "source": "string",
      "url": "string",
      "venuePath": "string"
    }
  ]
}

The venuePath field references the Venue evidence block (e.g., evidence.dogFriendly, fit.strong[0]).

14.4 Canonical Questions

Answers SHOULD address questions agents commonly ask:

CategoryExample Questions
Fit"Is this good for a romantic weekend?"
Vibe"Is it quiet or lively?"
Capability"Is this genuinely dog-friendly?"
Suitability"Would this suit families with toddlers?"
Guest profile"What kind of guest is happiest here?"
Anti-fit"Who should NOT stay here?"

14.5 Regenerability Requirement

Answers MUST be fully regenerable from Evidence + Fit + Context.

Answers are a convenience layer, not an independent truth source. They exist to accelerate agent response, not to replace evidence inspection.

Agents MUST NOT trust answers that contradict underlying evidence. If regeneration from current evidence would produce a different answer, the Answer is stale and SHOULD be ignored.


15. Agent Behaviour Requirements

This section defines minimum expectations for agents consuming Venue data.

15.1 Fit Handling

Agents MUST NOT book when fit.weak matches user intent without disclosing the weak fit signal.

Example: User requests "nightlife hotel", Venue declares fit.weak: nightlife. Agent MUST inform user before booking.

15.2 Evidence Staleness

  • Agents SHOULD warn users when lastVerified exceeds 90 days for material claims
  • Agents MAY refuse to assert claims with lastVerified exceeding 180 days

15.3 High-Consequence Claims

For safety-critical claims (accessibility, allergens, medical facilities):

  • Agents MUST NOT assert claims at confidence < 0.8 without explicit caveat
  • Agents SHOULD prefer evidence with verification.status of human_verified or authority_verified

15.4 Conflict Handling

When convergence = conflicting, agents SHOULD:

  • Disclose uncertainty to users
  • Present the conflict rather than choosing silently
  • Avoid strong assertions

15.5 Verification Weighting

Recommended evidence weighting by verification status:

StatusRecommended Weight
authority_verifiedHighest
human_verifiedHigh
machine_verifiedMedium
unverifiedLow

16. Security Considerations

16.1 Trust Model

Venue assumes good-faith actors but does not enforce behaviour. Malicious or negligent agents may:

  • Misrepresent evidence
  • Ignore fit signals
  • Assert claims without basis

Venue cannot prevent misuse. It makes misuse observable.

Evidence provenance enables post-hoc audit of recommendation decisions.

16.2 Venue Integrity

  • Venues SHOULD be served over HTTPS
  • Venues with identity.did provide cryptographic verification of issuer
  • Consumers SHOULD verify DID signatures when present

16.3 Venue Impersonation

Multiple Venues may claim to represent the same venue. Venue provides no mechanism to determine which is "official."

Agents SHOULD prefer Venues where:

  • identity.did matches the venue's domain
  • Evidence includes authority_verified sources
  • Multiple independent sources converge

16.4 Liability Shifting

Venue functions as a liability-shifting layer.

When an agent ignores Venue signals (weak fit, conflicting evidence, stale claims) and produces a bad outcome, the fault is traceable. The Venue provided the signal. The agent ignored it.

This protects:

  • Venues — who provided accurate evidence
  • Users — who can audit why they received a bad recommendation
  • Platforms — who can demonstrate good-faith data provision

17. Internal Use

Venue MAY be used internally by hospitality groups to align autonomous systems, independent of external exposure.

Internal use cases include:

  • Venue descriptor standardisation across properties
  • Internal recommendation engine alignment
  • Multi-brand agent coordination
  • Quality assurance automation

18. Protocol Relationships

MCP   = Agent ↔ Tools (how agents connect to data sources)
A2A   = Agent ↔ Agent (how agents communicate)
A2UI  = Agent → Human (how agents present UI)
Venue = Hospitality vocabulary within A2A Agent Cards
ProtocolLayerVenue Relationship
MCPAgent-ToolMCP servers MAY expose Venue data
A2AAgent-AgentVenue extends A2A Agent Card
A2UIAgent-HumanVenue declares A2UI components

Bookable

Base pattern that Venue extends. Defines Identity, Evidence, Fit, Actions core.

Stay

Accommodation-specific extension with room types, check-in/out, and overnight policies.