Agent claims
An agent with no account claims a .one resource; its human approves once; it collects an API key once (#5342).
Read, approve or decline an agent's claim (the approve page)
view is open to anyone with the link; with organization_id and a company admin's JWT it
adds the quote and price. approve (company admin of organization_id) is single-use:
included in the plan → the product's order runs now (200, phase approved); billed → 402
payment_required with details.checkout_url (Stripe Checkout) and nothing ordered; an
unconfigured price → 409 price_unavailable; an uncertain order → 503 order_uncertain, the
claim reopened. deny needs any signed-in user.
Read, approve or decline an agent's claim (the approve page) › Request Body
approve_tokenThe token in the approve URL (acpa_…).
actionorganization_idview (for the quote) and approve: the organization the resource is for; the caller must be its company admin.
Read, approve or decline an agent's claim (the approve page) › Responses
The claim as it now stands.
Start a claim from a URL, poll a claim, or read a site's llms.txt
Anonymous (#5342). Exactly one of:
?start=<product>&agent_name=…[&display_name&time_zone] starts a claim (the same as POST, for
assistants whose browsing can only fetch a URL; 201 ClaimStarted), ?poll=<poll_token>
answers where it stands (ClaimPoll; the API key on the first ready poll only; 429
slow_down when polled too fast), ?site=<product> the site's llms.txt (text/markdown).
query Parameters
startagent_namedisplay_nametime_zonepollsiteStart a claim from a URL, poll a claim, or read a site's llms.txt › Responses
The claim's state, or the llms.txt.
claim_idproductstatusintervalexpires_atcodefailed: the order's refusal code.
resourceready: what was ordered (calendar: calendar_id, calendar_href, external_agent_id, state).
ready: api_key (an hpx_ key, scope acp) on the FIRST ready poll only; null afterwards.
usageready: the endpoints and the owner parameter to send with the key.
messageStart a claim on a .one resource (calendar first)
Anonymous, rate-limited per caller address (10 an hour). Records a pending claim; nothing is ordered or charged.
Start a claim on a .one resource (calendar first) › Request Body
productagent_nameWho is asking, as the approve page shows it (e.g. "Claude").
display_nameThe calendar's name; the agent name when absent.
time_zoneAn IANA zone; UTC when absent.
Start a claim on a .one resource (calendar first) › Responses
Started.
claim_idproductstatusapprove_urlFor the human: https://<site>/approve/<token> (dev: dev.helpfulai.app).
poll_urlpoll_tokenThe agent's secret (acpp_…); shown once.
expires_atexpires_inSeconds the human has to approve (1800).
intervalSeconds between polls (5).
next_stepThe ACP remote MCP server (Streamable HTTP), calendar tools first
One MCP endpoint (#5342 slice 5b), stateless: POST a JSON-RPC message, get application/json
back (no SSE, no sessions; GET/DELETE are 405). Tools: request_calendar, calendar_status
(→ acp-claim), get_available_slots (→ agent-calendar-availability), list_events, create_event
(→ agent-calendar-events), create_booking, reschedule_booking, cancel_booking
(→ agent-calendar-bookings). The caller's hpx_ bearer is forwarded to those functions.
401 carries WWW-Authenticate: Bearer; an Origin that is not allowed is 403; an unsupported
MCP-Protocol-Version is 400. OAuth 2.1 for the Claude.ai / ChatGPT connectors is pending.
The ACP remote MCP server (Streamable HTTP), calendar tools first › Request Body
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = object · requires: jsonrpc, method | |
| type = array |
jsonrpcmethodidparamsThe ACP remote MCP server (Streamable HTTP), calendar tools first › Responses
The JSON-RPC response(s).