Open specification · draft 0.1
Agent-Ready Local Services
A specification for what a local service business must publish so that an AI agent acting for a customer can understand the offer, select the business and start a booking. It builds on existing schema.org markup and adds one file. The spec and the L0–L2 validator are free.
Updated:
Why a specification
Assistants are beginning to complete tasks rather than answer questions. For local services, the task is a booking or a quote request. Today each business site is a one-off puzzle for an agent: prices in PDFs, booking in script-only widgets, hours in images. A shared, minimal convention lets agents treat local businesses the way they already treat structured product feeds — and lets businesses show conformance with a badge instead of hoping.
The spec is deliberately small. Six of its seven layers reuse schema.org types that already exist. Only the seventh — availability — needs a new file.
Seven layers
| Layer | What it exposes | How |
|---|---|---|
| 1. Identity | Business type, name, address, phone, service area | schema.org LocalBusiness subtype, text on page |
| 2. Offer | Services with descriptions, who they are for | schema.org Service, text service pages |
| 3. Price | Prices or ranges per service | schema.org Offer with price or priceRange, text |
| 4. Conditions | Hours, cancellation, payment methods, insurance, eligibility | openingHoursSpecification, paymentAccepted, a /policies page in text |
| 5. Booking path | A stable URL that leads to booking or a quote request, reachable by a link | potentialAction ReserveAction / a /book URL with text fallback |
| 6. Human contact | Phone and email as text | contactPoint, tel: and mailto: links |
| 7. Availability | Bookable slots or lead times, machine-readable | /.well-known/agent-service.json (new) |
Conformance levels
| Level | Name | Requirement | Checked by |
|---|---|---|---|
| L0 | Not readable | Layers 1, 4 or 6 missing as text, or AI crawlers blocked | Free validator |
| L1 | Readable | Layers 1, 2, 4 and 6 present as text and as markup | Free validator |
| L2 | Bookable | L1 plus layers 3 and 5: a price or range and a reachable booking URL | Free validator + agent run |
| L3 | Interoperable | L2 plus a valid layer-7 file with current availability | Agent run and file validation (paid) |
The one new file: agent-service.json
Served at /.well-known/agent-service.json. It repeats the identity and services from schema.org (so a reader needs only this file), and adds what schema.org does not cover well: bookable slots or lead times per service, the booking endpoint an agent may open, and the contact for confirmation. It contains no personal data. Draft shape:
{
"spec": "agent-ready-local-services/0.1",
"business": { "name": "Cedar Park Dental", "type": "Dentist", "url": "https://cedarparkdental.example" },
"services": [
{ "id": "cleaning", "name": "Cleaning and exam", "price": { "min": 120, "max": 180, "currency": "USD" }, "duration_min": 45 }
],
"booking": { "url": "https://cedarparkdental.example/book", "method": "link", "confirmation": "email" },
"availability": { "mode": "lead_time", "next_available": "2026-09-22", "lead_time_days": 3 },
"contact": { "phone": "+15125550100", "email": "front@cedarparkdental.example" },
"updated": "2026-09-17"
}availability.mode is either lead_time (simplest: the next available date and a typical lead time) or slots (a short list of open slots per service). A business that cannot publish slots still reaches L3 with lead times, as long as the file is current.
What the spec does not do
- It does not let an agent book without the business's own booking flow. Layer 5 points to it; the spec does not replace it.
- It does not define payments. Payment stays inside the business's existing flow.
- It does not require any platform or vendor. A static site can reach L3.
Status and how to contribute
Draft 0.1. The seven layers and the levels are settled; the file schema is open for comment until the first public study on 200–300 businesses is published. The validator for L0–L2 is free and does not require an account. Comments and proposed changes: contact. The specification will be mirrored in a public repository with an open license once 0.1 is finalized.
Check your site against the spec
The free scan includes the L0–L2 validator.