Draft v0.1 — open for public comment. Endpoint examples are illustrative. The verification program and index are in preview.
Open specification · Draft v0.1

The Agent Service Schema

The open, neutral standard for service endpoints that AI agents can discover, evaluate, and transact with.

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.

QuestionWhat 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.

Read the design principles.

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.

01 / Define

agentserviceschema.org

The open specification: records, actions, taxonomy, and conformance.

02 / Verify

verifiedserviceschema.org

The planned verification program. Inspect illustrative reports and run local preflight.

03 / Discover

agentendpoints.org

The endpoint index preview. Explore sample records; live inventory and API access are not available yet.

Who builds on it

AudienceStart here
Agent-framework buildersThe action surface
Endpoint developersThe Service Record
Index operatorsRanking guidance
Vertical expertsPropose an extension

Publish a record with fewer handoffs

  1. Describe your endpoint. Start with a complete L1 template and replace the example values.
  2. Check it locally. Browser preflight catches schema errors and missing capability actions.
  3. Publish it. Serve JSON at /.well-known/agent-service.json on your domain.
  4. 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.