Public API · no authentication

Make AI agents book your business

AgentReady's public API lets any AI assistant check live availability and complete confirmed bookings with Article 50 disclosure logging.

Base URL · https://agentready.ie/functions/

Endpoint reference

Four POST endpoints, no authentication, JSON in and JSON out. A business is always addressed by its slug, so one request can never reach another business's data.

POST/functions/getServiceshttps://agentready.ie

getServices

Everything an agent needs before it can book: the business profile, its bookable services with prices and durations, the Article 50 disclosure text, and a map of the other endpoints.

Request

POST https://agentready.ie/functions/getServices
Content-Type: application/json

{ "slug": "niamhs-hair-studio" }

Response

{
  "business": {
    "name": "Niamh's Hair Studio",
    "slug": "niamhs-hair-studio",
    "category": "salon",
    "description": "Colour, cuts and blow-dries in Galway city.",
    "address": "12 Shop Street",
    "city": "Galway",
    "county": "Galway",
    "phone": "+353 91 000 000",
    "email": "hello@niamhs.example"
  },
  "services": [
    {
      "id": "66f1c0a2e9b1a4c3d5e6f7a8",
      "name": "Cut and blow-dry",
      "description": "Consultation, cut and finish.",
      "duration_minutes": 45,
      "price": 45,
      "category": "hair"
    }
  ],
  "disclosure": {
    "required": true,
    "ai_act_article": 50,
    "text": "This business is bookable by AI shopping agents. Every agent interaction is logged, and the agent is disclosed as an AI under EU AI Act Article 50 transparency obligations."
  },
  "endpoints": {
    "services": "https://agentready.ie/functions/getServices",
    "availability": "https://agentready.ie/functions/getAvailability",
    "createBooking": "https://agentready.ie/functions/createBooking",
    "discovery": "https://agentready.ie/functions/getDiscovery"
  },
  "storefront_url": "https://agentready.ie/s/niamhs-hair-studio"
}

Errors

  • 400{"error":"slug is required"}
  • 404{"error":"business not found"} · {"error":"business is not published"}
POST/functions/getAvailabilityhttps://agentready.ie

getAvailability

Live, bookable slots for one service on a Europe/Dublin calendar date. Every slot carries a true UTC instant plus its Dublin local equivalent. Rules, existing bookings and the business's minimum notice window are already applied.

Request

POST https://agentready.ie/functions/getAvailability
Content-Type: application/json

{
  "slug": "niamhs-hair-studio",
  "service_id": "66f1c0a2e9b1a4c3d5e6f7a8",
  "date": "2026-11-04"
}

Response

{
  "business": { "name": "Niamh's Hair Studio", "slug": "niamhs-hair-studio", "category": "salon" },
  "service": {
    "id": "66f1c0a2e9b1a4c3d5e6f7a8",
    "name": "Cut and blow-dry",
    "duration_minutes": 45,
    "price": 45
  },
  "timezone": "Europe/Dublin",
  "days": [
    {
      "date": "2026-11-04",
      "slots": [
        {
          "start": "2026-11-04T09:30:00.000Z",
          "end": "2026-11-04T10:15:00.000Z",
          "local_start": "2026-11-04T09:30:00+00:00",
          "local_end": "2026-11-04T10:15:00+00:00"
        }
      ]
    }
  ]
}

Pass "from" and "to" (YYYY-MM-DD) instead of "date" to check a range of up to 60 days.

Errors

  • 400{"error":"slug is required"} · {"error":"date, or from and to, is required"}
  • 404{"error":"business not found"} · {"error":"service not found"}
POST/functions/createBookinghttps://agentready.ie

createBooking

Validates the requested slot against the live slot list, then confirms the booking and emails the customer. A slot that is taken, blocked or inside the notice window is rejected rather than double-booked.

Request

POST https://agentready.ie/functions/createBooking
Content-Type: application/json

{
  "slug": "niamhs-hair-studio",
  "service_id": "66f1c0a2e9b1a4c3d5e6f7a8",
  "start_time": "2026-11-04T09:30:00.000Z",
  "customer_name": "Aoife Byrne",
  "customer_email": "aoife@example.com",
  "customer_phone": "+353 87 000 0000",
  "agent_name": "shopping-assistant",
  "agent_version": "2.1.0",
  "disclosure_acknowledged": true
}

Response

