Serveur MCP

anima

io.github.anima-labs-ai/anima
Entreprise et opérations Communication Authentification requise MCP 2025-11-25

Ce que fait ce MCP

Provides agent-owned email inboxes, phone and SMS identities, email drafting and sending, message search and threading, domains, DNS verification, and browser-extension connections.

account_overview
Account Overview
Single-call workspace snapshot: organization context, credential identity, send-capability flags (canSendEmail / canSendSms), inventory counts (agents, domains, phones), active blockers (each carrying the canonical MCP tool that resolves it), and the running MCP server's deploy identity (commitSha, revision, buildId, startedAt). Strict superset of the legacy whoami + workspace_health pair. Use before any non-trivial workflow to answer 'who am I, can I do X right now, and which deploy is serving me?' in one round-trip — no real send needed to find out.
Lecture seule
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
agent_create
Create Agent
Create a new agent with optional metadata, and optionally attach an initial address. Use this when provisioning a new sending identity or automation actor. To add more addresses later, use agent_update. Pass idempotencyKey to make retries safe — same key + same body returns the original response, same key + different body returns IDEMPOTENCY_BODY_MISMATCH 409.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Agent display name'}, 'slug': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 64, 'minLength': 2, 'description': 'URL-friendly unique identifier (lowercase alphanumeric + hyphens, 2-64 chars). Auto-derived from name if omitted.'}, 'email': {'type': 'string', 'format': 'email', 'description': 'Optional email address to provision for this agent'}, 'address': {'type': 'object', 'required': ['type', 'street1', 'city', 'state', 'postalCode', 'country'], 'properties': {'city': {'type': 'string', 'description': 'City name.'}, 'type': {'enum': ['BILLING', 'SHIPPING', 'MAILING', 'REGISTERED'], 'type': 'string', 'description': 'Address type: BILLING, SHIPPING, MAILING, or REGISTERED.'}, 'label': {'type': 'string', 'description': 'Optional human-readable label.'}, 'state': {'type': 'string', 'description': 'State or province code.'}, 'country': {'type': 'string', 'description': 'ISO country code (e.g. US, GB).'}, 'street1': {'type': 'string', 'description': 'Primary street address line.'}, 'street2': {'type': 'string', 'description': 'Secondary street address line (apt, suite, etc.).'}, 'postalCode': {'type': 'string', 'description': 'Postal or ZIP code.'}}, 'description': 'Optional initial postal address to attach to the agent on creation. To add more addresses later, use agent_update.', 'additionalProperties': False}, 'metadata': {'type': 'object', 'description': 'Optional agent metadata as key-value string pairs', 'additionalProperties': {'type': 'string'}}, 'idempotencyKey': {'type': 'string', 'pattern': '^[\\x20-\\x7E]+$', 'maxLength': 255, 'minLength': 1, 'description': 'Optional Idempotency-Key. Send the SAME key on retries of the SAME create payload to guarantee exactly-once provisioning even if the network drops mid-flight. Reuse with a different body returns IDEMPOTENCY_BODY_MISMATCH 409. Keys are scoped per-credential, ASCII-printable 1-255 chars (Stripe convention). Server caches the response for 24h. Note: the idempotency guarantee covers the agent record only â\x80\x94 if a subsequent address attachment fails, the agent will still exist.'}, 'provisionPhone': {'type': 'boolean', 'description': 'Whether to auto-provision a phone number for this agent'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
agent_delete
Delete Agent
Delete an agent by ID. Use this to remove deprecated or compromised agents that should no longer send messages. Cascades to attached addresses, email identities, and phone identities.
Destructif Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Agent ID'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'deleted': {'type': 'boolean'}}, 'additionalProperties': True}
agent_get
Get Agent
Fetch full detail for a single agent by ID: settings, metadata, status, and the full addresses[] / emailIdentities[] / phoneIdentities[] lists. Use agent_list to browse multiple agents.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Agent ID. Returns full agent detail including addresses, emailIdentities, and phoneIdentities.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
agent_list
List Agents
List agents in the current account context with cursor pagination. Returns a lightweight per-agent record (addresses are NOT included to avoid N+1 round-trips). Use agent_get for full single-agent detail.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'description': 'Maximum number of agents to return.', 'exclusiveMinimum': 0}, 'cursor': {'type': 'string', 'description': 'Pagination cursor from a previous list response.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {}}, 'total': {'type': 'number'}, 'cursor': {'type': ['string', 'null']}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}}, 'additionalProperties': True}
agent_update
Update Agent
Update an agent's name or metadata, and/or add/update/delete an address. Use addAddress to attach a new address, updateAddress to change fields on an existing one (by addressId), deleteAddressId to remove one. Multiple field-level changes can be combined in a single call.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Agent ID'}, 'name': {'type': 'string', 'description': 'Updated agent display name'}, 'metadata': {'type': 'object', 'description': 'Updated metadata as key-value string pairs', 'additionalProperties': {'type': 'string'}}, 'addAddress': {'type': 'object', 'required': ['type', 'street1', 'city', 'state', 'postalCode', 'country'], 'properties': {'city': {'type': 'string', 'description': 'City name.'}, 'type': {'enum': ['BILLING', 'SHIPPING', 'MAILING', 'REGISTERED'], 'type': 'string', 'description': 'Address type: BILLING, SHIPPING, MAILING, or REGISTERED.'}, 'label': {'type': 'string', 'description': 'Optional human-readable label.'}, 'state': {'type': 'string', 'description': 'State or province code.'}, 'country': {'type': 'string', 'description': 'ISO country code (e.g. US, GB).'}, 'street1': {'type': 'string', 'description': 'Primary street address line.'}, 'street2': {'type': 'string', 'description': 'Secondary street address line (apt, suite, etc.).'}, 'postalCode': {'type': 'string', 'description': 'Postal or ZIP code.'}}, 'description': 'Attach a new postal address to this agent.', 'additionalProperties': False}, 'updateAddress': {'type': 'object', 'required': ['addressId'], 'properties': {'city': {'type': 'string', 'description': 'Updated city.'}, 'type': {'enum': ['BILLING', 'SHIPPING', 'MAILING', 'REGISTERED'], 'type': 'string', 'description': 'Updated address type.'}, 'label': {'type': 'string', 'description': 'Updated label.'}, 'state': {'type': 'string', 'description': 'Updated state or province.'}, 'country': {'type': 'string', 'description': 'Updated country code.'}, 'street1': {'type': 'string', 'description': 'Updated primary street address.'}, 'street2': {'type': 'string', 'description': 'Updated secondary street address.'}, 'addressId': {'type': 'string', 'description': 'ID of the address to update.'}, 'postalCode': {'type': 'string', 'description': 'Updated postal code.'}}, 'description': 'Update fields on an existing address. Pass addressId + the fields to change.', 'additionalProperties': False}, 'deleteAddressId': {'type': 'string', 'description': 'ID of an address to remove from this agent.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
domain_create
Create Domain
Register a custom sending domain in the workspace so it can be configured for email traffic. Use this before DNS setup and verification.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'Domain name to add, such as mail.example.com or example.com.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
domain_delete
Delete Domain
Delete a domain from the workspace when it is no longer needed. Use this to remove old or incorrect domain configurations.
Destructif Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Unique domain ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'deleted': {'type': 'boolean'}}, 'additionalProperties': True}
domain_get
Get Domain
Fetch full detail for a single domain by ID, including verification and configuration state. Use domain_list to browse all domains.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Unique domain ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
domain_list
List Domains
List all domains connected to the current workspace. Use this to audit configured sender domains and choose one for follow-up actions.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {}}, 'total': {'type': 'number'}, 'cursor': {'type': ['string', 'null']}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}}, 'additionalProperties': True}
domain_update
Update Domain
Update mutable configuration on a domain. Currently the only updatable field is `feedbackEnabled` — toggle SES bounce and complaint feedback processing on or off without re-verifying the domain.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Unique domain ID.'}, 'feedbackEnabled': {'type': 'boolean', 'description': 'Enable or disable bounce + complaint feedback processing for this domain.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
domain_verify
Verify Domain
Trigger a verification check for a domain after DNS records are configured. Use this to re-run DNS validation and update verification status.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Unique domain ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
domain_zone_file
Domain Zone File
Get the full DNS zone file for a domain. Use this for complete DNS export or to verify all records are correctly configured.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Unique domain ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
email_attachment_get
Get Email Attachment
Get a temporary download URL for an email attachment. Use this when you need direct file access for preview or download.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Attachment ID. Returns a temporary download URL.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
email_draft_create
Create Email Draft
Create a new email draft (composed but not sent). Drafts can be incomplete — missing recipients, subject, or body. Use email_draft_send later to actually deliver, or email_draft_delete to discard.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId'], 'properties': {'cc': {'type': 'array', 'items': {'type': 'string'}, 'description': 'CC recipients.'}, 'to': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Recipient email addresses (may be empty for an incomplete draft).'}, 'bcc': {'type': 'array', 'items': {'type': 'string'}, 'description': 'BCC recipients.'}, 'body': {'type': 'string', 'description': 'Plain-text body.'}, 'agentId': {'type': 'string', 'description': 'Owning agent ID.'}, 'subject': {'type': 'string', 'description': 'Subject line.'}, 'bodyHtml': {'type': 'string', 'description': 'HTML body.'}, 'metadata': {'type': 'object', 'description': 'Arbitrary metadata.', 'additionalProperties': {}}, 'inReplyTo': {'type': 'string', 'description': 'Optional In-Reply-To Message-ID for threading on send.'}, 'references': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional References chain for threading.'}, 'fromIdentityId': {'type': 'string', 'description': "Optional EmailIdentity ID to send from. Must belong to this agent and be verified. If omitted, the agent's primary identity is used at send time. Discover available IDs from the `emailIdentities` array returned by agent_get."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
email_draft_delete
Delete Email Draft
Discard a draft. Use this to remove drafts that are no longer needed. Use email_draft_send if you want to deliver instead.
Destructif Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Draft ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'deleted': {'type': 'boolean'}}, 'additionalProperties': True}
email_draft_get
Get Email Draft
Fetch full detail for a single draft by ID. Use email_draft_list to browse drafts.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Draft ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
email_draft_list
List Email Drafts
List email drafts with optional filters. Returns lightweight draft records — use email_draft_get for full detail.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'description': 'Max drafts when listing. Ignored when `id` is provided.', 'exclusiveMinimum': 0}, 'cursor': {'type': 'string', 'description': 'Pagination cursor from a previous list response.'}, 'agentId': {'type': 'string', 'description': 'Filter drafts by agent ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {}}, 'total': {'type': 'number'}, 'cursor': {'type': ['string', 'null']}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}}, 'additionalProperties': True}
email_draft_send
Send Email Draft
Send a draft. Atomically converts the draft to a delivered Message + deletes the draft row. The draft must have at least one recipient, a subject, and a body. Returns the newly-created Message.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Draft ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'status': {'type': 'string'}, 'messageId': {'type': 'string'}}, 'additionalProperties': True}
email_forward
Forward Email
Forward an existing email to another recipient by loading the original content first. Use this to share a prior message while preserving context.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'originalId', 'to'], 'properties': {'to': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'description': 'Recipient email address(es) for the forwarded message.'}, 'text': {'type': 'string', 'description': 'Optional introductory text to prepend before forwarded content.'}, 'agentId': {'type': 'string', 'description': 'Agent ID forwarding the email.'}, 'originalId': {'type': 'string', 'description': 'Original email ID being forwarded.'}, 'attachments': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Public URL the server fetches and attaches. Provide either `content` or `url`. Private/loopback/link-local IPs are rejected (SSRF guard). Max 25MB after download.'}, 'content': {'type': 'string', 'description': 'Base64-encoded attachment bytes. Provide either `content` or `url`. Max ~33MB on the wire (decodes to ~25MB binary).'}, 'filename': {'type': 'string', 'description': "Filename presented to the recipient. Inferred from URL path when `url` is used and this is omitted; falls back to 'attachment'."}, 'contentId': {'type': 'string', 'description': 'Content-ID for inline attachments referenced in the HTML body via `cid:<id>` (e.g. set to \'logo\' for `<img src="cid:logo">`). Present â\x86\x92 `Content-Disposition: inline`; absent â\x86\x92 `attachment`.'}, 'contentType': {'type': 'string', 'description': "MIME type. Auto-detected from `filename` extension if omitted (e.g. 'application/pdf' for .pdf). Falls back to 'application/octet-stream'."}}, 'description': 'File attachment for outbound email. Provide exactly one of `content` (base64-inline) or `url` (server-fetch).', 'additionalProperties': False}, 'maxItems': 20, 'description': "Optional additional file attachments on the forward (max 20 entries, 25MB total). Original email's attachments are NOT auto-included â\x80\x94 pass them explicitly if you want them forwarded."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'status': {'type': 'string'}, 'messageId': {'type': 'string'}}, 'additionalProperties': True}
email_get
Get Email
Fetch full detail for a single email by ID, including metadata and body. Use email_list to browse emails in a folder.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Email ID. Returns full metadata and body.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
email_label
Label Email
Add and/or remove labels on one message — the agent's workflow state. Use this to mark mail read/unread (`read`/`unread`), archive it (`archived`), or apply your own tags, then filter with email_list's `labels`. Supply at least one of addLabels/removeLabels. One message per call: there is no batch form.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'ID of the message to relabel.'}, 'addLabels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels to add. Adding `read` removes `unread` and vice versa â\x80\x94 one state under two names, and a message always carries exactly one of them.'}, 'removeLabels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels to remove. Removing `unread` marks the message read (and vice versa); a message is never left with neither.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
email_list
List Emails
List emails with cursor pagination. Returns lightweight per-email records plus a `pagination` object — pass `pagination.nextCursor` back as `cursor` for the next page. Use email_get for the full body, email_search to find specific messages.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'description': 'Max emails to return per page (1-100, default 20).', 'exclusiveMinimum': 0}, 'cursor': {'type': 'string', 'description': "Opaque pagination cursor from a previous response's `pagination.nextCursor`. Omit for the first page."}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only return messages carrying ALL of these labels. System labels: `unread`, `read`, `archived`, `spam`. Case-insensitive. Use email_label to change them.'}, 'agentId': {'type': 'string', 'description': 'Filter emails by agent ID. Agent-scoped keys are already limited to their own agent; master keys see the whole workspace unless filtered.'}, 'includeSpam': {'type': 'boolean', 'description': 'Include messages classified as spam on arrival. Excluded by default. Naming `spam` in `labels` also counts as asking for it.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {}}, 'total': {'type': 'number'}, 'cursor': {'type': ['string', 'null']}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}}, 'additionalProperties': True}
email_reply
Reply Email
Reply to an existing email thread by first loading the original message and setting threading headers. Use this when you need a proper in-thread response.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'originalId', 'text'], 'properties': {'html': {'type': 'string', 'description': 'Optional HTML content for the reply body.'}, 'text': {'type': 'string', 'description': 'Plain-text content for your reply message.'}, 'agentId': {'type': 'string', 'description': 'Agent ID sending the reply.'}, 'replyAll': {'type': 'boolean', 'description': 'When true, include additional participants from the original email.'}, 'originalId': {'type': 'string', 'description': 'Original email ID being replied to.'}, 'attachments': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Public URL the server fetches and attaches. Provide either `content` or `url`. Private/loopback/link-local IPs are rejected (SSRF guard). Max 25MB after download.'}, 'content': {'type': 'string', 'description': 'Base64-encoded attachment bytes. Provide either `content` or `url`. Max ~33MB on the wire (decodes to ~25MB binary).'}, 'filename': {'type': 'string', 'description': "Filename presented to the recipient. Inferred from URL path when `url` is used and this is omitted; falls back to 'attachment'."}, 'contentId': {'type': 'string', 'description': 'Content-ID for inline attachments referenced in the HTML body via `cid:<id>` (e.g. set to \'logo\' for `<img src="cid:logo">`). Present â\x86\x92 `Content-Disposition: inline`; absent â\x86\x92 `attachment`.'}, 'contentType': {'type': 'string', 'description': "MIME type. Auto-detected from `filename` extension if omitted (e.g. 'application/pdf' for .pdf). Falls back to 'application/octet-stream'."}}, 'description': 'File attachment for outbound email. Provide exactly one of `content` (base64-inline) or `url` (server-fetch).', 'additionalProperties': False}, 'maxItems': 20, 'description': 'Optional file attachments on the reply (max 20 entries, 25MB total).'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'status': {'type': 'string'}, 'messageId': {'type': 'string'}}, 'additionalProperties': True}
email_search
Search Emails
Search messages by content. Fulltext mode (default) substring-matches subject/body/addresses of EMAIL messages and returns `{items, pagination}` with cursor paging. Semantic mode ranks by vector-embedding similarity and returns `{results}` scored 0-1 — each result spans ANY channel (check the `channel` field) and includes the message id for email_get / email_thread_get follow-ups.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'mode': {'enum': ['fulltext', 'semantic'], 'type': 'string', 'description': 'Search mode. `fulltext` (default) does substring matching over subject/body/addresses of EMAIL messages and supports cursor pagination. `semantic` ranks by vector-embedding similarity â\x80\x94 better for meaning-level questions ("emails about the contract renewal") â\x80\x94 but searches messages across ALL channels (each result carries a `channel` field) and does not paginate.'}, 'limit': {'type': 'integer', 'description': 'Max results (fulltext: 1-100, default 20; semantic: 1-50, default 10).', 'exclusiveMinimum': 0}, 'query': {'type': 'string', 'minLength': 1, 'description': 'Search query text.'}, 'cursor': {'type': 'string', 'description': "Pagination cursor from a previous fulltext response's `pagination.nextCursor`. Fulltext mode only."}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only return messages carrying ALL of these labels. System labels: `unread`, `read`, `archived`, `spam`. Case-insensitive. Use email_label to change them.'}, 'agentId': {'type': 'string', 'description': 'Filter results to a specific agent.'}, 'threshold': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Minimum similarity score 0-1 (semantic mode only, default 0.7).'}, 'includeSpam': {'type': 'boolean', 'description': 'Include messages classified as spam on arrival. Excluded by default. Naming `spam` in `labels` also counts as asking for it.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
email_send
Send Email
Send a new outbound email from the agent mailbox. Use this when you need to compose and deliver a message with optional CC, threading headers.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'to', 'subject', 'body'], 'properties': {'cc': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional CC recipient email addresses.'}, 'to': {'type': 'array', 'items': {'type': 'string'}, 'description': 'List of recipient email addresses.'}, 'bcc': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional BCC recipient email addresses.'}, 'body': {'type': 'string', 'description': 'Plain-text body content for the email.'}, 'agentId': {'type': 'string', 'description': 'Agent ID sending the email.'}, 'headers': {'type': 'object', 'description': 'Optional custom email headers as key-value pairs (e.g. {"X-Campaign": "onboarding"}). Merged with Anima\'s own threading/compliance headers, which win on conflict.', 'additionalProperties': {'type': 'string'}}, 'subject': {'type': 'string', 'description': 'Subject line for the outgoing email.'}, 'bodyHtml': {'type': 'string', 'description': 'Optional HTML body content for rich email formatting.'}, 'inReplyTo': {'type': 'string', 'description': 'Optional message ID to set the In-Reply-To header for threading.'}, 'references': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional list of message IDs to include in the References header.'}, 'attachments': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Public URL the server fetches and attaches. Provide either `content` or `url`. Private/loopback/link-local IPs are rejected (SSRF guard). Max 25MB after download.'}, 'content': {'type': 'string', 'description': 'Base64-encoded attachment bytes. Provide either `content` or `url`. Max ~33MB on the wire (decodes to ~25MB binary).'}, 'filename': {'type': 'string', 'description': "Filename presented to the recipient. Inferred from URL path when `url` is used and this is omitted; falls back to 'attachment'."}, 'contentId': {'type': 'string', 'description': 'Content-ID for inline attachments referenced in the HTML body via `cid:<id>` (e.g. set to \'logo\' for `<img src="cid:logo">`). Present â\x86\x92 `Content-Disposition: inline`; absent â\x86\x92 `attachment`.'}, 'contentType': {'type': 'string', 'description': "MIME type. Auto-detected from `filename` extension if omitted (e.g. 'application/pdf' for .pdf). Falls back to 'application/octet-stream'."}}, 'description': 'File attachment for outbound email. Provide exactly one of `content` (base64-inline) or `url` (server-fetch).', 'additionalProperties': False}, 'maxItems': 20, 'description': 'Optional file attachments (max 20 entries, 25MB total). Each entry must provide either `content` (base64-inline) or `url` (public URL for server-fetch). Use `contentId` for inline images referenced in HTML via `cid:` URIs.'}, 'fromIdentityId': {'type': 'string', 'description': "Optional EmailIdentity ID to send from. Must belong to this agent and be verified. If omitted, the agent's primary identity is used. Use this to route different message types through different identities (e.g. transactional from @brawz.ai, support from @support.brawz.ai). Discover available IDs from the `emailIdentities` array returned by agent_get."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'status': {'type': 'string'}, 'messageId': {'type': 'string'}}, 'additionalProperties': True}
email_thread_get
Get Email Thread(s)
Fetch all email messages in one or more threads. Pass `id` for a single thread or `ids` for multiple. Returns messages ordered within each thread. Uses the messages endpoint filtered by threadId + channel=EMAIL under the hood.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string', 'description': 'Single thread ID to fetch. Pass either `id` or `ids`.'}, 'ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Multiple thread IDs to fetch in parallel. Pass either `id` or `ids`.'}, 'limit': {'type': 'integer', 'description': 'Optional max messages per thread.', 'exclusiveMinimum': 0}, 'agentId': {'type': 'string', 'description': 'Optional agent scope filter (only return messages owned by this agent).'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
extension_connect
Connect Browser Extension
Create a short-lived, single-use connect URL that links a browser extension (or a headless Puppeteer worker) to an Anima agent. Returns `connectUrl` — hand it to the extension to complete the handshake before `exchangeExpiresAt`. The response carries no token or secret. Auth: with a master key you MUST pass `agentId`; with an agent key OMIT `agentId` (the server resolves it from the key). `ttl` is optional; a value above the org's maximum is rejected.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'ttl': {'enum': ['15m', '1h', 'session'], 'type': 'string', 'description': "Requested lifetime of the connection. A value longer than the org's policy maximum is rejected (not silently shortened); omit to use the policy default."}, 'agentId': {'type': 'string', 'description': 'Agent to connect the extension to. REQUIRED when authenticating with a master key (mk_); OMIT when using an agent key (ak_/oat_) â\x80\x94 the server resolves the agent from the key.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'connectUrl', 'expiresAt', 'exchangeExpiresAt', 'policy'], 'properties': {'policy': {'enum': ['session', 'pre_approved'], 'type': 'string'}, 'agentId': {'type': 'string'}, 'expiresAt': {'type': ['string', 'null']}, 'connectUrl': {'type': 'string'}, 'exchangeExpiresAt': {'type': 'string'}}, 'additionalProperties': True}
inbox_create
Create Inbox
Create a new email inbox (mailbox) that can receive mail immediately at its address. Choose a username and domain or let the platform generate them. Requires master key access.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'domain': {'type': 'string', 'description': 'Domain for the inbox address. Uses the platform default (agents.useanima.sh) when omitted. Custom domains must already be registered and verified â\x80\x94 see domain_list.'}, 'agentId': {'type': 'string', 'description': 'Agent ID to associate with this inbox. Inbound mail to the inbox is attributed to this agent.'}, 'username': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Local part of the inbox email address (letters, numbers, dots, hyphens, underscores; normalized to lowercase; must not start/end with a dot or hyphen). A random local part is generated when omitted.'}, 'displayName': {'type': 'string', 'maxLength': 128, 'description': 'Human-readable display name for the inbox (max 128 characters).'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
inbox_delete
Delete Inbox
Permanently delete an inbox and its mailbox. Mail sent to the address after deletion bounces. This cannot be undone. Requires master key access.
Destructif Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Unique inbox ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'deleted': {'type': 'boolean'}}, 'additionalProperties': True}
inbox_get
Get Inbox
Fetch full detail for a single inbox by ID, including its email address, display name, and associated agent. Use inbox_list to browse all inboxes.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Unique inbox ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
inbox_list
List Inboxes
List inboxes in the workspace with cursor pagination and optional free-text search. Returns the address, display name, and agent association for each inbox.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'description': 'Max inboxes to return per page (1-100, default 20).', 'exclusiveMinimum': 0}, 'query': {'type': 'string', 'description': 'Free-text search filter matched against inbox email addresses and display names.'}, 'cursor': {'type': 'string', 'description': 'Pagination cursor from a previous list response (pagination.nextCursor).'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {}}, 'total': {'type': 'number'}, 'cursor': {'type': ['string', 'null']}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}}, 'additionalProperties': True}
inbox_update
Update Inbox
Update the display name or agent association of an inbox. Pass null for a field to clear it (unlink the agent / remove the display name); omitted fields are left unchanged. The email address itself cannot be changed. Requires master key access.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Unique inbox ID.'}, 'agentId': {'type': ['string', 'null'], 'description': 'Agent ID to associate with the inbox. Pass null to unlink the current agent. Omit to leave unchanged.'}, 'displayName': {'anyOf': [{'type': 'string', 'maxLength': 128}, {'type': 'null'}], 'description': 'New human-readable display name (max 128 characters). Pass null to clear it. Omit to leave unchanged.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
phone_call_create
Phone Call (Live)
Place a live phone call and have a real conversation. The tool stays open for the entire call duration. As the caller speaks, you receive live transcript chunks via progress notifications; when the caller finishes a turn (server emits isFinal: true), an elicitation prompt asks you what the agent should say next. You respond with `say` (the exact text to speak) and optional `endCallAfterSpoken: true` to hang up after the line. Returns the full transcript when the call ends. Requires the connecting MCP client to support elicitation — without it, the tool errors out immediately.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['to', 'firstMessage'], 'properties': {'to': {'type': 'string', 'pattern': '^\\+[1-9]\\d{7,14}$', 'description': 'Destination phone number in E.164 format.'}, 'agentId': {'type': 'string', 'description': "Required when the API key / OAuth grant is user-bound (no agentId in the auth context, e.g. a master key or a user-consented Anima Connect grant) â\x80\x94 picks which of the org's agents places the call. Ignored when the auth is already agent-bound (the bound agent wins; mismatches are rejected with AGENT_MISMATCH). Use agent_list to find valid IDs."}, 'voiceId': {'type': 'string', 'description': 'Optional voice override. Use voice_list for valid IDs; the catalog is multilingual and each entry carries an audio preview.'}, 'fromNumber': {'type': 'string', 'description': "Optional source phone in E.164. Default: the calling agent's primary phone identity."}, 'agentConfig': {'type': 'object', 'properties': {'systemPrompt': {'type': 'string', 'maxLength': 600, 'description': "System prompt the server-side LLM uses to shape the agent's persona for this call. Defaults to a generic voice-assistant persona. Max 600 characters (~100 words) â\x80\x94 long prompts add 50-150ms per-turn TTFT, the model is rehashing them every reply. Keep responses short and TTS-friendly (no markdown, no bullets); if you override, mirror that guidance."}, 'maxHistoryTurns': {'type': 'integer', 'description': "Max user+assistant turn pairs the server-side LLM retains in context. Defaults to 20. Long calls drop the oldest turns to keep the model's context window bounded.", 'exclusiveMinimum': 0}}, 'description': "Opt in to the server-side conversation loop. When present (even as `{}`), the Anima API runs the LLM-backed conversation loop on each caller turn and speaks the reply â\x80\x94 the MCP tool just records both sides of the transcript and returns it when the call ends. **Required when the connecting MCP client doesn't implement elicitation** (e.g. Claude Code returns `-32600 Elicitation not supported`). Omit ONLY if you have your own bot ready to subscribe to MCP elicitation requests and reply via the `say` field per turn.", 'additionalProperties': False}, 'firstMessage': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Opening line the agent speaks when the call is answered. Be natural â\x80\x94 this is what the human hears first.'}, 'maxDurationSec': {'type': 'integer', 'maximum': 1800, 'description': 'Hard cap on total call duration in seconds. Default 600 (10 min). Max 1800 (30 min).', 'exclusiveMinimum': 0}, 'silenceTimeoutSec': {'type': 'integer', 'maximum': 120, 'description': 'If no caller utterance arrives within this many seconds (measured from the last agent utterance), the call hangs up automatically. Default 30.', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['callId', 'endedReason', 'transcript'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'description': 'Present when `endedReason` is `error` or `elicitation_unsupported` â\x80\x94 carries the underlying code+message so callers can distinguish capability gaps from real failures.', 'additionalProperties': False}, 'callId': {'type': ['string', 'null'], 'description': 'ID of the placed call. `null` if the call ended before the carrier assigned an ID (e.g. WS auth failure or pre-ring termination) â\x80\x94 use `endedReason` to understand why.'}, 'transcript': {'type': 'array', 'items': {'type': 'object', 'required': ['role', 'text'], 'properties': {'at': {'type': 'string', 'description': 'ISO 8601 timestamp.'}, 'role': {'enum': ['caller', 'agent'], 'type': 'string', 'description': 'Who spoke this turn â\x80\x94 `caller` is the human, `agent` is the AI.'}, 'text': {'type': 'string'}, 'turnId': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Full transcript with role labels in chronological order.'}, 'durationSec': {'type': 'number', 'description': 'Total call duration in seconds.'}, 'endedReason': {'type': 'string', 'description': 'Why the call ended (hangup, timeout, error, etc.).'}, 'latencyTurns': {'type': 'array', 'items': {'type': 'object', 'required': ['turnId', 'turnIndex'], 'properties': {'turnId': {'type': 'string'}, 'turnIndex': {'type': 'integer'}, 't_final_ms': {'type': 'number'}, 't_ws_recv_ms': {'type': 'number'}, 't_ws_send_ms': {'type': 'number'}, 't_tts_ws_open_ms': {'type': 'number'}, 't_tts_complete_ms': {'type': 'number'}, 't_tts_first_tx_ms': {'type': 'number'}, 't_first_interim_ms': {'type': 'number'}, 't_speak_dispatch_ms': {'type': 'number'}, 't_tts_first_byte_ms': {'type': 'number'}, 't_vad_speech_end_ms': {'type': 'number'}, 't_session_dispatch_ms': {'type': 'number'}, 't_caller_speech_end_ms': {'type': 'number'}, 't_speak_first_chunk_ms': {'type': 'number'}, 't_backchannel_dispatched_ms': {'type': 'number'}}, 'additionalProperties': False}, 'description': "Per-turn latency breakdown captured by the API's LatencyTracker. Each entry is a turn; the t_*_ms fields are absolute millisecond timestamps. Diff adjacent marks to compute stage durations â\x80\x94 common ones: perceived_latency_ms = t_speak_dispatch_ms - t_caller_speech_end_ms (basic) or t_tts_first_tx_ms - t_caller_speech_end_ms (premium), endpoint_wait_ms = t_final_ms - t_caller_speech_end_ms, ws_round_trip_ms = t_ws_recv_ms - t_ws_send_ms. Omitted if the API didn't send latency data (pre-Wave-3K servers)."}}, 'additionalProperties': False}
phone_call_get
Get Phone Call
Get full detail for a single phone call: status, duration, participants, AI-generated summary (one-liner, topics, action items, decisions, open questions, next steps), and quality score. The summary is generated once on first read after post-call processing and cached.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The call ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
phone_call_list
List Phone Calls
List phone calls with optional filters. Returns lightweight call records — for full call detail including summary and score, use phone_call_get.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'description': 'Max results (default: 20).', 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Offset for pagination.'}, 'status': {'type': 'string', 'description': 'Filter by call state (INITIATING, RINGING, ACTIVE, ENDED, etc.).'}, 'agentId': {'type': 'string', 'description': 'Filter by agent ID.'}, 'direction': {'enum': ['INBOUND', 'OUTBOUND'], 'type': 'string', 'description': 'Filter by call direction.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {}}, 'total': {'type': 'number'}, 'cursor': {'type': ['string', 'null']}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}}, 'additionalProperties': True}
phone_call_recording_get
Get Phone Call Recording
Get a time-limited download URL for a call recording (WAV format). The URL expires after 1 hour. Recording must have been enabled during the call.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The call ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
phone_call_transcript_get
Get Phone Call Transcript
Get the full transcript of a phone call with speaker labels, timestamps, and confidence scores. Available after the call ends and transcription completes.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The call ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
phone_number_list
List Phone Numbers
List phone numbers assigned to an agent. Each result includes status and capability flags (sms/mms/voice).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId'], 'properties': {'agentId': {'type': 'string', 'description': 'Agent whose phone numbers to list.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {}}, 'total': {'type': 'number'}, 'cursor': {'type': ['string', 'null']}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}}, 'additionalProperties': True}
phone_number_provision
Provision Phone Number
Provision a new phone number from the carrier pool and assign it to an agent. Note: provisioning a number costs money on the underlying carrier; do not call speculatively. Use countryCode / areaCode / capabilities to constrain selection.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId'], 'properties': {'agentId': {'type': 'string', 'description': 'Agent ID to assign the provisioned phone number to.'}, 'areaCode': {'type': 'string', 'description': 'Preferred area code for the phone number.'}, 'countryCode': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code for number selection (default US).'}, 'capabilities': {'type': 'array', 'items': {'enum': ['sms', 'mms', 'voice'], 'type': 'string'}, 'description': 'Optional capability list (sms, mms, voice) the number must support.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
phone_number_release
Release Phone Number
Release a previously provisioned phone number back to the carrier pool. Use this when cleaning up unused numbers. Released numbers cannot be recovered.
Destructif Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'phoneNumber'], 'properties': {'agentId': {'type': 'string', 'description': 'Agent ID that currently owns the phone number.'}, 'phoneNumber': {'type': 'string', 'description': 'E.164 formatted phone number to release.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'deleted': {'type': 'boolean'}}, 'additionalProperties': True}
sms_get
Get SMS
Fetch full detail for a single SMS by ID (includes its `threadId` for joining the conversation). Use sms_list to browse multiple SMS messages.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'SMS message ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
sms_list
List SMS
List SMS messages with optional filters. Each result includes its `threadId` for joining the conversation. Use sms_get for full single-message detail.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'description': 'Max SMS messages to return.', 'exclusiveMinimum': 0}, 'cursor': {'type': 'string', 'description': 'Pagination cursor from a previous list response.'}, 'agentId': {'type': 'string', 'description': 'Filter SMS by agent ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {}}, 'total': {'type': 'number'}, 'cursor': {'type': ['string', 'null']}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}}, 'additionalProperties': True}
sms_send
Send SMS
Send an SMS to a phone number, or an MMS by passing `mediaUrls`. The agent must have a provisioned phone number. Use this for transactional texts or conversational messaging.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId', 'to', 'body'], 'properties': {'to': {'type': 'string', 'description': 'Recipient phone number in E.164 format (e.g. +14155551234).'}, 'body': {'type': 'string', 'description': 'Message body. SMS character limits apply (~160 chars per segment).'}, 'agentId': {'type': 'string', 'description': 'Agent ID sending the SMS. The agent must have a provisioned phone number.'}, 'mediaUrls': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional array of media URLs for MMS. Pass one URL for a single image/file; multiple for multi-part MMS. Carrier limits apply.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'status': {'type': 'string'}, 'messageId': {'type': 'string'}}, 'additionalProperties': True}
sms_thread_get
Get SMS Thread
Get one SMS/MMS conversation with its message history, oldest first. Use sms_thread_list to find thread IDs (or take `threadId` off any SMS). For a conversation longer than `limit`, returns its most recent messages; page deeper history with sms_list.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Thread ID (use sms_thread_list to find IDs).'}, 'limit': {'type': 'integer', 'description': 'Max messages to return in the thread.', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
sms_thread_list
List SMS Threads
List SMS/MMS conversations, most recently active first. A conversation is one agent number talking to one external contact. Returns summaries (participant, last message snippet, message count) — use sms_thread_get for the full history. Optionally filter by agentId.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'description': 'Max thread summaries to return. Defaults to 20.', 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Pagination offset (skip this many threads from the start).'}, 'agentId': {'type': 'string', 'description': 'Filter conversations by agent ID. Omit to see threads across all agents you have access to.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {}}, 'total': {'type': 'number'}, 'cursor': {'type': ['string', 'null']}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}}, 'additionalProperties': True}
usage_overview
Usage Overview
Usage rollup for a billing period. Returns counters keyed by usage type (e.g. 'email_sent', 'sms_sent', 'voice_call_minutes') plus the latest update timestamp. Defaults to the current calendar month in UTC when `period` is omitted. Read-only, callable by any authenticated credential — scoped to the caller's org. Use to answer 'where am I against my tier limits?' without paying for per-event detail (UsageEvent is operator-tier).
Lecture seule
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'period': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}$', 'description': "Billing period in YYYY-MM format (e.g. '2026-05'). Defaults to the current calendar month in UTC."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
vault_credential_create
Create Vault Credential
Create a new credential in an agent vault. Pass `type` plus the matching payload block (login / card / identity / oauthToken / apiKey / certificate / notes). For login credentials, prefer `generatePassword` over supplying `login.password` — the vault generates and stores the password server-side and returns only the credential reference, so the secret never enters the conversation. For api_key/oauth_token credentials, set `allowedHosts` so the credential can be exercised through vault_credential_use.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type', 'name'], 'properties': {'card': {'type': 'object', 'properties': {'code': {'type': 'string', 'description': 'Optional security code.'}, 'brand': {'type': 'string', 'description': 'Optional card brand.'}, 'number': {'type': 'string', 'description': 'Optional card number.'}, 'expYear': {'type': 'string', 'description': 'Optional expiration year.'}, 'expMonth': {'type': 'string', 'description': 'Optional expiration month.'}, 'cardholderName': {'type': 'string', 'description': 'Optional cardholder name.'}}, 'description': 'Card payload for card-type.', 'additionalProperties': False}, 'name': {'type': 'string', 'description': 'Human-readable credential name.'}, 'type': {'enum': ['login', 'secure_note', 'card', 'identity', 'oauth_token', 'api_key', 'certificate'], 'type': 'string', 'description': 'Credential type.'}, 'login': {'type': 'object', 'properties': {'totp': {'type': 'string', 'description': 'Optional TOTP secret.'}, 'uris': {'type': 'array', 'items': {'type': 'object', 'properties': {'uri': {'type': 'string', 'description': 'URI value.'}, 'match': {'type': 'string', 'description': 'Optional URI match mode.'}}, 'additionalProperties': False}, 'description': 'Optional list of login URIs.'}, 'password': {'type': 'string', 'description': 'Optional login password.'}, 'username': {'type': 'string', 'description': 'Optional login username.'}}, 'description': 'Login payload for login-type.', 'additionalProperties': False}, 'notes': {'type': 'string', 'description': 'Optional secure note text.'}, 'apiKey': {'type': 'object', 'required': ['provider', 'key'], 'properties': {'key': {'type': 'string', 'description': 'The API key value. Stored encrypted; always read back masked.'}, 'prefix': {'type': 'string', 'description': "Optional display prefix (e.g. 'sk-...abc')."}, 'scopes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional scopes or permissions this key carries.'}, 'provider': {'type': 'string', 'description': 'API provider name (e.g. openai, anthropic, stripe).'}, 'expiresAt': {'type': 'string', 'description': 'Optional ISO-8601 key expiration timestamp.'}, 'rateLimit': {'type': 'object', 'required': ['requests', 'window'], 'properties': {'window': {'type': 'string', 'description': "Rate-limit window (e.g. '1m', '1h', '1d')."}, 'requests': {'type': 'integer', 'description': 'Maximum requests allowed in the window.', 'exclusiveMinimum': 0}}, 'description': 'Optional per-credential broker rate limit.', 'additionalProperties': False}, 'authHeader': {'type': 'string', 'description': "Header the broker injects the key into (default 'Authorization')."}, 'authScheme': {'type': 'string', 'description': "Value prefix before the key (default 'Bearer '; set '' for a raw key, e.g. x-api-key)."}, 'allowedHosts': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hosts this key may be brokered to via vault_credential_use. Fail-closed: with no hosts the broker refuses every call. After creation only a master key may change this list.'}}, 'description': 'API key payload for api_key-type.', 'additionalProperties': False}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Custom field name.'}, 'type': {'type': 'string', 'description': 'Optional custom field type.'}, 'value': {'type': 'string', 'description': 'Optional custom field value.'}, 'linkedId': {'type': 'string', 'description': 'Optional linked field identifier.'}}, 'additionalProperties': False}, 'description': 'Optional custom fields.'}, 'agentId': {'type': 'string', 'description': 'Agent ID that owns the new credential. Optional when using an agent-bound credential.'}, 'favorite': {'type': 'boolean', 'description': 'Optional favorite flag.'}, 'identity': {'type': 'object', 'properties': {'ssn': {'type': 'string', 'description': 'Optional SSN or national ID.'}, 'city': {'type': 'string', 'description': 'Optional city.'}, 'email': {'type': 'string', 'description': 'Optional identity email.'}, 'phone': {'type': 'string', 'description': 'Optional identity phone.'}, 'state': {'type': 'string', 'description': 'Optional state or province.'}, 'title': {'type': 'string', 'description': 'Optional identity title.'}, 'company': {'type': 'string', 'description': 'Optional company name.'}, 'country': {'type': 'string', 'description': 'Optional country.'}, 'address1': {'type': 'string', 'description': 'Optional address line 1.'}, 'address2': {'type': 'string', 'description': 'Optional address line 2.'}, 'address3': {'type': 'string', 'description': 'Optional address line 3.'}, 'lastName': {'type': 'string', 'description': 'Optional last name.'}, 'username': {'type': 'string', 'description': 'Optional username value.'}, 'firstName': {'type': 'string', 'description': 'Optional first name.'}, 'middleName': {'type': 'string', 'description': 'Optional middle name.'}, 'postalCode': {'type': 'string', 'description': 'Optional postal code.'}, 'licenseNumber': {'type': 'string', 'description': 'Optional license number.'}, 'passportNumber': {'type': 'string', 'description': 'Optional passport number.'}}, 'description': 'Identity payload for identity-type.', 'additionalProperties': False}, 'oauthToken': {'type': 'object', 'required': ['provider', 'accessToken', 'refreshToken', 'tokenEndpoint', 'clientId', 'scopes', 'expiresAt'], 'properties': {'scopes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'OAuth scopes granted to this token.'}, 'clientId': {'type': 'string', 'description': 'OAuth client ID.'}, 'provider': {'type': 'string', 'description': 'OAuth provider name (e.g. google, github, slack).'}, 'expiresAt': {'type': 'string', 'description': 'ISO-8601 token expiration timestamp.'}, 'accessToken': {'type': 'string', 'description': 'OAuth access token. Stored encrypted.'}, 'autoRefresh': {'type': 'boolean', 'description': 'Automatically refresh before expiry (default true).'}, 'allowedHosts': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hosts this token may be brokered to via vault_credential_use. Fail-closed: with no hosts the broker refuses every call.'}, 'clientSecret': {'type': 'string', 'description': 'Optional OAuth client secret.'}, 'refreshToken': {'type': 'string', 'description': 'OAuth refresh token. Stored encrypted; never read back.'}, 'tokenEndpoint': {'type': 'string', 'description': 'Token endpoint URL used for automatic refresh.'}}, 'description': 'OAuth token payload for oauth_token-type.', 'additionalProperties': False}, 'certificate': {'type': 'object', 'required': ['format', 'certificate', 'privateKey', 'expiresAt'], 'properties': {'chain': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional certificate chain.'}, 'format': {'enum': ['pem', 'p12', 'jks'], 'type': 'string', 'description': 'Certificate format.'}, 'expiresAt': {'type': 'string', 'description': 'ISO-8601 certificate expiration timestamp.'}, 'privateKey': {'type': 'string', 'description': 'Private key. Stored encrypted; always read back masked.'}, 'certificate': {'type': 'string', 'description': 'Certificate content. Stored encrypted.'}}, 'description': 'Certificate payload for certificate-type.', 'additionalProperties': False}, 'revealPolicy': {'enum': ['standard', 'brokered'], 'type': 'string', 'description': "Reveal policy. 'brokered' means the plaintext is never returned by any read/reveal/export path â\x80\x94 not even to the org master key; the secret is only usable via vault_credential_use (recovery = rotation). 'standard' keeps master-key reveal available outside MCP."}, 'generatePassword': {'type': 'object', 'properties': {'length': {'type': 'integer', 'maximum': 128, 'minimum': 8, 'description': 'Desired password length (8-128 characters, default 24).'}, 'number': {'type': 'boolean', 'description': 'Include numeric digits (default true).'}, 'special': {'type': 'boolean', 'description': 'Include special characters (default true).'}, 'lowercase': {'type': 'boolean', 'description': 'Include lowercase letters (default true).'}, 'uppercase': {'type': 'boolean', 'description': 'Include uppercase letters (default true).'}}, 'description': 'Generate the login password server-side instead of supplying login.password. Preferred for login credentials: the password is created and stored inside the vault and never enters the conversation. Only valid for login-type; mutually exclusive with login.password. Pass {} for defaults.', 'additionalProperties': False}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
vault_credential_delete
Delete Vault Credential
Delete a credential from vault storage by ID. Use to remove obsolete or compromised secrets.
Destructif Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Credential ID.'}, 'agentId': {'type': 'string', 'description': 'Agent ID that owns the credential. Optional when using an agent-bound credential.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'deleted': {'type': 'boolean'}}, 'additionalProperties': True}
vault_credential_get
Get Vault Credential
Get a single vault credential by ID. Sensitive fields (passwords, tokens, SSNs, CVV) are masked. To use the plaintext for autofill or as an upstream credential, mint a vault token at the credential broker — the LLM never sees the secret directly.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Credential ID.'}, 'agentId': {'type': 'string', 'description': 'Agent ID that owns the credential. Optional when using an agent-bound credential.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
vault_credential_get_totp
Get Vault TOTP
Get the current TOTP code for a credential that has a TOTP secret configured. Returns the live 6-digit code derived from the stored secret — the secret itself is never disclosed.
Lecture seule Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Credential ID.'}, 'agentId': {'type': 'string', 'description': 'Agent ID that owns the credential. Optional when using an agent-bound credential.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
vault_credential_list
List Vault Credentials
List credentials in an agent vault with optional type filter. Use to browse stored secrets before reading, updating, or deleting entries. Sensitive fields are masked.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'type': {'enum': ['login', 'secure_note', 'card', 'identity', 'oauth_token', 'api_key', 'certificate'], 'type': 'string', 'description': 'Optional credential type filter.'}, 'agentId': {'type': 'string', 'description': 'Agent ID whose vault to list. Optional when using an agent-bound credential (ak_* or oat_* with agentId).'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {}}, 'total': {'type': 'number'}, 'cursor': {'type': ['string', 'null']}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}}, 'additionalProperties': True}
vault_credential_request_cancel
Cancel Credential Request
Cancel a pending credential request by ID. Invalidates the single-use fill link so the human can no longer submit a value. Use when the request is no longer needed or was created in error.
Destructif Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['requestId'], 'properties': {'requestId': {'type': 'string', 'description': 'Credential-request ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
vault_credential_request_create
Request Credential From Human
Request a credential from a HUMAN without the agent or LLM ever seeing the secret. When the connecting MCP client supports inline elicitation, the human is shown a form to type the secret directly — the tool returns `status: FULFILLED` with the `credentialId` in one call, no link needed. Otherwise it returns a single-use fill link (`fillUrl`, emailed to the org owner); poll vault_credential_request_status until `status` is FULFILLED, then use the returned `credentialId` as a normal vault credential. Use this when a flow needs a secret the agent doesn't hold and can't safely be given (passwords, API keys, card numbers).
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type', 'name', 'reason'], 'properties': {'name': {'type': 'string', 'description': 'Human-readable name for the requested credential.'}, 'type': {'enum': ['login', 'secure_note', 'card'], 'type': 'string', 'description': 'Credential type the human will be asked to fill: login, secure_note, or card.'}, 'reason': {'type': 'string', 'description': 'Plain-language reason shown to the human explaining why the credential is needed.'}, 'agentId': {'type': 'string', 'description': 'Agent ID whose vault the requested credential lands in. Optional when using an agent-bound credential.'}, 'ttlSeconds': {'type': 'number', 'description': 'Optional fill-link lifetime in seconds before the request expires.'}, 'notifyOwner': {'type': 'boolean', 'description': 'Whether to email the single-use fill link to the org owner. Defaults to true.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
vault_credential_request_fill
Submit Credential (widget)
Internal: submit a credential-request secret from the Anima UI widget. Not for direct agent use.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['fillToken', 'values'], 'properties': {'values': {'type': 'object', 'description': 'The secret field values the human entered in the widget.', 'additionalProperties': {'type': 'string'}}, 'fillToken': {'type': 'string', 'description': 'Single-use fill token from the ui-tier render-data.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
vault_credential_request_status
Get Credential Request Status
Get the status of a pending credential request by ID. Poll this after vault_credential_request_create until `status` is FULFILLED, then use `credentialId` as a normal vault credential. `maskedPreview` shows a redacted hint of the filled value once available — the plaintext is never returned.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['requestId'], 'properties': {'requestId': {'type': 'string', 'description': 'Credential-request ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
vault_credential_search
Search Vault
Search vault credentials by keyword across names and content. Use when you know part of the name, URL, or username but not the exact credential ID. Different access pattern from vault_credential_list — list is paginated browsing, search is text-query lookup.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['search'], 'properties': {'type': {'enum': ['login', 'secure_note', 'card', 'identity', 'oauth_token', 'api_key', 'certificate'], 'type': 'string', 'description': 'Optional credential type filter.'}, 'search': {'type': 'string', 'description': 'Search text matched against names and content.'}, 'agentId': {'type': 'string', 'description': 'Agent ID whose vault to search. Optional when using an agent-bound credential.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {}}, 'total': {'type': 'number'}, 'cursor': {'type': ['string', 'null']}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}}, 'additionalProperties': True}
vault_credential_update
Update Vault Credential
Update an existing vault credential by ID, including optional structured sections and metadata flags. Use to rotate passwords or revise stored details.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Credential ID to update.'}, 'card': {'type': 'object', 'properties': {'code': {'type': 'string', 'description': 'Optional security code.'}, 'brand': {'type': 'string', 'description': 'Optional card brand.'}, 'number': {'type': 'string', 'description': 'Optional card number.'}, 'expYear': {'type': 'string', 'description': 'Optional expiration year.'}, 'expMonth': {'type': 'string', 'description': 'Optional expiration month.'}, 'cardholderName': {'type': 'string', 'description': 'Optional cardholder name.'}}, 'description': 'Optional updated card payload.', 'additionalProperties': False}, 'name': {'type': 'string', 'description': 'Optional updated name.'}, 'login': {'type': 'object', 'properties': {'totp': {'type': 'string', 'description': 'Optional TOTP secret.'}, 'uris': {'type': 'array', 'items': {'type': 'object', 'properties': {'uri': {'type': 'string', 'description': 'URI value.'}, 'match': {'type': 'string', 'description': 'Optional URI match mode.'}}, 'additionalProperties': False}, 'description': 'Optional list of login URIs.'}, 'password': {'type': 'string', 'description': 'Optional login password.'}, 'username': {'type': 'string', 'description': 'Optional login username.'}}, 'description': 'Optional updated login payload.', 'additionalProperties': False}, 'notes': {'type': 'string', 'description': 'Optional updated note text.'}, 'apiKey': {'type': 'object', 'required': ['provider', 'key'], 'properties': {'key': {'type': 'string', 'description': 'The API key value. Stored encrypted; always read back masked.'}, 'prefix': {'type': 'string', 'description': "Optional display prefix (e.g. 'sk-...abc')."}, 'scopes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional scopes or permissions this key carries.'}, 'provider': {'type': 'string', 'description': 'API provider name (e.g. openai, anthropic, stripe).'}, 'expiresAt': {'type': 'string', 'description': 'Optional ISO-8601 key expiration timestamp.'}, 'rateLimit': {'type': 'object', 'required': ['requests', 'window'], 'properties': {'window': {'type': 'string', 'description': "Rate-limit window (e.g. '1m', '1h', '1d')."}, 'requests': {'type': 'integer', 'description': 'Maximum requests allowed in the window.', 'exclusiveMinimum': 0}}, 'description': 'Optional per-credential broker rate limit.', 'additionalProperties': False}, 'authHeader': {'type': 'string', 'description': "Header the broker injects the key into (default 'Authorization')."}, 'authScheme': {'type': 'string', 'description': "Value prefix before the key (default 'Bearer '; set '' for a raw key, e.g. x-api-key)."}, 'allowedHosts': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hosts this key may be brokered to via vault_credential_use. Fail-closed: with no hosts the broker refuses every call. After creation only a master key may change this list.'}}, 'description': 'Optional updated API key payload. Changing allowedHosts requires a master key.', 'additionalProperties': False}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Custom field name.'}, 'type': {'type': 'string', 'description': 'Optional custom field type.'}, 'value': {'type': 'string', 'description': 'Optional custom field value.'}, 'linkedId': {'type': 'string', 'description': 'Optional linked field identifier.'}}, 'additionalProperties': False}, 'description': 'Optional updated custom fields.'}, 'agentId': {'type': 'string', 'description': 'Agent ID that owns the credential. Optional when using an agent-bound credential.'}, 'favorite': {'type': 'boolean', 'description': 'Optional updated favorite flag.'}, 'identity': {'type': 'object', 'properties': {'ssn': {'type': 'string', 'description': 'Optional SSN or national ID.'}, 'city': {'type': 'string', 'description': 'Optional city.'}, 'email': {'type': 'string', 'description': 'Optional identity email.'}, 'phone': {'type': 'string', 'description': 'Optional identity phone.'}, 'state': {'type': 'string', 'description': 'Optional state or province.'}, 'title': {'type': 'string', 'description': 'Optional identity title.'}, 'company': {'type': 'string', 'description': 'Optional company name.'}, 'country': {'type': 'string', 'description': 'Optional country.'}, 'address1': {'type': 'string', 'description': 'Optional address line 1.'}, 'address2': {'type': 'string', 'description': 'Optional address line 2.'}, 'address3': {'type': 'string', 'description': 'Optional address line 3.'}, 'lastName': {'type': 'string', 'description': 'Optional last name.'}, 'username': {'type': 'string', 'description': 'Optional username value.'}, 'firstName': {'type': 'string', 'description': 'Optional first name.'}, 'middleName': {'type': 'string', 'description': 'Optional middle name.'}, 'postalCode': {'type': 'string', 'description': 'Optional postal code.'}, 'licenseNumber': {'type': 'string', 'description': 'Optional license number.'}, 'passportNumber': {'type': 'string', 'description': 'Optional passport number.'}}, 'description': 'Optional updated identity payload.', 'additionalProperties': False}, 'oauthToken': {'type': 'object', 'required': ['provider', 'accessToken', 'refreshToken', 'tokenEndpoint', 'clientId', 'scopes', 'expiresAt'], 'properties': {'scopes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'OAuth scopes granted to this token.'}, 'clientId': {'type': 'string', 'description': 'OAuth client ID.'}, 'provider': {'type': 'string', 'description': 'OAuth provider name (e.g. google, github, slack).'}, 'expiresAt': {'type': 'string', 'description': 'ISO-8601 token expiration timestamp.'}, 'accessToken': {'type': 'string', 'description': 'OAuth access token. Stored encrypted.'}, 'autoRefresh': {'type': 'boolean', 'description': 'Automatically refresh before expiry (default true).'}, 'allowedHosts': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Hosts this token may be brokered to via vault_credential_use. Fail-closed: with no hosts the broker refuses every call.'}, 'clientSecret': {'type': 'string', 'description': 'Optional OAuth client secret.'}, 'refreshToken': {'type': 'string', 'description': 'OAuth refresh token. Stored encrypted; never read back.'}, 'tokenEndpoint': {'type': 'string', 'description': 'Token endpoint URL used for automatic refresh.'}}, 'description': 'Optional updated OAuth token payload.', 'additionalProperties': False}, 'certificate': {'type': 'object', 'required': ['format', 'certificate', 'privateKey', 'expiresAt'], 'properties': {'chain': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional certificate chain.'}, 'format': {'enum': ['pem', 'p12', 'jks'], 'type': 'string', 'description': 'Certificate format.'}, 'expiresAt': {'type': 'string', 'description': 'ISO-8601 certificate expiration timestamp.'}, 'privateKey': {'type': 'string', 'description': 'Private key. Stored encrypted; always read back masked.'}, 'certificate': {'type': 'string', 'description': 'Certificate content. Stored encrypted.'}}, 'description': 'Optional updated certificate payload.', 'additionalProperties': False}, 'revealPolicy': {'enum': ['standard', 'brokered'], 'type': 'string', 'description': 'Optional reveal-policy change. Upgrading standard â\x86\x92 brokered needs UPDATE access; downgrading brokered â\x86\x92 standard is master-key-only.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
vault_credential_use
Use Vault Credential
Make an outbound HTTPS call with a stored credential attached SERVER-SIDE, and get the upstream response. Use this to act with a secret (call an API, hit an authed endpoint) WITHOUT ever seeing the plaintext — the platform injects the credential on the wire. The target host must be on the credential's allowlist. Works even for `brokered` credentials that can never be revealed. Prefer this over trying to read a secret: you can use it, you cannot see it.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id', 'method', 'url'], 'properties': {'id': {'type': 'string', 'description': 'Credential ID to broker the call with.'}, 'url': {'type': 'string', 'format': 'uri', 'description': "Absolute https:// URL to call. Its host MUST be on the credential's allowlist (allowedHosts / login URIs)."}, 'body': {'type': 'string', 'description': 'Raw request body (encode JSON yourself).'}, 'method': {'enum': ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD'], 'type': 'string', 'description': 'HTTP method for the outbound call.'}, 'agentId': {'type': 'string', 'description': 'Agent ID that owns the credential. Optional when using an agent-bound credential.'}, 'headers': {'type': 'object', 'description': 'Extra request headers. Any Authorization / auth header you set is IGNORED and replaced by the real credential.', 'additionalProperties': {'type': 'string'}}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
vault_exchange_token_for_injection
Exchange Vault Token (injection)
Exchange a vtk_ vault token for the PLAINTEXT credential, to inject into a trusted client process (a CLI, the browser extension) — NOT to read it yourself. The API gates this to injector credentials: it only succeeds for a master key or a key carrying the `vault:inject` scope; a plain agent key gets 403. If you are an agent that needs to USE a secret, do NOT use this — use vault_credential_use (the server-side broker), which never reveals the secret.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['token'], 'properties': {'token': {'type': 'string', 'description': 'The vtk_ vault token to exchange.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
vault_provision
Provision Vault
Provision a credential vault for an agent. Required before vault_credential_create can be called against a freshly-created agent — without a vault, credentials have nowhere to live. Idempotent: returns the existing vault if one already exists. Master-key only.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['agentId'], 'properties': {'agentId': {'type': 'string', 'description': 'Agent ID to provision a vault for. Master-key only.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
voice_list
List AI Voices
List available AI voices for placing phone calls. The catalog is multilingual — filter by language or gender. Each voice includes descriptive metadata and a vendor-neutral audio preview URL (sampleUrl), plus the voice ID needed for phone_call_create.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'gender': {'enum': ['male', 'female', 'neutral'], 'type': 'string', 'description': 'Filter by voice gender.'}, 'language': {'type': 'string', 'description': "Filter by BASE language code â\x80\x94 the bare two-letter code, e.g. 'en' or 'fr'. Matching is a prefix test against the catalog's own base codes, so a region tag like 'en-US' matches nothing. Call without a filter to see which languages the catalog currently carries."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {}}, 'total': {'type': 'number'}, 'cursor': {'type': ['string', 'null']}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}}, 'additionalProperties': True}
webhook_delete
Delete Webhook
Delete a webhook subscription by ID. Permanently removes the configuration and stops future deliveries. To temporarily pause without deleting, use webhook_set with { id, active: false }.
Destructif
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Webhook ID'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string'}, 'deleted': {'type': 'boolean'}}, 'additionalProperties': True}
webhook_get
Get Webhook
Get a webhook subscription by ID. Returns the full configuration (URL, subscribed events, active state, description).
Lecture seule
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Webhook ID'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
webhook_list
List Webhooks
List webhook subscriptions for the calling org with cursor pagination. Use to enumerate existing webhooks before set/delete operations.
Lecture seule
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Maximum number of webhooks to return (1-100)', 'exclusiveMinimum': 0}, 'cursor': {'type': 'string', 'description': 'Pagination cursor from a previous list call'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'number'}, 'items': {'type': 'array', 'items': {}}, 'total': {'type': 'number'}, 'cursor': {'type': ['string', 'null']}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}}, 'additionalProperties': True}
webhook_set
Set Webhook
Create or update a webhook subscription (upsert). If `id` is provided the call updates that webhook (PUT). If omitted it creates a new one (POST) — `url` and `events` are then required. Use this for declarative 'ensure webhook X exists' workflows.
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'id': {'type': 'string', 'description': 'Webhook ID. Present â\x86\x92 updates that webhook (PUT). Omitted â\x86\x92 creates a new one (POST).'}, 'url': {'type': 'string', 'format': 'uri', 'description': 'HTTPS endpoint URL that will receive event payloads. Required on create; optional on update.'}, 'active': {'type': 'boolean', 'description': 'Whether the webhook is active. Defaults to true on create.'}, 'events': {'type': 'array', 'items': {'type': 'string'}, 'description': "List of event types to subscribe to (e.g. 'message.received', 'email.bounced'). Required on create; optional on update."}, 'authConfig': {'anyOf': [{'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'none'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'token'], 'properties': {'type': {'type': 'string', 'const': 'bearer'}, 'token': {'type': 'string', 'maxLength': 4096, 'minLength': 1, 'description': 'Sent as `Authorization: Bearer <token>`'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'username', 'password'], 'properties': {'type': {'type': 'string', 'const': 'basic'}, 'password': {'type': 'string', 'maxLength': 1024, 'minLength': 1}, 'username': {'type': 'string', 'maxLength': 256, 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'headerName', 'value'], 'properties': {'type': {'type': 'string', 'const': 'custom_header'}, 'value': {'type': 'string', 'maxLength': 4096, 'minLength': 1}, 'headerName': {'type': 'string', 'pattern': "^[A-Za-z0-9!#$%&'*+.^_`|~-]+$", 'maxLength': 128, 'minLength': 1, 'description': 'Custom header name, e.g. `X-My-Secret`'}}, 'additionalProperties': False}], 'description': "Auth the platform presents to your endpoint IN ADDITION to the always-on X-Anima-Signature HMAC â\x80\x94 a bearer token, HTTP basic, or a custom header. Pass { type: 'none' } to remove it."}, 'description': {'type': 'string', 'description': 'Optional human-readable label'}, 'maxAttempts': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'Max delivery attempts before dead-lettering (default 3)'}, 'rateLimitPerMinute': {'type': 'integer', 'maximum': 100000, 'description': 'Max deliveries per minute to this endpoint; omit for unlimited', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
webhook_test
Test Webhook
Send a test event payload to a webhook to verify the endpoint is reachable and signature verification works. Returns a deliveryId you can correlate with your endpoint's logs.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Webhook ID to send a test delivery to'}, 'event': {'type': 'string', 'description': "Event type to simulate in the test payload (e.g. 'message.received'). Defaults to 'message.received'."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': True}
Ajouté
extension_connect
17 September 2026 12:40
Ajouté
vault_credential_request_fill
17 September 2026 12:40
Ajouté
vault_credential_request_cancel
17 September 2026 12:40
Ajouté
vault_credential_request_status
17 September 2026 12:40
Ajouté
vault_credential_request_create
17 September 2026 12:40
Ajouté
vault_credential_get_totp
17 September 2026 12:40
Ajouté
vault_credential_search
17 September 2026 12:40
Ajouté
vault_credential_use
17 September 2026 12:40
Ajouté
vault_exchange_token_for_injection
17 September 2026 12:40
Ajouté
vault_credential_delete
17 September 2026 12:40
Ajouté
vault_credential_update
17 September 2026 12:40
Ajouté
vault_credential_create
17 September 2026 12:40
Ajouté
vault_credential_get
17 September 2026 12:40
Ajouté
vault_credential_list
17 September 2026 12:40
Ajouté
vault_provision
17 September 2026 12:40
Ajouté
webhook_test
17 September 2026 12:40
Ajouté
webhook_delete
17 September 2026 12:40
Ajouté
webhook_set
17 September 2026 12:40
Ajouté
webhook_list
17 September 2026 12:40
Ajouté
webhook_get
17 September 2026 12:40
Ajouté
usage_overview
17 September 2026 12:40
Ajouté
account_overview
17 September 2026 12:40
Ajouté
voice_list
17 September 2026 12:40
Ajouté
phone_call_recording_get
17 September 2026 12:40
Ajouté
phone_call_transcript_get
17 September 2026 12:40
Ajouté
phone_call_get
17 September 2026 12:40
Ajouté
phone_call_list
17 September 2026 12:40
Ajouté
phone_call_create
17 September 2026 12:40
Ajouté
sms_send
17 September 2026 12:40
Ajouté
sms_thread_get
17 September 2026 12:40