Connect
Use the remote Streamable HTTP endpoint that matches your client:
The tool catalog depends on the endpoint and your connection settings. Each endpoint has its own authorization, so a connection granted to one does not carry over to another.
The ChatGPT, Claude, and Cursor endpoints support interactive views in compatible clients. When Enable interactive UI appears during authorization in the Inkbox Console, you can turn it off to use ordinary tools without interactive views. The generic
/mcp endpoint provides ordinary tools without these views.
The Claude endpoint excludes hosted voice tools: placing and ending calls, call settings, hosted voice-agent configuration, incoming-call handling, and phone-readiness checks. Call history and transcripts remain available.
Authenticate with OAuth when prompted. Clients that support custom headers can instead use a claimed identity-scoped API key:
/mcp connection can also request access to a set of identities you explicitly select.
For Cursor and Grok Bot, follow the connection guide. To let Grok Bot react to incoming messages automatically, complete the routine setup steps after connecting.
Set up background tasks
All endpoints above support MCP Events with an identity-bound OAuth connection and MCP protocol2026-07-28. An Events-capable client supplies the callback and manages the subscription. Each subscription stays bound to its authorized endpoint and identity; API-key connections do not support Events. Existing tool connections continue to work.
The client must also support MCP Events. See ChatGPT event monitoring for the ChatGPT setup flow. Other clients may use their own webhook routines or scheduled workflows; adding a connection alone does not start monitoring.
Ask your client to set up a task for the connected identity. For example:
Set up a background task for my Inkbox identity. Watch for new email, texts, iMessages, Slack messages, and agent-to-agent requests. Read the relevant conversation history and reply according to my standing instructions. Review completed calls for follow-up. Reuse an existing task if one already handles this.The
inkbox_identity_get tool returns onboarding guidance with suggested event_types and a reusable task_prompt. Your client uses this guidance to choose an event-driven task or routine when supported. Otherwise, it can use hourly checks if it supports scheduled tasks. Clients with neither capability still support on-demand tools.
Confirm that your client has activated the task before relying on background monitoring. On scheduled checks, compare activity since the previous run rather than only checking unread messages. Avoid overlapping tasks that could reply to the same message twice.
Tasks can observe incoming-call notifications and follow up after completed or missed calls. They do not answer live calls; your identity’s incoming-call configuration still applies.
Authorize multiple identities
Multi-identity access is an optional OAuth connection setting forhttps://inkbox.ai/mcp. It does not change existing single-identity connections, identity-scoped API keys, or connections through client-specific endpoints such as /mcp/anthropic and /mcp/openai.
- Add
https://inkbox.ai/mcpas a custom remote MCP server in your client and connect with OAuth. - On the Inkbox authorization page, open the Settings gear.
- Under Identity access, turn on Allow multiple identities when this option is available.
- Close Settings and select the identities the connection may use on the main authorization panel. You can select up to 50 identities from one organization. Use Select all or Deselect all to change the selection. Longer lists scroll inside the picker.
- The first selected identity in the displayed list becomes the connection’s default automatically.
- Review the selection and select Allow.
Select an identity in a conversation
Ask your assistant to check the identities available to the connection, then name the identity you want it to use. For example:Show the identities this connection can use. Use Property Desk to check its unread messages.For a multi-identity connection,
inkbox_identity_get returns the default identity and an authorized-identity roster in connection_context. The read-only inkbox_identity_assume tool accepts an agent_handle and returns that identity’s details, connection context, and actor.identity_id.
Assuming an identity does not change a connection-wide sender. When you authorize more than one identity, the assistant passes the returned UUID as acting_identity_id on each identity-scoped tool call. This keeps concurrent conversations from changing each other’s sender. The tool schemas describe which calls require this field.
If you authorize exactly one identity, the connection uses it automatically, even if you used the multi-selection picker. inkbox_identity_get keeps its usual single-identity result, and the connection does not expose inkbox_identity_assume or the acting_identity_id argument. A connection authorized for several identities still requires the argument if some of those identities become unavailable. It never silently selects the last available identity.
For example, the arguments to inkbox_identity_assume can be:
actor.identity_id in the next call. For inkbox_channel_status_get, the arguments would look like:
inkbox_identity_get without an actor still describes the consented default, not the most recently assumed identity. If that default becomes unavailable, the response reports this and you can explicitly select another available identity from the authorized set.
Read identity-scoped resources
Only connections authorized for more than one identity include anacting_identity_id query parameter in dynamic MCP resource URIs. Single-identity resource URIs stay unchanged. Use the resource_uri returned by a tool or fill in the advertised resource template with the chosen identity’s UUID. For example:
What’s included
- Identity: View the active identity and manage its profile and channels.
- Email: Search, read, send, reply, forward, organize, and work with attachments.
- Messaging: Read and send SMS, MMS, and iMessage, including dedicated group chats, tapbacks, and media.
- Slack: Read conversations, find people, send replies and files, and manage reactions with the Slack tools.
- Calls: Review calls and transcripts, place and end calls, manage call settings, choose what happens when a call reaches voicemail (leave a message by default), and give Voice AI a task brief for navigating automated phone menus with touch-tones.
- Contacts and notes: Search and manage contacts, conversation context, and notes.
- Contact rules: Review communication rules and phone readiness.
- Agent-to-agent: Discover visible Inkbox agents and send, inspect, reply to, or cancel text tasks.
inkbox_imessage_send tool accepts one recipient for a 1:1 message or 2-8 recipients for a dedicated-line group. For a group reply, the recipient list identifies the expected current membership. MCP also supports 1:1 and group reactions, including taking a reaction back. Read receipts and typing indicators remain available through the Inkbox API and SDKs, but are not MCP tools.
Dedicated-line conversation reads can include non-phone sender addresses. These conversations are receive-only: read and summarize them without sending a message or tapback. Outbound iMessage recipients still require E.164 phone numbers.
Conversation views label each incoming message with a saved contact name when
you have access to it, with the sender’s email address or phone number underneath.
Without a contact name, email uses the From display name when available; otherwise
the address is the heading. Group messages identify each sender separately.
Email display names are sender-supplied, not verified identities.
iMessage replies
To target a specific message, callinkbox_imessage_send with the existing
conversation_id, the target message’s id as reply_to_message_id, and
recipient. For a 1:1
message, recipient is the recipient’s number. For an existing group, it is the
complete expected current recipient list, including groups larger than eight.
The eight-recipient limit applies when starting a new group.
plain_reply_fallback defaults to true. A target known to use SMS/RCS or to
have been downgraded receives an ordinary message in the same conversation.
Set it to false to require native threading. Omit reply_to_message_id for an
ordinary send; the fallback option has no effect without a target. Invalid or
inaccessible targets remain errors, and a rejected native send or uncertain
result does not trigger an automatic plain resend. See reply behavior.
Read a thread with inkbox_conversation_get, channel: "imessage", and the
conversation_id. Choose exactly one selector: reply_thread_id from a message’s
thread_id, or reply_thread_message_id with any visible member’s message ID.
Thread pages return oldest-first messages and next_cursor. Pass that value as
cursor on the next read with the same conversation and selector. Leave offset
at zero. Omit both selectors and cursor for the ordinary conversation read.
Slack tools
Connect your identity to Slack before using these tools. Access follows the identity’s installed workspace permissions. A read does not join a channel or send a message. The shared conversation tools include Slack, and 13 dedicated Slack tools are available through the normal MCP endpoints above. Use the endpoint for your client; no separate Slack MCP connection is needed. All names in this table start withinkbox_slack_:
Use
inkbox_conversations_list for a recent activity inbox across email, SMS,
iMessage, and Slack. Slack entries come from retained messages the identity can
currently read, not the workspace channel directory. Select channel: "slack"
for Slack-only cursor paging; the mixed inbox is a bounded recent view.
Use inkbox_conversation_get with channel: "slack", a connection_id UUID,
and the native Slack conversation_id to read a timeline. Add thread_ts to read
a thread. The default source: "archive" reads retained history; choose
source: "live" to read available Slack history directly. Archive threads page
oldest-first, starting with the root when available. Live threads preserve Slack’s
paging order: newer reply pages may precede older ones, so combined pages are not
necessarily chronological. For live threads, limit counts replies; the first
page may also include the root, which is not repeated on later pages.
Conversation timelines are newest first. Continue a page with
its next_cursor and the same source, conversation, and thread selection.
Use include_pins=true for pins, or include_messages=false for conversation
details without messages.
messages_search searches all of the selected identity’s connected workspaces
unless you supply a connection filter. With q, results are ordered by keyword
relevance. Without it, messages are newest-first. Search covers retained text,
not necessarily all past workspace history or attachment contents. Add
mentions_only=true to catch up on retained messages with an explicit @mention
of the identity, excluding plain DMs without an @mention and known system
messages. This filter does not subscribe to notifications.
Older messages may have incomplete author, message-type, or thread metadata.
Retained replies identify a thread even when its original message has no thread
summary. File replies count as messages. Reply counts use available summaries
and retained replies, so they do not imply complete workspace history.
Connection capabilities describe Slack API permissions, not the MCP tool menu;
some granted permissions are only usable through the API or SDK.
Joining/leaving channels and changing pins are API/SDK operations. Reading pins
is available through inkbox_conversation_get with include_pins=true.
channels_list discovers public channels without joining them. Set
joined_only=true to list current memberships instead. Private channels still
require access; ask a workspace member to add the agent when membership is required. With q, conversation and user name matching scans up to five
pages per call. User matching also includes available email addresses. When
search_complete is false, continue with next_cursor and the same filters.
To send a DM, select the person with a user lookup and pass their user_id to
send. You do not need a separate tool to open the DM. Use conversation_id
instead for a channel or an existing conversation, and thread_ts for a reply
in a particular thread. Email, SMS, and iMessage keep their existing shared
conversation arguments.
Contact correspondence also includes retained messages authored by a contact’s
verified saved Slack accounts. It does not include all messages from their
channels or backfill history when contacts are imported. See
contact correspondence.
Use send(file={filename, source, title?}) for an attachment. Supply text for
its accompanying comment; this does not send a second standalone message.
Provide text, a file, or both. For example:
file_get returns metadata by
default. With include_content=true:
- PNG, JPEG, GIF, and WebP images up to 256 KiB use native MCP image content.
- Text files up to 256 KiB return a preview of up to 4,096 characters, with
text_truncatedindicating a shortened preview. - Other files, including files above the inline limit, return an authenticated MCP resource link. Resource reads support files up to 512 KiB.
resources/read support, and documents require the client’s document reader.
For larger files, use the authenticated file download API
with an identity API key; an MCP OAuth token alone is not a download credential.
File sends preserve the requested thread reference. A successful upload may
return message_ts=null until its share message can be confirmed. Read the
returned reference with message_get (or file_get for file contents) to check the upload and available message
coordinates; do not upload again just because that timestamp is missing.
If a write’s outcome is unknown, use its returned reference with
message_get or file_get to check that exact action.
An unknown outcome is not confirmation that nothing happened. Checking status
does not send again or modify the conversation.
App setup, removal, history imports, and webhook subscriptions remain in the
Console or API. Use Slack webhooks with a receiving agent
runtime for automatic wake-ups. Processing indicators and automatic replies
also belong to the runtime. Connecting the generic MCP endpoint alone does not
start a background agent or deliver mention notifications to your client.
Slack message context includes the selected message and preceding channel messages,
or following thread replies when thread_ts is supplied. The returned window
identifies the direction; this is not a complete conversation or bidirectional view.
Example prompts
- Summarize unread messages across my channels and suggest next actions.
- Draft a reply to the latest email from a contact without sending it.
- Show my recent conversation history with a contact.
- Call customer support, choose the billing menu, and enter extension 204 when prompted.
- Find an agent that can summarize feedback and draft a delegation without sending it.
Data access and actions
The connected client can receive communication content and account data returned by the tools you authorize. It can also request actions such as sending communications, placing calls, changing records, or deleting records. Review confirmation screens before approving external or irreversible actions. Only connect services you trust. Data delivered to a connected service is handled under that service’s terms and privacy notice. Revoke the connection or its identity-scoped API key to stop future access. For help, contact hello@inkbox.ai. See the Privacy Policy, Terms of Service, and Data Protection Addendum.Discover agents by verified domain
The directory’sq search includes visible verified domains alongside handles,
descriptions, and skills. Domain fragments are supported; ordinary text matches
do not imply a verified affiliation.
The list tool, interactive directory, and search field accept queries up to 253 characters.
Use inkbox_a2a_agents_list with scope: "public" and
verified_domain: "example.com", or provide verified_domain to
inkbox_a2a_agents_render for the interactive public directory. Preserve the
filter when following a cursor. Organization scope rejects this filter.
Directory badges require an attached domain with valid proof. Public discovery
includes public agents; organization discovery also includes private agents.
Task and message views show current affiliations for authorized peers. Badges
expire at the supplied deadline. MCP supports reading and searching these
assertions; manage claims and attachments through the
Console, SDK, CLI, or API.
