cp12_gas_safety in the property's postcode district, fetch the chosen provider's slots, and POST a booking request with the human principal's confirmed details. Over MCP it is one tool call per step, or a single uklsp_create_booking if the principal has already chosen from cached discovery results.1 · Discover
GET /v0/discover?service=cp12_gas_safety&postcode_district=LS6
Returns ranked providers with pricing, lead time, credentials and certification level. The reference ranking prefers higher certification, fixed prices, and shorter lead times — operators may apply their own policy but MUST NOT hide the demo flag.
2 · Slots
GET /v0/providers/prv_…/slots?service=cp12_gas_safety
Windows come back as am/pm/all_day — present them to your principal as a trades visit really works ("Tuesday morning, engineer arrives between 9 and 1"), not as false-precision appointment times.
3 · Book
POST /v0/bookings
{ "booking_request": {
"request_id": "req_…", "provider_id": "prv_…",
"service_code": "cp12_gas_safety", "slot_id": "slt_…",
"property": { "postcode": "LS6 2AB", "address_line1": "…" },
"customer": { "name": "…", "phone_e164": "+44…", "role": "landlord" },
"agent": { "agent_name": "…", "on_behalf_of_human": true },
"price_accepted": { "amount": 68, "currency": "GBP", "vat_treatment": "ex_vat" } } }
A 201 returns the confirmation: binding price, confirmed window, cancellation policy, and the deliverable ("certificate PDF within 24 hours of the visit"). Retrying the same request_id can never double-book.
Try it against the demo inventory
The reference deployment at https://api.uklsp.org serves three fictional providers marked demo:true across Leeds, Manchester and Birmingham districts. Quote them freely; bookings return 403 DEMO_PROVIDER by design. Start at openapi.yaml or /.well-known/uklsp.json.
SLOT_TAKEN go back to your principal — never silently switch windows.