{
 "name": "The Cloud Caller - Agent Bookings",
 "description": "Book Australian small businesses (workshops, trades, clinics, golf) directly, agent to agent. Also over MCP at https://bookings.thecloudcaller.com/mcp and REST (https://bookings.thecloudcaller.com/openapi.json). Rules: https://bookings.thecloudcaller.com/charter",
 "version": "1.0.0",
 "provider": {
  "organization": "Ammacatize Pty Ltd (The Cloud Caller)",
  "url": "https://thecloudcaller.com"
 },
 "documentationUrl": "https://bookings.thecloudcaller.com/llms.txt",
 "supportedInterfaces": [
  {
   "url": "https://bookings.thecloudcaller.com/a2a",
   "protocolBinding": "JSONRPC",
   "protocolVersion": "1.0"
  },
  {
   "url": "https://bookings.thecloudcaller.com/a2a",
   "protocolBinding": "HTTP+JSON",
   "protocolVersion": "1.0"
  }
 ],
 "url": "https://bookings.thecloudcaller.com/a2a",
 "preferredTransport": "JSONRPC",
 "protocolVersion": "0.3.0",
 "capabilities": {
  "streaming": false,
  "pushNotifications": false
 },
 "defaultInputModes": [
  "application/json",
  "text/plain"
 ],
 "defaultOutputModes": [
  "application/json",
  "text/plain"
 ],
 "skills": [
  {
   "id": "search_businesses",
   "name": "Find businesses",
   "description": "Find businesses that accept agent bookings. Search by what the user needs (e.g. 'car service', 'physio', 'plumber') and/or suburb.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "get_business",
   "name": "Business details",
   "description": "Hours, slot length, party size limits, prices, policies and required_details (e.g. vehicle rego for a car service). Call before confirm_booking.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "check_availability",
   "name": "Check availability",
   "description": "Free slots at a business on a date. party_size is people (e.g. golf players) or 1 for a job/appointment/car service.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "hold_slot",
   "name": "Hold a slot",
   "description": "Reserve a slot for 10 minutes while you confirm details with your user. Does not book.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "confirm_booking",
   "name": "Confirm booking",
   "description": "Turn a hold into a confirmed booking. Needs the real name and phone of the person attending, plus any required_details. Only call once your user has agreed to the time and price (and the deposit and cancellation policy, if the business takes one). If a deposit is required this returns status awaiting_deposit and a pay_url: give your user the link; it is only booked once they pay.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "get_menu",
   "name": "Takeaway menu",
   "description": "Menu with item ids and prices (AUD inc GST), payment terms and next pickup times. Only for businesses with takes_orders=true.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "hold_order",
   "name": "Hold a takeaway order",
   "description": "Price up an order and hold a pickup time for 10 minutes. Does not place it. items: 'id:qty:note,id:qty' or [{id,qty,note}] using ids from get_menu.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "confirm_order",
   "name": "Place the order",
   "description": "Place a held order. Needs the real name and mobile of the person collecting it. Only call once your user has agreed to the items, total and pickup time.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "get_quote",
   "name": "Price list or written quote",
   "description": "Without items: the business's price list (businesses with gives_quotes=true). With items, name, phone and email: a written quote emailed to your user.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "request_quote",
   "name": "Request a quote",
   "description": "Send a quote request to a business that prices work itself (requests_quotes=true). Fields are listed in get_business rfq_fields. Needs the person's real name and email. Returns a request_ref. Only send once your user has agreed to the details.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "get_booking",
   "name": "Get booking",
   "description": "Look up a booking by business_id, booking_ref and cancel_token.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "cancel_booking",
   "name": "Cancel booking",
   "description": "Cancel a booking. Needs business_id, booking_ref and the cancel_token returned at booking time. If the business took a deposit and it's inside the cancellation window, the first call explains that the deposit will be kept; check with your user, then call again with keep_deposit_ok=true.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "list_jobs",
   "name": "GeoDrill Australia open roles",
   "description": "Open jobs at GeoDrill Australia (drilling contractor, geodrillaustralia.com.au). Optional query (e.g. 'driller', 'FIFO', 'finance'). Each job carries an applyUrl. Read-only: this never submits anything and never says whether a candidate is a good fit. Applications are made only on the GeoDrill apply page, never by email.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "get_job",
   "name": "GeoDrill Australia job details",
   "description": "Full details of one GeoDrill Australia role by job_id (from list_jobs). Read-only.",
   "tags": [
    "booking",
    "small-business",
    "australia"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  }
 ]
}