Created and maintained by Hottub, Inc.. Specification text: CC BY 4.0. Reference JSON Schemas: MIT.
AI agents increasingly book services, verify professionals, and schedule real-world work. Every service endpoint describes itself differently. The Agent Service Schema proposes one machine-readable Service Record: what a service can do, where it operates, how to invoke it, and how its claims were checked.
Agents can browse the web. They need evidence to act.
An agent can find a business website. It still needs a reliable way to request a quote, check availability, book, retrieve status, and cancel. It also needs to distinguish an operator's claims from independent checks.
Discovery is bespoke.
Agent builders repeat integration work for each service and vertical.
Claims need provenance.
A badge alone does not show what was checked, by whom, or when.
Freshness must be visible.
Agents need to tell an expired credential check from current evidence.
One record. Four answers.
| Question | What the record describes |
|---|---|
| What can it do? | Capabilities and actions: quote, availability, booking, status, cancel, plus extension actions. |
| Where does it operate? | Coverage types, area identifiers, and exclusions. |
| How do I invoke it? | URLs or URI templates, methods, authentication, and action schema references. |
| How was it checked? | Verification level, individual checks, sources, timestamps, and expiry. |
How it's built
One core, many extensions. Transactions, not listings. Verification as first-class data. Freshness always disclosed. Map to schema.org where appropriate. Agents learn the common contract once.
Three properties, one system
The open specification, verification program, and index have distinct roles. All three are operated or maintained by Hottub, Inc.; they are not independently owned organizations. Other companies may implement the specification or operate competing verifiers and indexes.
agentserviceschema.org
The open specification: records, actions, taxonomy, and conformance.
verifiedserviceschema.org
The planned verification program. Inspect illustrative reports and run local preflight.
agentendpoints.org
The endpoint index preview. Explore sample records; live inventory and API access are not available yet.
Who builds on it
| Audience | Start here |
|---|---|
| Agent-framework builders | The action surface |
| Endpoint developers | The Service Record |
| Index operators | Ranking guidance |
| Vertical experts | Propose an extension |
Publish a record with fewer handoffs
- Describe your endpoint. Start with a complete L1 template and replace the example values.
- Check it locally. Browser preflight catches schema errors and missing capability actions.
- Publish it. Serve JSON at
/.well-known/agent-service.jsonon your domain. - Prepare for verification. Live probes and index admission are planned. The preview does not verify or list real services automatically.
View the complete L1 starter — illustrative example
{
"actions": {
"availability": {
"auth": "none",
"idempotent": true,
"method": "POST",
"timeout_ms_recommended": 3000,
"url": "https://example.com/api/availability"
},
"booking": {
"auth": "api_key",
"idempotent": false,
"method": "POST",
"timeout_ms_recommended": 8000,
"url": "https://example.com/api/booking"
},
"cancel": {
"auth": "api_key",
"idempotent": true,
"method": "POST",
"timeout_ms_recommended": 5000,
"url": "https://example.com/api/cancel"
},
"quote": {
"auth": "none",
"idempotent": true,
"method": "POST",
"timeout_ms_recommended": 5000,
"url": "https://example.com/api/quote"
},
"status": {
"auth": "api_key",
"idempotent": true,
"method": "GET",
"timeout_ms_recommended": 3000,
"url": "https://example.com/api/status"
}
},
"capabilities": [
"home.exterior.deck_staining"
],
"coverage": {
"areas": [
"spokane-wa"
],
"exclusions": [],
"type": "metro"
},
"description": "Illustrative deck staining service. Replace these values with your own.",
"endpoint_id": "com.example",
"name": "Example Service",
"operator": {
"contact_email": "ops@example.com",
"legal_name": "Example LLC",
"website": "https://example.com"
},
"pricing": {
"currency": "USD",
"model": "quote_based",
"notes": "Range covers typical residential decks; final price confirmed after photo review.",
"price_range": {
"max": 2500,
"min": 400
}
},
"record_updated_at": "2026-09-16T07:00:00Z",
"schema_org_type": "HomeAndConstructionBusiness",
"schema_version": "0.1",
"verification": {
"checks": [],
"last_verified_at": null,
"level": 1,
"status": "self_asserted"
}
}
v0.1 is open for public comment
Read it, implement against it, and identify ambiguous rules before it hardens. How to contribute.
Looking for taxonomy nodes? Open the canonical taxonomy.