# Quo — MCP server on mcp.ai > Connect your Quo account and use 36 tools for phone and SMS straight from your AI agent. Connect with your own API key. Quo, formerly OpenPhone, is a business phone platform for managing calls, messages, contacts, conversations, tasks, users, and webhooks. By: mcp.ai · official Page: https://mcp.ai/quo ## Connect (MCP protocol) Remote MCP endpoint (HTTP, streamable): https://api.mcp.ai/p_quo?ms=1787293560000 Add it as a custom/remote MCP connector, then authenticate when prompted. ## REST API (no MCP client required) Every tool is also a REST endpoint, authed with a workspace API key. Discover: GET https://api.mcp.ai/api/quo/_endpoints # public; lists every endpoint Call: POST https://api.mcp.ai/api/quo/ Authorization: Bearer sk_live_… # create one at https://mcp.ai/settings/api-keys Content-Type: application/json Body: { …args } → { "ok": true, "tool": "", "result": { … } } ## Developer docs How to use (MCP or REST), markdown: https://mcp.ai/quo/skill.md Postman collection (v2.1): https://mcp.ai/quo/postman.json ## Tools - quo_create_contact(role?: string, emails?: object[], source?: string, company?: string, last_name?: string, first_name: string, source_url?: string, external_id?: string, custom_fields?: object[], phone_numbers?: object[], created_by_user_id?: string) — Create a Quo contact with standard fields, optional custom fields, and external source metadata. - quo_create_task(title: string, due_date?: string, activity_id?: string, assigned_to?: string, description: string, conversation_id?: string, phone_number_id?: string) — Create a task linked to exactly one phone number, conversation, or activity. - quo_create_webhook(url: string, label?: string, events: string[], status?: string, resource_ids?: string[]) — Create one unified webhook subscription for selected Quo events and return its signing secret, which must be stored securely. - quo_delete_contact(contact_id: string) — Permanently delete one Quo contact by ID. - quo_delete_task(task_id: string) — Permanently delete one Quo task by ID. - quo_delete_webhook(webhook_id: string) — Permanently delete one unified Quo webhook and revoke its signing secret. - quo_get_call(call_id: string) — Get one call and its routing, participants, status, and timing details by ID. - quo_get_call_voicemail(call_id: string) — Get voicemail processing status, transcript, duration, and recording URL for a Quo call. Returns a not-found error when the call has no voicemail. - quo_get_contact(contact_id: string) — Get one contact with default and custom fields by Quo contact ID. - quo_get_message(message_id: string) — Get one message by Quo message ID, including its content, related IDs, participants, delivery status, and timestamps. - quo_get_phone_number(phone_number_id: string) — Get one Quo phone number and its assignments and restrictions by ID. - quo_get_task(task_id: string) — Get one task and its current links, assignee, due date, and completion state. - quo_get_user(user_id: string) — Get one workspace user by Quo user ID. - quo_get_webhook(webhook_id: string) — Get one unified Quo webhook by its numeric ID. - quo_get_webhook_delivery(event_id: string, webhook_id: string) — Get the payload and attempt details for one Quo webhook delivery event. - quo_list_call_recordings(call_id: string) — List recording segments for a Quo call in chronological order. - quo_list_calls(limit?: integer, cursor?: string, user_id?: string, participant: string[], created_after?: string, created_before?: string, phone_number_id: string) — List calls between a Quo number and one external participant with optional user and creation-time filters. Returns one page and a cursor for the next. - quo_list_contact_custom_fields() — List the workspace's contact custom-field definitions for constructing valid contact values. - quo_list_contacts(limit?: integer, cursor?: string, sources?: string[], external_ids?: string[]) — List contacts, optionally filtered by external IDs or source, with stable-v1 phone and custom fields. Returns one page and a cursor for the next page. - quo_list_conversations(limit?: integer, cursor?: string, user_id?: string, created_after?: string, phone_numbers?: string[], updated_after?: string, created_before?: string, updated_before?: string, exclude_inactive?: boolean) — List inbox conversations with optional phone-number, user, creation-time, update-time, and inactive-state filters. Returns one page and a cursor for the next page. - quo_list_messages(limit?: integer, cursor?: string, user_id?: string, participants: string[], created_after?: string, created_before?: string, phone_number_id: string) — List messages exchanged by a Quo phone number and one or more participants, optionally filtered by sender or creation time. Returns one page and a cursor for the next page. - quo_list_phone_numbers(user_id?: string) — List Quo phone numbers and their assigned users, calling restrictions, and messaging restrictions. - quo_list_tasks(limit?: integer, cursor?: string) — List workspace tasks with cursor-controlled pagination. - quo_list_users(limit?: integer, cursor?: string) — List workspace users and return one cursor-controlled page. - quo_list_webhook_deliveries(limit?: integer, cursor?: string, status?: string, webhook_id: string, event_types?: string[], created_after?: string, created_before?: string) — List one page of delivery events for a unified Quo webhook, optionally filtered by status, event type, or dispatch time. - quo_list_webhooks() — List unified Quo webhooks across call, message, contact, task, and integration event families. - quo_send_message(to: string[], from: string, content: string, user_id?: string) — Send an irreversible text message from a Quo number to one or more recipients. This consumes messaging credits and may require carrier registration. - quo_send_message_and_mark_conversation_done(to: string[], from: string, content: string, user_id?: string) — Send an irreversible text message from a Quo number and move the resulting inbox conversation to Done. This consumes messaging credits and may require carrier registration. - quo_set_conversation_status(status: string, conversation_id: string) — Set a Quo conversation to read, done, or open. - quo_set_task_assignee(task_id: string, user_id: string, operation: string) — Assign or unassign a Quo user on a task. - quo_set_task_completion(state: string, task_id: string) — Complete or reopen a Quo task. - quo_set_task_conversation_link(task_id: string, operation: string, conversation_id: string) — Link or unlink a Quo task and conversation. - quo_set_task_due_date(task_id: string, due_date?: string, operation: string) — Set or remove a Quo task's due date. - quo_update_contact(role?: string, emails?: object[], source?: string, company?: string, last_name?: string, contact_id: string, first_name?: string, source_url?: string, external_id?: string, custom_fields?: object[], phone_numbers?: object[]) — Patch selected standard, custom, or source fields on an existing Quo contact. Omitted fields remain unchanged, while explicit null clears a field. - quo_update_task(title: string, task_id: string, description: string) — Replace both the title and description of an existing Quo task. Both fields are required because Quo treats this as a full textual update. - quo_update_webhook(url?: string, label?: string, events?: string[], status?: string, webhook_id: string, resource_ids?: string[]) — Partially update a unified Quo webhook. Only explicitly supplied fields are changed; explicit null clears resource filters or the label where supported. ## Example prompts - "What can I do in Quo?" - "Show me a summary of my Quo account" ## Links Docs: https://mcp.ai/docs/mcps/quo Website: https://mcp.ai/mcps/quo