> ## 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.

# MCP Public 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: `b0fc4d521e31b5d8`
OpenAPI source: `docs/api/public-api-v1.openapi.json`

## Summary

| Metric                   | Count |
| ------------------------ | ----: |
| Public tools             |    32 |
| Public API overlap tools |    17 |

## Tools

| Tool                        | Capability                          | Inputs                                                                                 | Kind   | Safety                | Deprecation                    | Public API overlap                                                          |
| --------------------------- | ----------------------------------- | -------------------------------------------------------------------------------------- | ------ | --------------------- | ------------------------------ | --------------------------------------------------------------------------- |
| `add_to_conversation`       | `conversation.membership.add`       | `conversation_id`. Optional: `membership_ids`.                                         | create | write                 | *None*                         | *None*                                                                      |
| `create_conversation`       | `conversation.create`               | `name`. Optional: `access_control_type`, `member_ids`.                                 | create | write                 | *None*                         | *None*                                                                      |
| `delete_message`            | `message.delete`                    | `message_id`.                                                                          | delete | destructive           | *None*                         | *None*                                                                      |
| `get_call`                  | `call.get`                          | `call_id`.                                                                             | lookup | read-only, idempotent | *None*                         | GET `/calls/{callId}` (getCall)                                             |
| `get_call_transcript`       | `call.transcript.get`               | `call_id`. Optional: `limit`, `cursor`.                                                | lookup | read-only, idempotent | *None*                         | GET `/calls/{callId}/transcript` (getCallTranscript)                        |
| `get_conversation_messages` | `message.list_conversation`         | `conversation_id`. Optional: `author`, `limit`, `before`.                              | list   | read-only, idempotent | *None*                         | GET `/conversations/{conversationId}/messages` (listConversationMessages)   |
| `get_conversation_threads`  | `message.list_conversation_threads` | `conversation_id`. Optional: `limit`, `before`, `after`, `replies_per_thread`.         | list   | read-only, idempotent | *None*                         | *None*                                                                      |
| `get_member`                | `workspace_member.get`              | Deprecated; use `get_workspace_member`. Required: `member_id`.                         | lookup | read-only, idempotent | Use `get_workspace_member`     | GET `/members/{memberId}` (getMember)                                       |
| `get_message`               | `message.get`                       | `message_id`.                                                                          | lookup | read-only, idempotent | *None*                         | GET `/conversation-messages/{messageId}` (getConversationMessage)           |
| `get_task`                  | `task.get`                          | `task_id`.                                                                             | lookup | read-only, idempotent | *None*                         | GET `/tasks/{taskId}` (getTask)                                             |
| `get_thread_replies`        | `message.list_thread_replies`       | `message_id`. Optional: `limit`, `after`.                                              | list   | read-only, idempotent | *None*                         | GET `/conversation-messages/{messageId}/replies` (listThreadReplies)        |
| `get_workspace_member`      | `workspace_member.get`              | `workspace_membership_id`.                                                             | lookup | read-only, idempotent | *None*                         | GET `/members/{memberId}` (getMember)                                       |
| `invite_to_workspace`       | `workspace.invite`                  | `email`.                                                                               | create | write                 | *None*                         | *None*                                                                      |
| `join_conversation`         | `conversation.membership.join_self` | `conversation_id`.                                                                     | create | write                 | *None*                         | *None*                                                                      |
| `list_calls`                | `call.list`                         | Optional: `conversation`, `status`, `recorded`, `after`, `before`, `limit`.            | list   | read-only, idempotent | *None*                         | *None*                                                                      |
| `list_conversation_members` | `conversation.members.list`         | `conversation_id`.                                                                     | list   | read-only, idempotent | *None*                         | *None*                                                                      |
| `list_conversations`        | `conversation.list`                 | Optional: `q`, `limit`.                                                                | list   | read-only, idempotent | *None*                         | *None*                                                                      |
| `list_members`              | `workspace_member.list`             | Deprecated; use `list_workspace_members`. Optional: `names`.                           | list   | read-only, idempotent | Use `list_workspace_members`   | *None*                                                                      |
| `list_public_channels`      | `conversation.channel_public.list`  | Optional: `q`, `limit`.                                                                | list   | read-only, idempotent | *None*                         | *None*                                                                      |
| `list_workspace_members`    | `workspace_member.list`             | Optional: `names`, `displayNames`.                                                     | list   | read-only, idempotent | *None*                         | *None*                                                                      |
| `react_to_message`          | `message.reaction.create`           | `message_id`, `emoji`.                                                                 | create | write                 | *None*                         | *None*                                                                      |
| `record_task_update`        | `task.update.record`                | `task_id`, `entry`. Optional: `expected_state_version`, `task_patch`, `resource_ops`.  | update | write                 | *None*                         | POST `/tasks/{taskId}/updates` (recordTaskUpdate)                           |
| `remove_from_conversation`  | `conversation.membership.remove`    | `conversation_id`. Optional: `membership_ids`.                                         | delete | destructive           | *None*                         | *None*                                                                      |
| `reply_to_message`          | `message.reply`                     | `message_id`, `markdown_content`.                                                      | create | write                 | *None*                         | POST `/conversations/{conversationId}/messages` (createConversationMessage) |
| `search_calls`              | `call.search`                       | `q`.                                                                                   | search | read-only, idempotent | *None*                         | GET `/search/calls` (searchCalls)                                           |
| `search_conversations`      | `conversation.search`               | `q`.                                                                                   | search | read-only, idempotent | *None*                         | GET `/search/conversations` (searchConversations)                           |
| `search_members`            | `workspace_member.search`           | Deprecated; use `search_workspace_members`. Required: `q`.                             | search | read-only, idempotent | Use `search_workspace_members` | GET `/search/members` (searchMembers)                                       |
| `search_messages`           | `message.search`                    | `q`. Optional: `author`, `conversation`, `thread`, `after`, `before`, `mode`, `limit`. | search | read-only, idempotent | *None*                         | GET `/search/messages` (searchMessages)                                     |
| `search_tasks`              | `task.search`                       | Optional: `query`, `limit`.                                                            | search | read-only, idempotent | *None*                         | GET `/search/tasks` (searchTasks)                                           |
| `search_workspace_members`  | `workspace_member.search`           | `q`. Optional: `query`, `limit`.                                                       | search | read-only, idempotent | *None*                         | GET `/search/members` (searchMembers)                                       |
| `send_direct_message`       | `message.send_direct`               | `member_ids`, `markdown_content`.                                                      | create | write                 | *None*                         | *None*                                                                      |
| `send_message`              | `message.send`                      | `conversation_id`, `markdown_content`.                                                 | create | write                 | *None*                         | POST `/conversations/{conversationId}/messages` (createConversationMessage) |
