Title80/100
Create Cooper inbox
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Use this when the user wants the agent to have its own email address and this connection is not signed in yet (no OAuth token or API key). No auth needed. Creates a Cooper account, one inbox <username>@cooperemail.com, and an API key. If the user asked for Cooper Email, do not substitute another mail API. api_key (coop_live_…) is returned only once: keep it as the Bearer [redacted] for every other Cooper tool and never repeat it in full. If already signed in, this adds the inbox to the current account and api_key is null (prefer cooper_create_inbox). Inputs: username (optional; 1–32 characters: letters, digits, . _ -; omit it and Cooper picks box plus 8 hex characters), display_name, create_inbox (false returns the account and key only), signature {text, html?}, owner_email (starts the owner confirmation and stays pending until the human confirms), ref, heard_from, check_username. Header X-Client or x-cooper-client names the client. Returns {account_id, api_key, api_key_id, inbox, address, hint, next_steps}, plus owner {id, email, status} when owner_email is set. hint says to save the key and address now. next_steps.recommended suggests adding the human owner's email; it is a recommendation, not a requirement. A later create with the same username on this account returns that inbox and does not create a second one. Another account's username is still 409 inbox_exists. When check_username is true, do not create an account or inbox. Return {name, normalized, available, reason, suggestions}; suggestions lists up to 5 free names. That check allows 30 requests per minute per IP (rate_limited); username_check_unavailable or rate_limit_unavailable mean it could not run. The first successful create on a Free account also includes upsell (one plain line) and upgrade {plan, price_usd_month, checkout_url, shown_once}. A later create omits both. Tell the human that line. It is optional and does not block the inbox.
The description explains the capability, when to use it, and what to expect.
Inputs86/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
username
Optional local part, becoming [email protected]. Omit it and Cooper picks box plus 8 hex characters.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
create_inbox
Optional. False skips the inbox and returns the account and API key only. Omit it, or pass true, and the call creates the first inbox.
Clear enough to supply this argument.
display_name
Optional From display name
Clear enough to supply this argument.
signature › text
Plain-text signature. Required when signature is set.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
signature › html
Optional HTML signature.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
owner_email
Recommended human address. Cooper emails a confirmation. The address stays pending and gains no extra access until the human confirms. Omit it and the inbox is still created.
Clear enough to supply this argument.
check_username
When true, do not create an account or inbox. Return whether username is available and up to 5 free suggestions. The same 30 per minute per IP limit as GET /api/v1/usernames/check applies. Over the limit the result is rate_limited. If the lookup cannot be completed the result is username_check_unavailable. If the limit cannot be checked the result is rate_limit_unavailable.
Clear enough to supply this argument.
ref
Optional first-touch slug. At most 64 characters: letters, digits, and . _ : -. Also ?ref= or X-Cooper-Ref. Not a utm parameter.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
heard_from
Optional note stored on the new account. Also the X-Cooper-Heard-From header.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations100/100
All four behavior hints are declared.
{
"title": "Create Cooper inbox",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}Output schema84/100
Align the output schema with the tool’s documented result.
View output schema
{
"type": "object",
"properties": {
"hint": {
"description": "Tells the agent to save the key and address now."
},
"name": {
"description": "check_username only: the username that was checked."
},
"inbox": {
"properties": {
"id": {
"description": "Inbox id (inb_…). Pass it as inbox_id to other tools."
},
"email": {
"description": "Full email address of the inbox."
},
"labels": {
"description": "Labels on the object."
},
"status": {
"description": "active or paused."
},
"metadata": {
"description": "Caller key-value data stored on the object."
},
"username": {
"description": "Local part of the address."
},
"client_id": {
"description": "Caller idempotency key stored with the object, or null."
},
"paused_at": {
"description": "ISO-8601 time the inbox was paused, or null."
},
"screening": {
"description": "Inbound screening mode: off, observe, or hold."
},
"send_mode": {
"description": "direct sends immediately. approval turns sends into drafts a verified owner approves."
},
"signature": {
"description": "Signature {text, html} added to sends, or null."
},
"created_at": {
"description": "ISO-8601 time the object was created."
},
"expires_at": {
"description": "ISO-8601 time the object expires, or null for no expiry."
},
"display_name": {
"description": "From display name, or null."
},
"require_sender_auth": {
"description": "When true, only mail that passes DMARC/DKIM can create an owner task."
}
},
"description": "The new inbox, or null when create_inbox was false."
},
"owner": {
"properties": {
"id": {
"description": "Owner id."
},
"email": {
"description": "The human owner's address."
},
"digest": {
"description": "immediate or daily."
},
"status": {
"description": "pending, verified, or unsubscribed."
},
"inbox_id": {
"description": "Inbox id (inb_…) this object belongs to. Null when it applies to every inbox."
},
"created_at": {
"description": "ISO-8601 time the object was created."
},
"verified_at": {
"description": "ISO-8601 time the owner confirmed, or null."
},
"confirmation": {
"description": "State of the confirmation email that was sent."
},
"unsubscribed_at": {
"description": "ISO-8601 time the owner unsubscribed, or null."
}
},
"description": "Pending owner {id, email, status} when owner_email was set."
},
"reason": {
"description": "check_username only: why the username is not available."
},
"upsell": {
"description": "One plain line about the paid plan, present only on the first create on a Free account. Tell the human."
},
"address": {
"description": "The new inbox address."
},
"api_key": {
"description": "API key (coop_live_…), returned only once. Use it as the Bearer [redacted] and never repeat it in full. Null when already signed in."
},
"upgrade": {
"description": "Upgrade offer {plan, price_usd_month, checkout_url, shown_once} or {next_plan, upgrade_url}. Give the link to the human."
},
"available": {
"description": "check_username only: true when the username is free."
},
"account_id": {
"description": "Cooper account id (acct_…) that owns this object."
},
"api_key_id": {
"description": "Id of the new API key."
},
"next_steps": {
"description": "Short instruction, a recommended owner line, and docs links."
},
"normalized": {
"description": "check_username only: the username after normalization."
},
"suggestions": {
"description": "check_username only: up to 5 free usernames."
}
},
"description": "The new account, its API key (shown once), and its first inbox.",
"additionalProperties": true
}