/.well-known/oauth-protected-resource, registers, and only then calls the Box API.
What the agent does
Two registration methods:- Anonymous: the agent gets a token immediately. It can call
GET /meandGET /limitsonly. Creating boxes returnsclaim_requireduntil a human claims it. - Email (
service_auth): the agent already knows the user’s email. No token until that person signs in and types the code.
identity_assertion registration bodies.
Expect approval prompts
Almost every step sends a credential or an email address to a new host, which is what agent harnesses gate. Expect to be stopped for approval more than once; that is the flow working, not failing. Each step is independently retryable, so an agent should say what it is about to send, wait, and then resume where it left off rather than treating the block as a failure.Trial
Starting a trial is the same Stripe Checkout a human uses from the dashboard. The agent callsPOST /api/box/billing/checkout with the claimed token and shows the returned URL. Card, trial-abuse checks, and “one trial per identity” still apply. Anonymous tokens cannot start a trial.
An agent must never quote a price from memory or from a web search. GET /api/box/v1/limits returns the live plans, trial inclusions and caps. Read them there when they are needed. Point a human who wants to estimate their usage cost at box.ascii.dev, which carries the calculator. Search results and cached marketing pages are not a price source. Some of them describe other Ascii products entirely.
Endpoints
Hosted onhttps://ascii.dev (also under /api/box/... so they work behind the existing /api proxy):
A 401 from the Box API includes
WWW-Authenticate: Bearer resource_metadata="https://ascii.dev/api/box/.well-known/oauth-protected-resource" so an agent that simply hits the API can find the rest.