{
  "booking_id": "66f3a7b1c2d3e4f5a6b7c8d9",
  "status": "confirmed",
  "hold_expires_at": null,
  "business": "Niamh's Hair Studio",
  "service": "Cut and blow-dry",
  "start": "2026-11-04T09:30:00.000Z",
  "end": "2026-11-04T10:15:00.000Z",
  "local_start": "2026-11-04T09:30:00+00:00",
  "local_end": "2026-11-04T10:15:00+00:00",
  "timezone": "Europe/Dublin"
}

201 Created on success. Only use a "start" value returned by getAvailability. customer_phone and agent_version are optional; agent_name defaults to "direct".

Errors

  • 400{"error":"disclosure_acknowledged must be true: the agent must acknowledge the Article 50 AI Act disclosure before creating a booking"}
  • 400{"error":"customer_name is required"}
  • 400{"error":"customer_email is required and must be a valid email address"}
  • 400{"error":"service_id and start_time are required"} · {"error":"invalid start_time"}
  • 409{"error":"requested slot is not available"}
POST/functions/getDiscoveryhttps://agentready.ie

getDiscovery

The discovery document an agent fetches first: a versioned record of the business, the API endpoint map, its capabilities, its booking rules and the Article 50 disclosure.

Request

POST https://agentready.ie/functions/getDiscovery
Content-Type: application/json

{ "slug": "niamhs-hair-studio" }

Response

{
  "schema_version": "1.0",
  "type": "agentready.service-business",
  "business": { "name": "Niamh's Hair Studio", "slug": "niamhs-hair-studio", "category": "salon" },
  "api": {
    "services": "https://agentready.ie/functions/getServices",
    "availability": "https://agentready.ie/functions/getAvailability",
    "createBooking": "https://agentready.ie/functions/createBooking",
    "discovery": "https://agentready.ie/functions/getDiscovery"
  },
  "capabilities": ["list_services", "check_availability", "create_booking"],
  "booking_rules": {
    "min_notice_hours": 2,
    "max_advance_days": 30,
    "cancellation_policy": "Cancel or reschedule free of charge up to 24 hours before your appointment."
  },
  "disclosure": { "required": true, "ai_act_article": 50, "text": "..." },
  "storefront_url": "https://agentready.ie/s/niamhs-hair-studio",
  "updated_at": "2026-11-02T10:14:03.511Z"
}

Takes a business slug. Storefront URLs follow /s/<slug>, and the same slug is used by every endpoint.

Errors

  • 400{"error":"slug is required"}
  • 404{"error":"business not found"} · {"error":"business is not published"}

How an AI agent books a haircut

Three calls, no human in the loop: read the catalogue, check live availability, then confirm the booking against a slot the API itself returned.

  1. 1

    Read the business

    The agent fetches the service catalogue and the disclosure text it must show the customer.

    POST /functions/getServices
    
    { "slug": "niamhs-hair-studio" }
    
    → services[0].id = "66f1c0a2e9b1a4c3d5e6f7a8"
    → disclosure.text = "This business is bookable by AI shopping agents…"
  2. 2

    Find a slot

    Availability is checked for one service and one Dublin calendar date, or a range of up to 60 days.

    POST /functions/getAvailability
    
    {
      "slug": "niamhs-hair-studio",
      "service_id": "66f1c0a2e9b1a4c3d5e6f7a8",
      "date": "2026-11-04"
    }
    
    → days[0].slots[0].start = "2026-11-04T09:30:00.000Z"
  3. 3

    Book it

    The chosen start value is sent back with the customer details and the disclosure acknowledgement.

    POST /functions/createBooking
    
    {
      "slug": "niamhs-hair-studio",
      "service_id": "66f1c0a2e9b1a4c3d5e6f7a8",
      "start_time": "2026-11-04T09:30:00.000Z",
      "customer_name": "Aoife Byrne",
      "customer_email": "aoife@example.com",
      "agent_name": "shopping-assistant",
      "disclosure_acknowledged": true
    }
    
    → 201 { "status": "confirmed", "booking_id": "66f3a7b1…" }

Article 50 of the EU AI Act

Every createBooking call MUST pass disclosure_acknowledged: true after presenting the business's AI disclosure text to the user. Rejected attempts are logged with the disclosed value. See the audit trail in your dashboard.

Agent etiquette

Pass agent_name and agent_version so businesses can see who is booking. The name is recorded on the booking and on every interaction in their dashboard.

Get the API on GitHub

The full contract as code: an OpenAPI 3.1 spec, a working reference agent and an MCP server, MIT licensed.

github.com/pronet630/agentready

Machine-readable summary

AI agents and crawlers can read the whole map, including every JSON contract, as plain text.

https://agentready.ie/llms.txtCheck if an agent can find your business