Skip to main content
Glama

book_venue

Destructive

Reserve a venue offer grounded by match_venues. Pass entityId and the selected offerId. The guest must approve every booking themselves, signed in to their Selfe account: the first call returns status 'approval_required' with approval.url for the guest to open; once they have approved, call again with the same offer and approvalId. A signed mandate alone cannot confirm a booking. No money moves at this step. Returns a confirmation (bookingId) or a conversational next step. Structured JSON.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "entityId": "<entityId>",
      "offerId": "<offerId>"
    },
    "name": "book_venue"
  }
}

Input Schema

NameRequiredDescriptionDefault
renderNo
mandateNoA signed AP2 Cart Mandate for a foreign caller, bound to this entity and offer.
offerIdYesThe opaque, sealed offer id returned by match.
entityIdYesThe place id returned by discover or match.
approvalIdNoThe approval the guest gave this offer in their own Selfe account, returned as approval.id when the booking first needed it. A booking is confirmed only with the guest's approval.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the guest-approval gate, the exact status string returned on first call, the approval.url handoff, and that a signed mandate alone cannot confirm. It also clarifies money movement ("No money moves at this step") and that failure yields a conversational next step, none of which the destructive/openWorld hints convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and the required parameters, then walks the approval flow in call order, which is easy to follow. The trailing "Structured JSON." fragment is filler that could be dropped without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-idempotent, destructive, open-world mutation with no output schema, the description covers inputs, the two-phase approval sequence, return shape (bookingId), and the fallback behavior. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Explains the roles of entityId, offerId, and approvalId in prose, and adds the important caveat that the mandate parameter is insufficient on its own. With schema coverage at 80%, the description usefully reinforces the approvalId provenance without restating type constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Reserve a venue offer") and immediately ties itself to the upstream tool match_venues, which no sibling does. An agent can distinguish it from match_venues and discover_venues without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear preconditions: offers come from match_venues, and the call requires entityId plus the selected offerId. It also specifies the two-step flow (first call returns approval_required, then re-call with approvalId), but never states when NOT to book or what to do if the guest declines.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources