Skip to main content
HASP publishes machine-readable discovery documents so clients can configure themselves without hard-coding endpoint URLs. All three documents below are public — no authentication is required — and are cached for five minutes (Cache-Control: public, max-age=300).

Authorization server metadata (RFC 8414)

The RFC 8414 discovery document. Use it to locate every OAuth endpoint and the capabilities HASP supports, rather than constructing URLs yourself.
authorization_details_types_supported carries every RAR grant type the server accepts. It is elided above rather than reproduced, because a copy in prose goes stale the moment a type is added — read it from the live document, or see the generated table under authorization_details JSON Schema below. The device_authorization_endpoint and the urn:ietf:params:oauth:grant-type:device_code grant support the headless/SSH login flow — see Device authorization.
PKCE is mandatory — code_challenge_methods_supported is ["S256"] only, and response_types_supported is ["code"]. There is no implicit grant. See PKCE.

MCP server metadata

Declares HASP as an MCP-authorized resource server supporting OAuth 2.1 with Rich Authorization Requests (RAR). MCP clients read this to set up the authorization handshake.
This document declares the authorization model only. HASP does not currently serve an MCP transport endpoint, so there is no MCP server for a client to connect to yet. Agents integrate today through the Agents API and the inference endpoints.
The mcp_version field tracks the MCP authorization spec version HASP currently implements. Tokens are opaque (token_format: "opaque") — validate them with token introspection rather than parsing them.

authorization_details JSON Schema

Returns the canonical JSON Schema (draft 2020-12) for the RAR authorization_details array — the same schema the in-console scope-grant builder validates against. Fetch it to validate authorization_details client-side before requesting a credential. The response supports conditional requests: it returns an ETag and honors If-None-Match, replying 304 Not Modified when your cached copy is current.
The schema’s top level is an array of one-or-more grant objects, each matching one of the supported authorization_details types: See Scope grants for each type’s required fields, and the consent screen for how a requested grant is presented to the approving user.

Token revocation (RFC 7009)

Revoke an agent credential by presenting it. Authenticate by sending the token itself as a bearer token — the caller proves possession.
Per RFC 7009 §2.2 the endpoint always returns 200 with an empty body {}, even for an unknown or already-revoked token. Revocation is immediate: the credential cannot be used on any surface after the call returns.