# List Contacts

`quo_list-contacts` · Quo MCP tool · Contacts

List contacts on the connected Quo account. maxResults (1-50) is required. Supports pageToken pagination and optional externalIds/sources array filters.

## Quo Frequently Asked Questions

**What does the List Contacts tool do?**

This page documents the List Contacts tool (`quo_list-contacts`). List contacts on the connected Quo account. maxResults (1-50) is required. Supports pageToken pagination and optional externalIds/sources array filters. It is one of the Quo Contacts tools, invoked through your firm's Weave MCP connection and available to members whose access level permits it.

**What is the Quo integration?**

The Quo integration connects your firm's Quo account to Weave. Quo is a cloud phone/SMS platform. This integration exposes calls, messages, contacts, conversations, and tasks as governed MCP tools, scoped per member by access level. It groups 36 tools into 6 categories, exposed through your firm's Weave MCP connection and filtered per member by access level.

**How does my firm connect Quo to Weave?**

An admin connects Quo once for the whole firm by entering your Quo workspace API key in the Weave console. Every member then works through that single connection; there is no per-user Quo login. Your key is encrypted at rest and stays inside Weave's infrastructure.

**Do I need to install or configure anything locally?**

No. Weave is fully hosted, so there is nothing to install, run, or maintain on your own machines. After an admin connects Quo once from the console, each member simply points their AI assistant at your firm's Weave MCP endpoint, and the tools they are allowed to use appear automatically based on their access level.

**Can everyone on my team use every tool?**

No. Tools are exposed per member by access level, so each person only sees the Quo tools their role permits.

**Are changes made through these tools reversible?**

Reads are always safe. Sending a text cannot be undone, once sent it can't be recalled, and it spends the workspace's prepaid SMS credits. Deletes are irreversible: delete-contact and delete-task permanently remove the record from Quo. Most other actions can be reversed with a follow-up tool (for example reopen-task or unassign-task).

**Why can't I send a text to a US number?**

Sending SMS to US numbers requires your Quo account to have completed US Carrier Registration. That is a Quo-side prerequisite; once it is done, send-message works for US recipients.

## Related
- /integrations/quo/contacts/get-contact/
- /integrations/quo/contacts/create-contact/
- /integrations/quo/contacts/list-contact-custom-fields/

## Input

- **maxResults** `integer` (required, >= 1, <= 50) — Max contacts to return per page (1-50). Required by Quo.
- **pageToken** `string` — Opaque pagination token from a prior response's nextPageToken, to fetch the next page.
- **externalIds** `array` — Filter to contacts whose externalId is one of these values, as supplied at contact creation.
  - **[]** `string` (min length: 1)
- **sources** `array` — Filter to contacts whose source is one of these values.
  - **[]** `string` (min length: 1)

## Output

- **data** `array` (required) — The page of contacts returned.
  - **[]** `object`
    - **id** `string` (required) — Unique identifier of the contact.
    - **externalId** `string | null` (required) — Unique identifier from an external system, or null if unset.
    - **source** `string | null` (required) — How the contact was created or where it originated from, or null if unset.
    - **sourceUrl** `string | null` (required) — Link to the contact in the source system, or null if unset.
    - **defaultFields** `object` (required) — The contact's standard (non-custom) fields.
      - **company** `string | null` (required) — The contact's company name, or null if unset.
      - **emails** `array` (required) — The contact's email addresses.
        - **[]** `object`
          - **name** `string` (required) — Label for the contact's email address (may be an empty string).
          - **value** `string` (required) — The contact's email address (may be an empty string).
          - **id** `string` (required) — Unique identifier of the contact email field.
      - **firstName** `string | null` (required) — The contact's first name, or null if unset.
      - **lastName** `string | null` (required) — The contact's last name, or null if unset.
      - **phoneNumbers** `array` (required) — The contact's phone numbers.
        - **[]** `object`
          - **name** `string` (required) — Label for the contact's phone number (may be an empty string).
          - **value** `string` (required) — The contact's phone number (may be an empty string).
          - **id** `string` (required) — Unique identifier of the contact phone number field.
      - **role** `string | null` (required) — The contact's role, or null if unset.
    - **customFields** `array` (required) — The contact's custom field values.
      - **[]** `object`
        - **id** `string` — Unique identifier of the contact custom field, when present.
        - **name** `string` (required) — Name of the custom contact field.
        - **key** `string` — Identifying key of the custom contact field, when present.
        - **type** `string` (required, enum: "address", "boolean", "date", "multi-select", "number", "string", "url") — Data type of the custom field's value.
        - **value** `any` (required) — The custom field's value; shape depends on `type`.
    - **createdAt** `string` (required) — ISO 8601 timestamp the contact was created.
    - **updatedAt** `string` (required) — ISO 8601 timestamp the contact was last updated.
    - **createdByUserId** `string` (required) — Unique identifier of the user who created the contact.
- **totalItems** `integer` (required) — Total contact count across all pages, as reported by Quo. Quo documents this figure may be inaccurate.
- **nextPageToken** `string | null` (required) — Opaque token for the next page, or null when there is no further page.
