Skip to content

Complete verified ownership and exchange the temporary signup key

POST
/v1/agent/verify

Requires the verification-only signup:verify key and valid incoming-email, verified console, or legacy OTP proof. Atomically revokes the temporary key and returns a new scoped mailbox key, activates the free account and its free.extrovertmail.com inbox, and returns copy-ready MCP read_messages/get_message/wait_for_email calls on success.

object
otp

Only for a legacy OTP signup. Omit after incoming-email or console approval.

string

Verified; full-permission key issued.

OTP verification activates the free account and returns the replacement full-permission key plus the ready free.extrovertmail.com inbox; the verification-only bootstrap key was revoked atomically. The inbox quickstart makes the response a self-contained handoff after a process restart or context compaction.

object
onboarding
object
starter

Recover the single system-prepared, agent-owned practice review. A preparing status means the durable worker has not finished; do not submit another hello. Feedback and revisions belong to this review. The coaching example is optional and is not authority to save a rule until the human submits it as feedback.

object
review_id
required
string
review_path
required

Account-aware console entry path preserving this review.

string
status
required

Pending_activation or preparing until a review exists; otherwise its current review state.

string
coaching_prompt
required

Optional human feedback to copy into the review discussion.

string
human_email
string format: email
display_name
string
plan
string
console_url
string format: uri
guidance
string
agent_id
required
string
agent_key
required

New full-permission key

string
key_prefix
required
string
scopes
required
Array<string>
address
required

The signup inbox, ready for immediate use.

string format: email
verified
required
boolean
message
required
string
mailbox_quickstart
required

MCP-first, read-only next calls for the verified signup inbox. Use these instead of inventing REST routes or parsing raw HTTP response files.

object
inbox
required
string format: email
list_mail
required

A copy-ready MCP tool call for ordinary mailbox use.

object
tool
required
string
Allowed values: read_messages get_message wait_for_email
arguments
required
object
key
additional properties
any
read_message
required

A copy-ready MCP tool call for ordinary mailbox use.

object
tool
required
string
Allowed values: read_messages get_message wait_for_email
arguments
required
object
key
additional properties
any
wait_for_mail
required

A copy-ready MCP tool call for ordinary mailbox use.

object
tool
required
string
Allowed values: read_messages get_message wait_for_email
arguments
required
object
key
additional properties
any
org_claim_token

One-time, email-bound owner claim seed for the signup org. Present only on a fresh signup. In the console, sign in with the verified email and call GET /v1/admin/me to find the matching pending_signup_claims entry. Then POST /v1/admin/signup-claims/{claim_id}/accept to bind that identity to the signup org as owner.

string

Invalid request.

The canonical error envelope. error is a stable machine code.

object
error
required

Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).

string
Example
forbidden
message

Human-readable detail (never leaks internals).

string
Example
missing required scope
reason

Machine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.

string
used

Consumed plus reserved units.

integer format: int64
delta

Requested additional units.

integer format: int64
limit
integer format: int64
remaining
integer format: int64
consumed
integer format: int64
reserved
integer format: int64
next_reset_at

Next UTC usage-period boundary; pending reservations survive this boundary.

string format: date-time
upgrade_required
boolean

Missing or invalid credential.

The canonical error envelope. error is a stable machine code.

object
error
required

Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).

string
Example
forbidden
message

Human-readable detail (never leaks internals).

string
Example
missing required scope
reason

Machine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.

string
used

Consumed plus reserved units.

integer format: int64
delta

Requested additional units.

integer format: int64
limit
integer format: int64
remaining
integer format: int64
consumed
integer format: int64
reserved
integer format: int64
next_reset_at

Next UTC usage-period boundary; pending reservations survive this boundary.

string format: date-time
upgrade_required
boolean

Free signup verification is temporarily paused (signup_disabled).

The canonical error envelope. error is a stable machine code.

object
error
required

Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).

string
Example
forbidden
message

Human-readable detail (never leaks internals).

string
Example
missing required scope
reason

Machine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.

string
used

Consumed plus reserved units.

integer format: int64
delta

Requested additional units.

integer format: int64
limit
integer format: int64
remaining
integer format: int64
consumed
integer format: int64
reserved
integer format: int64
next_reset_at

Next UTC usage-period boundary; pending reservations survive this boundary.

string format: date-time
upgrade_required
boolean

Signup availability could not be determined (signup_gate_unavailable).

The canonical error envelope. error is a stable machine code.

object
error
required

Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).

string
Example
forbidden
message

Human-readable detail (never leaks internals).

string
Example
missing required scope
reason

Machine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.

string
used

Consumed plus reserved units.

integer format: int64
delta

Requested additional units.

integer format: int64
limit
integer format: int64
remaining
integer format: int64
consumed
integer format: int64
reserved
integer format: int64
next_reset_at

Next UTC usage-period boundary; pending reservations survive this boundary.

string format: date-time
upgrade_required
boolean