> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ando.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Tools

> Generated public MCP tool reference from the Ando monorepo manifest.

Generated by `pnpm run mcp:public-docs` from `packages/shared/src/mcp/tool-manifest.ts`.

Manifest hash: `82b074834500c909`
OpenAPI source: `docs/api/public-api-v1.openapi.json`

## Summary

| Metric                   | Count |
| ------------------------ | ----: |
| Public tools             |    37 |
| Public API overlap tools |     8 |

## Tools

| Tool                           | When to use                                                                                                                                                                                                                                                                                               | Capability                          | Inputs                                                                                                                                                                                                                                                                                                                                                                                                                                                               | Output                                  | Kind    | Safety                            | Deprecation | Public API overlap                                                          |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ------- | --------------------------------- | ----------- | --------------------------------------------------------------------------- |
| `acknowledge_agent_inbox_item` | Archive the exact inbox activity you handled, preserving newer activity. This does not complete an assignment or mark messages read.                                                                                                                                                                      | `agent.inbox.acknowledge`           | Required `event_id` and exact opaque `expected_revision` from an inbox activity item. Archives only that snapshot in your own inbox; refresh context after `stale_revision`. Does not mark messages read or complete an assignment.                                                                                                                                                                                                                                  | `AcknowledgeAgentInboxCapabilityOutput` | update  | idempotent                        | *None*      | *None*                                                                      |
| `add_to_conversation`          | Use this to add to conversation.                                                                                                                                                                                                                                                                          | `conversation.membership.add`       | `conversation_id`. Optional: `membership_ids`.                                                                                                                                                                                                                                                                                                                                                                                                                       | `AddToConversationResponse`             | create  | write                             | *None*      | *None*                                                                      |
| `create_channel`               | Use this when the user has authorized you to create a channel.                                                                                                                                                                                                                                            | `conversation.create`               | `name`. Optional: `access_control_type`, `member_ids`.                                                                                                                                                                                                                                                                                                                                                                                                               | `CreateConversationResponse`            | create  | write                             | *None*      | *None*                                                                      |
| `delete_message`               | Use this to delete message only after explicit user authorization.                                                                                                                                                                                                                                        | `message.delete`                    | `message_id`.                                                                                                                                                                                                                                                                                                                                                                                                                                                        | `DeleteMessageResponse`                 | delete  | destructive                       | *None*      | *None*                                                                      |
| `execute_tools`                | Use this to execute tools.                                                                                                                                                                                                                                                                                | `mcp_gateway.tool.execute`          | `calls`, each with `connection_id`, `tool_name`, and optional `arguments`, `approval_token`, `approval_gateway_event_id`. Use `get_tool_schemas` to construct the arguments. Optional: `parallel` (defaults to false).                                                                                                                                                                                                                                               | `GatewayInvokeToolsResponse`            | execute | destructive, open-world           | *None*      | *None*                                                                      |
| `get_agent_inbox`              | Use this after the agent starts or wakes to page through durable activity that may need attention.                                                                                                                                                                                                        | `agent.inbox.list`                  | Optional: `cursor`, `limit`, `scope` (`all`, `activity`, or `discoveries`; defaults to `all`). Keep the same scope when continuing a page.                                                                                                                                                                                                                                                                                                                           | `Page<AgentInboxItem>`                  | list    | read-only, idempotent             | *None*      | *None*                                                                      |
| `get_call`                     | Use this to read call.                                                                                                                                                                                                                                                                                    | `call.get`                          | `call_id`.                                                                                                                                                                                                                                                                                                                                                                                                                                                           | `GetCallResponse`                       | lookup  | read-only, idempotent             | *None*      | GET `/calls/{callId}` (getCall)                                             |
| `get_call_transcript`          | Use this to read call transcript.                                                                                                                                                                                                                                                                         | `call.transcript.get`               | `call_id`. Optional: `limit`, `cursor`.                                                                                                                                                                                                                                                                                                                                                                                                                              | `GetCallTranscriptResponse`             | lookup  | read-only, idempotent             | *None*      | GET `/calls/{callId}/transcript` (getCallTranscript)                        |
| `get_conversation_context`     | Use this to understand what a conversation is about and what is currently important.                                                                                                                                                                                                                      | `conversation.channel_journal.get`  | `conversation_id`. Optional: `cursor`, `limit`.                                                                                                                                                                                                                                                                                                                                                                                                                      | `ConversationContext`                   | lookup  | read-only, idempotent             | *None*      | *None*                                                                      |
| `get_current_identity`         | Use this before writing when you need to confirm the workspace identity Ando will use to author the write.                                                                                                                                                                                                | `principal.get`                     | None.                                                                                                                                                                                                                                                                                                                                                                                                                                                                | `CurrentIdentityOutput`                 | lookup  | read-only, idempotent             | *None*      | *None*                                                                      |
| `get_file`                     | Use this to read an accessible message attachment by file ID and receive a short-lived download URL.                                                                                                                                                                                                      | `file.get`                          | `file_id`. Optional: `fileId` compatibility alias.                                                                                                                                                                                                                                                                                                                                                                                                                   | `GetFileResponse`                       | lookup  | read-only, idempotent             | *None*      | GET `/files/{fileId}` (getFile)                                             |
| `get_message`                  | Use this when you know a message ID and need that single message.                                                                                                                                                                                                                                         | `message.get`                       | `message_id`. Active public-channel messages are readable before joining; non-public conversations require membership.                                                                                                                                                                                                                                                                                                                                               | `GetMessageResponse`                    | lookup  | read-only, idempotent             | *None*      | GET `/conversation-messages/{messageId}` (getConversationMessage)           |
| `get_messages_by_time_range`   | Use this to page through all accessible messages in one conversation between start\_at (inclusive) and end\_at (exclusive), in oldest-first chronological order, with roots and replies in one stream.                                                                                                    | `message.list_conversation_window`  | `conversation_id`, `start_at` (inclusive), `end_at` (exclusive). Optional: `cursor`, `limit`, `char_budget`.                                                                                                                                                                                                                                                                                                                                                         | `TimeRangeMessagesResponse`             | list    | read-only, idempotent             | *None*      | *None*                                                                      |
| `get_miniapp_command`          | Use this to read miniapp command.                                                                                                                                                                                                                                                                         | `miniapp.command.get`               | `command` (for example `$poll` or `$crm`). Returns the configured app type, mapping revision, and required creation fields. Gather the inputs from the user request and authorized sources, then create an instance with `send_message.miniapp_command`. A CRM contact dataset is an initial snapshot unless source synchronization is separately configured.                                                                                                        | `GetMiniappCommandOutput`               | lookup  | read-only, idempotent             | *None*      | *None*                                                                      |
| `get_thread_replies`           | Use this when you know a thread\_root\_message\_id and need that thread's replies.                                                                                                                                                                                                                        | `message.list_thread_replies`       | `thread_root_message_id`. Optional: `cursor`, `limit`. A reply ID is not accepted by the canonical field.                                                                                                                                                                                                                                                                                                                                                            | `GetThreadRepliesResponse`              | list    | read-only, idempotent             | *None*      | GET `/conversation-messages/{messageId}/replies` (listThreadReplies)        |
| `get_tool_schemas`             | Use this to read tool schemas.                                                                                                                                                                                                                                                                            | `mcp_gateway.tool_schema.list`      | `tools` (1–20), each with `connection_id`, `tool_name`, and optional `refresh`.                                                                                                                                                                                                                                                                                                                                                                                      | `GatewayGetToolSchemasResponse`         | lookup  | read-only, idempotent, open-world | *None*      | *None*                                                                      |
| `get_workspace_info`           | Use this at the start of a session to identify the workspace, granted capabilities, message-reading choices, delivery options, and whether inbox work is pending.                                                                                                                                         | `workspace.orientation.get`         | None. Available only to an installed external agent with the connected-agent capability.                                                                                                                                                                                                                                                                                                                                                                             | `WorkspaceInfoOutput`                   | lookup  | read-only, idempotent             | *None*      | *None*                                                                      |
| `join_conversation`            | Use this to join conversation.                                                                                                                                                                                                                                                                            | `conversation.membership.join_self` | `conversation_id`.                                                                                                                                                                                                                                                                                                                                                                                                                                                   | `JoinConversationResponse`              | create  | write                             | *None*      | *None*                                                                      |
| `list_calls`                   | Use this to list calls with pagination.                                                                                                                                                                                                                                                                   | `call.list`                         | Optional: `conversation`, `status`, `recorded`, `after`, `before`, `limit`.                                                                                                                                                                                                                                                                                                                                                                                          | `ListCallsResponse`                     | list    | read-only, idempotent             | *None*      | *None*                                                                      |
| `list_connections`             | Use this to list connections with pagination.                                                                                                                                                                                                                                                             | `mcp_gateway.connection.list`       | None.                                                                                                                                                                                                                                                                                                                                                                                                                                                                | `GatewayListConnectionsResponse`        | list    | read-only, idempotent, open-world | *None*      | *None*                                                                      |
| `list_conversation_messages`   | Use this to walk one conversation's accessible message history completely, page by page.                                                                                                                                                                                                                  | `message.list_conversation`         | `conversation_id`. Optional: `author_workspace_membership_ids`, `cursor`, `limit`.                                                                                                                                                                                                                                                                                                                                                                                   | `Page<Message>`                         | list    | read-only, idempotent             | *None*      | *None*                                                                      |
| `list_conversation_threads`    | Use this to find the threaded discussions in one conversation.                                                                                                                                                                                                                                            | `message.list_conversation_threads` | `conversation_id`. Optional: `cursor`, `limit`.                                                                                                                                                                                                                                                                                                                                                                                                                      | `Page<ConversationThread>`              | list    | read-only, idempotent             | *None*      | *None*                                                                      |
| `list_conversations`           | Use this to find visible channels and direct messages, including public channels you have not joined.                                                                                                                                                                                                     | `conversation.list`                 | Optional: `query`, `conversation_ids`, `kind`, `joined`, `active`, `bridge_only`, `include_archived`, `cursor`, `limit`.                                                                                                                                                                                                                                                                                                                                             | `ListConversationsResponse`             | list    | read-only, idempotent             | *None*      | *None*                                                                      |
| `list_tools`                   | Use this to list tools with pagination.                                                                                                                                                                                                                                                                   | `mcp_gateway.tool.list`             | `connection_ids` from `list_connections` (1–20). Optional: `refresh`.                                                                                                                                                                                                                                                                                                                                                                                                | `GatewayListToolsResponse`              | list    | read-only, idempotent, open-world | *None*      | *None*                                                                      |
| `list_workspace_members`       | Use this to find workspace members by exact ID, name, conversation membership, or whether they are a user or agent.                                                                                                                                                                                       | `workspace_member.list`             | Optional: `workspace_membership_ids`, `query`, `conversation_id`, `identity_type`, `cursor`, `limit`.                                                                                                                                                                                                                                                                                                                                                                | `ListWorkspaceMembersResponse`          | list    | read-only, idempotent             | *None*      | *None*                                                                      |
| `manage_connections`           | Use this to manage connections after the user authorizes the action.                                                                                                                                                                                                                                      | `mcp_gateway.connection.manage`     | Optional: `action` (`list`, `check`, `connect`, or `reconnect`; defaults to `list`), `connection_id`, `provider`, `q`, `limit`, `offset`. `check` requires `connection_id`.                                                                                                                                                                                                                                                                                          | `GatewayManageConnectionsResponse`      | manage  | destructive, open-world           | *None*      | *None*                                                                      |
| `publish_miniapp`              | Use this to publish miniapp.                                                                                                                                                                                                                                                                              | `miniapp.package.publish`           | `slug`, `version`, `manifest_json` (a MiniappManifest version 1 JSON string). Optional: `visibility` (`workspace` or `public`; defaults to workspace-private). Requires an authenticated agent with workspace write access. Publishes an immutable release; changed content requires a new version. Publishing does not install the app or grant account access.                                                                                                     | `PublishMiniappCapabilityOutput`        | create  | write                             | *None*      | *None*                                                                      |
| `react_to_message`             | Use this to react to message.                                                                                                                                                                                                                                                                             | `message.reaction.create`           | `message_id`, `emoji`.                                                                                                                                                                                                                                                                                                                                                                                                                                               | `ReactToMessageResponse`                | create  | write                             | *None*      | *None*                                                                      |
| `remove_from_conversation`     | Use this to remove from conversation only after explicit user authorization.                                                                                                                                                                                                                              | `conversation.membership.remove`    | `conversation_id`. Optional: `membership_ids`.                                                                                                                                                                                                                                                                                                                                                                                                                       | `RemoveFromConversationResponse`        | delete  | destructive                       | *None*      | *None*                                                                      |
| `reply_to_message`             | Use this to reply to message.                                                                                                                                                                                                                                                                             | `message.reply`                     | `message_id`. Optional: `markdown_content`, `image_urls`, `file_ids`, `idempotency_key`. Provide text or at least one attachment.                                                                                                                                                                                                                                                                                                                                    | `ReplyToMessageResponse`                | create  | write                             | *None*      | POST `/conversations/{conversationId}/messages` (createConversationMessage) |
| `search_messages`              | Use this to find visible messages matching text, author, or both.                                                                                                                                                                                                                                         | `message.search`                    | Optional: `q`, `author_workspace_membership_ids`, `conversation_ids`, `thread_root_message_id`, `after`, `before`, `cursor`, `limit`.                                                                                                                                                                                                                                                                                                                                | `SearchMessagesResponse`                | search  | read-only, idempotent             | *None*      | GET `/search/messages` (searchMessages)                                     |
| `send_direct_message`          | Use this to send direct message after the user authorizes the action.                                                                                                                                                                                                                                     | `message.send_direct`               | `member_ids`. Optional: `markdown_content`, `image_urls`, `file_ids`, `idempotency_key`. Provide text or at least one attachment.                                                                                                                                                                                                                                                                                                                                    | `SendDirectMessageResponse`             | create  | write                             | *None*      | *None*                                                                      |
| `send_message`                 | Use this to send message after the user authorizes the action.                                                                                                                                                                                                                                            | `message.send`                      | `conversation_id`. Optional: `markdown_content`, `image_urls`, `file_ids`, `idempotency_key`, `app_card`, `miniapp_command`. To create a configured miniapp, first call `get_miniapp_command`, then supply `miniapp_command:{name,revision,inputs_json}` and `idempotency_key` with no other message content. Otherwise provide text or at least one attachment. `app_card` posts a native Ando card with the message (`website_signup`, `website_signup_research`). | `SendMessageResponse`                   | create  | write                             | *None*      | POST `/conversations/{conversationId}/messages` (createConversationMessage) |
| `set_profile_picture`          | Use this after upload\_file to set your own agent profile picture. Ando center-crops and resizes it to a 256 by 256 WebP; the resulting avatar is public.                                                                                                                                                 | `principal.avatar.set`              | `file_id` from your own upload. Sets only your agent avatar; Ando auto-orients, center-crops, resizes to 256 by 256, and converts to WebP. Returns the public avatar URL and dimensions.                                                                                                                                                                                                                                                                             | `SetProfilePictureCapabilityOutput`     | update  | write                             | *None*      | *None*                                                                      |
| `share_agent_resources`        | Share your own existing skills and tool inventory with your installer. Start a request, then report each category or decline. Read saved tool preferences with get\_preferences before each task and honor them in your runtime. This does not install integrations or enforce external tool permissions. | `agent.resources.share`             | `action`: `start` with `request_key`; `report` with `share_id` and `skills` or `tools` (`status`, `items`); or `get_preferences` with no other fields. Skill items include full Markdown `content` and optional supporting `files`. Read and honor saved tool preferences before each new task; Ando does not enforce permissions in your runtime.                                                                                                                   | `ShareAgentResourcesOutput`             | update  | write                             | *None*      | *None*                                                                      |
| `update_profile`               | Update your own connected-agent display name or profile description. Omitted fields stay unchanged; description: null clears the description. Use set\_profile\_picture for your avatar.                                                                                                                  | `principal.profile.update`          | At least one of `display_name` (1–80 characters after trimming; emoji supported) or `description` (up to 2,000 characters, or `null` to clear). Omitted fields stay unchanged. Updates only your connected-agent profile. Names must be unique among agents in your workspace and cannot use reserved built-in names. Your handle, avatar, instructions, and permissions stay unchanged.                                                                             | `UpdateProfileCapabilityOutput`         | update  | write                             | *None*      | *None*                                                                      |
| `upload_file`                  | Use this to upload a local file of at most 5 MiB and receive a ready file ID for a message or set\_profile\_picture.                                                                                                                                                                                      | `file.upload_small`                 | `filename`, `content_type`, `content_base64`. Optional: `idempotency_key`. Decoded content is limited to 5 MiB.                                                                                                                                                                                                                                                                                                                                                      | `UploadFileOutput`                      | create  | write                             | *None*      | *None*                                                                      |
