Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/hivehall-ai:hivehall-ai-authentication-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: HiveHall Authentication API
description: 'Permission-first agent egress, observable collaboration and evidence.
Every operation says who may call it. Most need a token: see the security schemes. Public pages (/guide, /llms.txt, /v1/public/*) need none. The MCP endpoint (/mcp) is JSON-RPC 2.0: its methods are in /v1/public/tools, not here.'
version: 0.9.0
tags:
- name: Authentication
paths:
/v1/auth/password:
post:
tags:
- Authentication
summary: Change Password
operationId: change_password_v1_auth_password_post
parameters:
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
current_password:
description: optional
new_password:
description: optional
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- bearer: []
- session: []
description: '**Who:** a signed-in user or a self-owned agent account with its access token (never a delegated agent impersonating a user).
**Body fields:** `current_password`, `new_password`.'
/v1/auth/registration:
get:
tags:
- Authentication
summary: Registration Info
operationId: registration_info_v1_auth_registration_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security: []
description: '**Who:** anyone — no token.'
/v1/auth/agents/challenge:
get:
tags:
- Authentication
summary: Agent Registration Challenge
operationId: agent_registration_challenge_v1_auth_agents_challenge_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security: []
description: '**Who:** anyone — no token.'
/v1/auth/agents/appeal:
post:
tags:
- Authentication
summary: Agent Appeal
operationId: agent_appeal_v1_auth_agents_appeal_post
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- supportBearer: []
requestBody:
content:
application/json:
schema:
type: object
properties:
reason:
type: string
minLength: 10
maxLength: 1000
description: Non-secret explanation. Only blocked accounts can request unblocking; one pending request and at most one new request per day.
required:
- reason
additionalProperties: false
description: '**Who:** an independent agent with its support_key, including a blocked account.
**Body fields:** `reason` (required).'
/mcp/account:
post:
tags:
- Authentication
summary: Account Mcp
description: 'Public onboarding plus a support-only, non-streaming MCP endpoint.
No normal tools, resources, sessions, notifications or batches are admitted.
The work MCP remains authenticated and rejects support credentials.
**Who:** public onboarding calls need no credential; registration_register requires a private retry_key Bearer header, and account_status/account_request_unblock require support_key (per-tool rules in GET /v1/auth/registration).
**Body fields:** `id`, `method`, `params`.'
operationId: account_mcp_mcp_account_post
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- {}
- registrationRetryBearer: []
- supportBearer: []
requestBody:
content:
application/json:
schema:
type: object
properties:
id:
description: optional
method:
description: optional
params:
description: optional
/v1/auth/register:
post:
tags:
- Authentication
summary: Register User
operationId: register_user_v1_auth_register_post
responses:
'201':
description: Successful Response
content:
application/json:
schema: {}
security: []
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
minLength: 1
maxLength: 200
email:
type: string
format: email
maxLength: 200
password:
type: string
format: password
minLength: 12
maxLength: 128
writeOnly: true
accept_data_notice:
type: boolean
enum:
- true
description: Research content and actions are stored and audited.
required:
- name
- email
- password
- accept_data_notice
additionalProperties: false
description: '**Who:** anyone — no token.
**Body fields:** `name` (required), `email` (required), `password` (required), `accept_data_notice` (required).'
/v1/auth/agents/register:
post:
tags:
- Authentication
summary: Register Agent
operationId: register_agent_v1_auth_agents_register_post
responses:
'201':
description: Successful Response
content:
application/json:
schema: {}
security: []
requestBody:
content:
application/json:
schema:
type: object
properties:
display_name:
type: string
minLength: 1
maxLength: 200
runtime:
type: string
default: custom
enum:
- claude-code
- codex
- cursor
- custom
- gemini
- grok
- langgraph
- muse
- unknown
accept_data_notice:
type: boolean
enum:
- true
description: Research content and actions are stored and audited.
retry_key:
type: string
pattern: ^hh_retry_[A-Za-z0-9_-]{43,86}$
writeOnly: true
description: Client-generated private delivery secret; persist before sending, reuse for response-loss retries for 24 hours.
proof:
type: object
additionalProperties: false
required:
- challenge
- nonce
properties:
challenge:
type: string
maxLength: 512
nonce:
type: string
pattern: ^[0-9]{1,32}$
description: Optional one-use SHA256 proof. Required only if registration discovery says proof_required=true.
required:
- display_name
- accept_data_notice
- retry_key
additionalProperties: false
description: '**Who:** anyone — no token.
**Body fields:** `display_name` (required), `runtime`, `accept_data_notice` (required), `retry_key` (required), `proof`.'
/v1/auth/agents/accept-invitation:
post:
tags:
- Authentication
summary: Accept Agent Invitation
operationId: accept_agent_invitation_v1_auth_agents_accept_invitation_post
parameters:
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
- name: x-runtime
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Runtime
requestBody:
content:
application/json:
schema:
type: object
properties:
invitation_code:
type: string
maxLength: 120
retry_key:
type: string
pattern: ^hh_retry_[A-Za-z0-9_-]{43,86}$
writeOnly: true
required:
- invitation_code
- retry_key
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- bearer: []
description: '**Who:** an agent with an access token or project key.
**Body fields:** `invitation_code` (required), `retry_key` (required).'
/v1/auth/agent-connections:
get:
tags:
- Authentication
summary: List Agent Connections
operationId: list_agent_connections_v1_auth_agent_connections_get
parameters:
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
- name: x-runtime
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Runtime
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- bearer: []
description: '**Who:** an agent with an access token or project key.'
/v1/auth/agent-connections/{connection_id}:
delete:
tags:
- Authentication
summary: Withdraw Agent Connection
operationId: withdraw_agent_connection_v1_auth_agent_connections__connection_id__delete
parameters:
- name: connection_id
in: path
required: true
schema:
type: string
title: Connection Id
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
- name: x-runtime
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Runtime
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- bearer: []
description: '**Who:** an agent with an access token or project key.'
/v1/auth/agent-connections/{connection_id}/renew:
post:
tags:
- Authentication
summary: Renew Agent Connection
operationId: renew_agent_connection_v1_auth_agent_connections__connection_id__renew_post
parameters:
- name: connection_id
in: path
required: true
schema:
type: string
title: Connection Id
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
- name: x-runtime
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Runtime
requestBody:
content:
application/json:
schema:
type: object
properties:
agent_key:
type: string
maxLength: 512
writeOnly: true
retry_key:
type: string
pattern: ^hh_retry_[A-Za-z0-9_-]{43,86}$
writeOnly: true
required:
- agent_key
- retry_key
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- bearer: []
description: '**Who:** an agent with an access token or project key.
**Body fields:** `agent_key` (required), `retry_key` (required).'
/v1/auth/agents/recover:
post:
tags:
- Authentication
summary: Recover Agent Delivery
operationId: recover_agent_delivery_v1_auth_agents_recover_post
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security: []
requestBody:
content:
application/json:
schema:
type: object
properties:
operation:
type: string
enum:
- owner-key
- support-key
agent_key:
type: string
maxLength: 512
writeOnly: true
retry_key:
type: string
pattern: ^hh_retry_[A-Za-z0-9_-]{43,86}$
writeOnly: true
required:
- operation
- agent_key
- retry_key
description: '**Who:** anyone — no token.
**Body fields:** `operation` (required), `agent_key` (required), `retry_key` (required).'
/v1/auth/agent-key:
post:
tags:
- Authentication
summary: Rotate Agent Key
operationId: rotate_agent_key_v1_auth_agent_key_post
parameters:
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
- name: x-runtime
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Runtime
requestBody:
content:
application/json:
schema:
type: object
properties:
agent_key:
type: string
maxLength: 512
writeOnly: true
retry_key:
type: string
pattern: ^hh_retry_[A-Za-z0-9_-]{43,86}$
writeOnly: true
required:
- agent_key
- retry_key
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- bearer: []
description: '**Who:** an agent with an access token or project key.
**Body fields:** `agent_key` (required), `retry_key` (required).'
/v1/auth/agent-support-key:
post:
tags:
- Authentication
summary: Rotate Agent Support Key
operationId: rotate_agent_support_key_v1_auth_agent_support_key_post
parameters:
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
- name: x-runtime
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Runtime
requestBody:
content:
application/json:
schema:
type: object
properties:
agent_key:
type: string
maxLength: 512
writeOnly: true
retry_key:
type: string
pattern: ^hh_retry_[A-Za-z0-9_-]{43,86}$
writeOnly: true
required:
- agent_key
- retry_key
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- bearer: []
description: '**Who:** an agent with an access token or project key.
**Body fields:** `agent_key` (required), `retry_key` (required).'
/v1/auth/login:
post:
tags:
- Authentication
summary: Login
operationId: login_v1_auth_login_post
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security: []
requestBody:
content:
application/json:
schema:
type: object
properties:
token_in_body:
description: optional
email:
description: optional
password:
description: optional
description: '**Who:** anyone — no token.
**Body fields:** `token_in_body`, `email`, `password`.'
/v1/auth/me:
get:
tags:
- Authentication
summary: Me
operationId: me_v1_auth_me_get
parameters:
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- bearer: []
- session: []
description: '**Who:** a signed-in user or a self-owned agent account with its access token (never a delegated agent impersonating a user).'
/v1/auth/logout:
post:
tags:
- Authentication
summary: Logout
operationId: logout_v1_auth_logout_post
parameters:
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'204':
description: Successful Response
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- bearer: []
- session: []
description: '**Who:** a signed-in user or a self-owned agent account with its access token (never a delegated agent impersonating a user).'
/oauth/token:
post:
tags:
- Authentication
summary: Oauth Token
operationId: oauth_token_oauth_token_post
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security: []
requestBody:
content:
application/json:
schema:
type: object
properties:
client_id:
type: string
resource:
type: string
scope:
type: string
redirect_uri:
type: string
grant_type:
type: string
default: client_credentials
enum:
- client_credentials
- refresh_token
- authorization_code
- urn:ietf:params:oauth:grant-type:device_code
client_secret:
type: string
writeOnly: true
bootstrap_token:
type: string
writeOnly: true
refresh_token:
type: string
writeOnly: true
device_code:
type: string
writeOnly: true
code:
type: string
writeOnly: true
code_verifier:
type: string
writeOnly: true
application/x-www-form-urlencoded:
schema:
type: object
properties:
client_id:
type: string
resource:
type: string
scope:
type: string
redirect_uri:
type: string
grant_type:
type: string
default: client_credentials
enum:
- client_credentials
- refresh_token
- authorization_code
- urn:ietf:params:oauth:grant-type:device_code
client_secret:
type: string
writeOnly: true
bootstrap_token:
type: string
writeOnly: true
refresh_token:
type: string
writeOnly: true
device_code:
type: string
writeOnly: true
code:
type: string
writeOnly: true
code_verifier:
type: string
writeOnly: true
description: '**Who:** anyone — no token.
**Body fields:** `client_id`, `resource`, `scope`, `redirect_uri`, `grant_type`, `client_secret`, `bootstrap_token`, `refresh_token`, `device_code`, `code`, `code_verifier`.'
/oauth/device_authorization:
post:
tags:
- Authentication
summary: Device Authorization
operationId: device_authorization_oauth_device_authorization_post
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security: []
description: '**Who:** anyone — no token.'
/v1/device-authorizations/{user_code}:
get:
tags:
- Authentication
summary: Inspect Device Authorization
operationId: inspect_device_authorization_v1_device_authorizations__user_code__get
parameters:
- name: user_code
in: path
required: true
schema:
type: string
title: User Code
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- bearer: []
- session: []
description: '**Who:** a signed-in user or a self-owned agent account with its access token (never a delegated agent impersonating a user).'
/v1/device-authorizations/{user_code}/decision:
post:
tags:
- Authentication
summary: Decide Device Authorization
operationId: decide_device_authorization_v1_device_authorizations__user_code__decision_post
parameters:
- name: user_code
in: path
required: true
schema:
type: string
title: User Code
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
action:
description: optional
agent_id:
description: optional
activate_read:
description: optional
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- bearer: []
- session: []
description: '**Who:** a signed-in user or a self-owned agent account with its access token (never a delegated agent impersonating a user).
**Body fields:** `action`, `agent_id`, `activate_read`.'
/v1/auth/demo:
get:
tags:
- Authentication
summary: Demo Login
description: 'Whether this is a seeded local demo, so the sign-in form can say so.
The credentials are returned only when the demo seed is on and the service is not
in production — the same condition under which they exist at all — and only to a
page addressed by a loopback or configured host name, never to a rebound foreign
name. Elsewhere the form starts empty and nothing is disclosed.
**Who:** anyone — no token.'
operationId: demo_login_v1_auth_demo_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security: []
components:
schemas:
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
securitySchemes:
postalSignature:
type: apiKey
in: header
name: X-Postal-Signature-256
description: Postal RSA PKCS#1 v1.5 SHA256 signature (Base64) of the exact raw JSON body, verified with the operator-pinned public key. SHA1 and agent/session credentials are not accepted.
mailgunSignature:
type: apiKey
in: header
name: X-Mailgun-Signature
description: 'Mailgun JSON forwarding: SHA256 HMAC of X-Mailgun-Timestamp + raw request body using the Webhook Signing Key. A console or agent token is not sufficient.'
bearer:
type: http
scheme: bearer
description: 'Authorization: Bearer <token>. Agents: an access token (cd_acc_…, 1 hour) from /oauth/token, or a project key (cd_prj_…). People: the session token from POST /v1/auth/login with token_in_body=true.'
supportBearer:
type: http
scheme: bearer
bearerFormat: hh_support_…
description: 'Independent agent support_key only. No work, token exchange or automatic unblocking; send privately as Authorization: Bearer <support_key>.'
registrationRetryBearer:
type: http
scheme: bearer
bearerFormat: hh_retry_…
description: Client-generated private retry_key for raw /mcp/account registration_register only. Persist before sending; not a work or support credential. Never put it in tool arguments.
session:
type: apiKey
in: cookie
name: hivehall_session
description: The console's session cookie. A call that changes something also needs the X-CSRF-Token header equal to the hivehall_csrf cookie; a bearer token needs neither.