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

# Supported tools

> Review the current tools, limits, and usage patterns available through Quo MCP.

Quo MCP currently exposes the same complete toolset to Claude, ChatGPT, and other connected MCP clients. A client can call several tools in one task—for example, discover an inbox, fetch its recent messages, and create follow-up tasks from the results.

Tool names and parameters are stable identifiers. How you select or approve a tool call depends on your MCP client.

## Workspace discovery

| Tool | What it does | Key notes |
| - | - | - |
| `list-users` | Lists workspace members with their ID, name, email, and role. | Supports `pageToken`; 1–50 results per page. Use the returned `US…` ID in tools that accept a `userId`. |
| `list-inboxes` | Lists Quo phone numbers with their phone-number ID, E.164 number, inbox name, and assigned users. | Optionally filter by `userId`. Use this before a fetch or send tool when you do not know the inbox number. |

Example prompts:

* “Which Quo numbers can I use, and who is assigned to each one?”
* “Find Jamie's user ID and show the inboxes assigned to them.”

## Messages and conversations

| Tool | What it does | Key notes |
| - | - | - |
| `fetch-messages` | Fetches message history for an inbox, either for one contact or across the inbox. | Returns message text and any MMS attachments with their media type and URL. Filter by participant, date range, sending team member, or conversation status. See [Fetch modes and pagination](#fetch-modes-and-pagination). |
| `send-message` | Sends an SMS from a Quo inbox to one recipient. | The send is irreversible. The recipient must be a valid phone number; international E.164 numbers are supported. |
| `send-group-message` | Starts one shared SMS thread with 2–10 recipients. | Every recipient can see every other recipient's phone number and all replies. |
| `send-bulk-messages` | Sends SMS to 2–40 recipients as separate one-to-one messages, with identical or recipient-specific content. | Recipients do not see one another. The tool reports per-recipient failures and may partially succeed. |

### Choose the correct send tool

| Desired result | Tool | Recipients see one another? |
| - | - | - |
| Text one person | `send-message` | Not applicable |
| Put 2–10 people in one shared thread | `send-group-message` | Yes |
| Broadcast the same text privately to 2–40 people | `send-bulk-messages` | No |
| Send personalized text privately to 2–40 people | `send-bulk-messages` | No |

### Bulk message modes

`send-bulk-messages` accepts one of two input modes:

* **Same message:** Provide `to` as an array of 2–40 phone numbers and `content` as the message sent to every recipient.
* **Personalized messages:** Provide `messages` as an array of 2–40 objects, each containing that recipient's `to` phone number and `content`.

Use exactly one mode per call. Do not combine `messages` with `to` or `content`, and include each recipient only once. Use `send-message` when sending to one person.

All three send tools:

* Require a `from` number that belongs to the connected Quo workspace. The tool accepts its E.164 number or `PN…` phone-number ID.
* Accept message content up to 1,600 characters.
* Use prepaid messaging credits and count as API-powered messages. See [API pricing](/docs/mdx/pricing-support/pricing-overview).
* Cannot undo or recall a message after it is sent.

<Warning>
  Confirm the sender, recipients, message content, and whether the recipients should share a thread before sending. In particular, never substitute `send-group-message` for a private broadcast.
</Warning>

Example prompts:

* “Show me yesterday's messages across the support inbox and summarize the open questions.”
* “Summarize this week's support inbox, but skip conversations we already marked done.”
* “Draft a reply to +14165550100, but ask me to approve it before sending.”
* “Send this service notice privately to these 12 customers so none of them can see the other numbers.”
* “Send each attendee their own confirmation time from this list as a private message.”

## Calls and voicemail

| Tool | What it does | Key notes |
| - | - | - |
| `fetch-call-transcripts` | Fetches completed call transcripts for a Quo inbox. | Requires the Quo Business plan and calls where transcription was enabled. Filter by participant, date range, team member, or conversation status. See [Fetch modes and pagination](#fetch-modes-and-pagination). |
| `fetch-missed-calls` | Fetches missed incoming calls and includes voicemail status, transcript, and recording URL when a voicemail exists. | Returns only incoming calls with status `missed`, `no-answer`, or `abandoned`; this filter cannot be changed. |

Voicemail processing is asynchronous. If a voicemail has an `in-progress` status, its duration, transcript, and recording URL may be empty; retry after processing completes. A missed call with no voicemail is still returned.

Call and message results include activity IDs (`AC…`). Multi-contact results can also include conversation IDs (`CN…`). Use these IDs to link a follow-up task to the exact call, message, or conversation.

Example prompts:

* “What calls did we miss yesterday, and which callers left a voicemail?”
* “Summarize this week's completed call transcripts for the sales inbox.”
* “Find Pat's call from this morning and create a task linked to that call.”

## Contacts

| Tool | What it does | Key notes |
| - | - | - |
| `list-contacts` | Lists contacts with their ID, name, company, role, email, and phone number. | Optionally filter by external IDs or sources. Supports `pageToken`; 1–50 results per page. |
| `get-contact` | Fetches one contact by ID. | Includes default fields, source metadata, and workspace custom fields. |
| `create-contact` | Creates a contact and returns its new contact ID. | `firstName` is required. Last name, company, role, email, phone number, and custom fields are optional. |
| `update-contact` | Updates an existing contact's default and custom fields. | Omit a field to leave it unchanged; pass `null` to clear it. Use `get-contact` first when the current value matters. |

Phone numbers are normalized to E.164. Email values must be valid email addresses.

<Note>
  `update-contact` only works on contacts created in Quo, through the API, or through Quo MCP. Contacts created by an integration cannot be updated — use `get-contact` to check a contact's source, and make the change in the system that created it.
</Note>

Example prompts:

* “Look up the contact with +14165550100 and show their custom fields.”
* “Create a contact for Priya Shah at Northwind, then show me the new contact ID.”
* “Clear the outdated role on this contact without changing any other field.”

### Contact notes

| Tool | What it does | Key notes |
| - | - | - |
| `list-contact-notes` | Lists a contact's notes with their ID, text, author, timestamps, and any attachment URLs. | Supports `pageToken`; 1–50 results per page. |
| `create-contact-note` | Adds a note to a contact and returns the new note ID. | Text must be 1–2,000 characters. To mention a teammate, include `@` followed by their user ID from `list-users`, such as `@USabc123`. |
| `update-contact-note` | Replaces the text of an existing note. | The new text replaces the whole note. To add to a note, include its current text. |

Adding or editing a note doesn't send anything to the contact. Notes can't be deleted through Quo MCP.

Example prompts:

* “Add a note to Priya's contact summarizing today's call, and mention Jamie so they follow up.”
* “What notes do we have on Northwind's main contact?”
* “Fix the typo in the last note on this contact.”

## Tasks

| Tool | What it does | Key notes |
| - | - | - |
| `list-tasks` | Lists workspace tasks with status, title, due date, assignee, linked record, creation time, and revision. | Supports `pageToken`; 1–100 results per page. |
| `create-task` | Creates a task linked to an inbox, conversation, or specific activity. | Title and description are required. Provide exactly one link target: `inboxPhoneNumber`, `conversationId`, or `activityId`. |
| `update-task` | Changes a task's content, assignee, due date, completion status, or conversation link. | Performs one change type per call. Call it again for each additional change. |

When creating a task, use the most specific link available:

1. Use an `activityId` (`AC…`) for one particular call or message.
2. Use a `conversationId` (`CN…`) for the whole thread with a contact.
3. Use an inbox number or `PN…` ID only when the task is not about a specific activity or conversation.

`update-task` can update the title and description together as one change. Assignment, unassignment, due-date changes, completion or reopening, and conversation linking or unlinking are separate change types.

Example prompts:

* “List the open tasks and show who each is assigned to.”
* “Create a follow-up task for tomorrow linked to this missed call and assign it to Alex.”
* “Mark task `TK…` complete.”

## Feedback

| Tool | What it does | Key notes |
| - | - | - |
| `submit-feedback` | Sends feedback about your Quo phone-line or communications experience to the Quo product team. | Requires `content` and `userConfirmed`. The client must set `userConfirmed` to `true`, and only after you explicitly ask for the feedback to be sent or accept an offer to send it. |

This tool is opt-in. A client should not run it as a routine survey or raise it in an unrelated conversation, and it should offer to send feedback at most once — after trying to help — when you ask to share feedback or hit a limitation it cannot work around. Frustration alone is not consent.

A submission cannot be edited or withdrawn, and Quo does not promise a reply. Review the summary before approving it, and keep credentials, unrelated personal details, and protected health information out of the feedback.

Example prompts:

* “Send Quo my feedback that I need to schedule a message for a future date.”
* “Yes, please pass that along to the product team.”

## Fetch modes and pagination

The fetch tools can search a specific contact deeply or discover activity across an inbox broadly.

### One contact

Set `participantPhoneNumber` to query one contact.

* `fetch-messages`, `fetch-call-transcripts`, and `fetch-missed-calls` return up to 100 matching records per page.
* If the response includes a next-page token, call the same tool with the same filters plus `pageToken`.
* A `pageToken` can be used only when `participantPhoneNumber` is set.
* One-contact queries always return that contact's full history, including conversations marked done or snoozed.

### Whole inbox

Omit `participantPhoneNumber` to discover conversations across the inbox. By default this includes conversations marked done or snoozed.

* `fetch-messages` returns up to 10 in-window messages per contact across up to 50 contacts. It flags contacts with more messages so the client can re-query that contact in one-contact mode.
* `maxResults` applies to one-contact message queries and is ignored by the whole-inbox message view.
* `fetch-messages` and `fetch-call-transcripts` accept `excludeDoneConversations`. Set it to `true` to skip conversations that are currently marked done or snoozed; it defaults to `false`, which includes every conversation. `fetch-missed-calls` does not accept this filter.
* Call tools aggregate matching calls across discovered participants, up to the requested result limit.
* If a response indicates that older conversations remain, continue discovery with the returned `conversationPageToken`.

The tool response includes the token and guidance needed for the next call. Treat page tokens as opaque and do not modify them.

## Dates, times, and phone numbers

* Pass `createdAfter`, `createdBefore`, and task due dates as ISO 8601 datetimes with `Z` or an explicit offset, such as `2026-08-21T14:00:00-04:00`.
* Fetch results use UTC timestamps. A client should convert relative requests such as “yesterday” from the user's local timezone to the corresponding UTC range, then present results in the user's timezone.
* Use E.164 for external phone numbers, such as `+14165550100`. International numbers are supported.
* When a tool accepts an inbox, use either its E.164 number or its `PN…` ID. Run `list-inboxes` to discover valid values.

## Related guidance

* [Connect to Quo MCP](/docs/2026-03-30/mcp/connect)
* [Security best practices](/docs/2026-03-30/mcp/security)
