Integrate Quo MCP server into your Slack workspace for instant access to your AI agent.
Tools that your AI agent can use through this MCP server to interact with Quo
Update an existing task's title and description by ID. NOTE: the OpenPhone update endpoint only modifies title and description (both required on every update); due date and assignee are managed via other endpoints. Use List Tasks to find task IDs. Example: call with taskId="TK123abc", title="Follow up (urgent)", description="Customer asked about pricing tiers." → updates both fields and returns the updated task record. See the documentation
Update the status of an OpenPhone conversation. Set conversationStatus to done, open, or read; the action routes to the corresponding OpenPhone endpoint (mark-as-done, mark-as-open, mark-as-read). Use List Conversations or List Messages to find the conversationId. Example: call with conversationId="CN123abc", conversationStatus="done" → marks the conversation done and returns the updated conversation. See the documentation
Update one or more fields on an existing contact. Only the fields you provide are changed; omitted fields are left as-is. Run List Contacts to find a contactId. Example: call with contactId from List Contacts and company="Acme Corp" → updates just the company field and returns the updated contact record. See the documentation
Send a text message from one of your OpenPhone numbers to a recipient. Use List Phone Numbers (or List From Options) to find a valid from value. Example: call with from="PN123abc", to="+15551234567", content="Hi, following up on your request." → sends the message and returns the created message record. See the documentation
Retrieve a paginated list of users in your OpenPhone workspace. Use this to find a user's ID before assigning a task or filtering calls/messages/conversations by userId. Example: call with no inputs → returns up to 10 users, each with id, name, and email. See the documentation
Retrieve a paginated list of tasks, optionally filtered by conversation. Use List Conversations or List Messages to find a conversationId. Example: call with no filters → returns up to 50 recent tasks across the organization. Use fields to return only specific fields per task. See the documentation
Retrieve the list of phone numbers and users associated with your OpenPhone workspace. Example: call with no inputs → returns each phone number's id, number, name, and the users assigned to it. See the documentation
Retrieve a paginated list of messages from OpenPhone, scoped to a phone number and a participant — both are required by the API. Optionally narrow further to one conversation with conversationId. Example: call with phoneNumberId="PN123abc", participants=["+15551234567"] → returns up to 10 recent messages between that number and that participant. Use fields to return only specific fields per message. See the documentation
List your OpenPhone phone numbers as selectable sender options, for use as the from value in Send a Text Message. Example: call with no inputs → returns a list of {label, value} pairs, one per phone number, where value is the phone number ID to pass as from. See the documentation
Retrieve a paginated list of conversations. Can be filtered by user and/or phone numbers. Defaults to all conversations in the organization. Results are returned in descending order based on the most recent conversation. Example: call with no filters → returns up to 10 of the most recently active conversations. Use fields to return only specific fields per conversation. See the documentation
Retrieve a paginated list of contacts. Optionally filter by external IDs and/or sources. All contacts for the organization are returned only when neither externalIds nor sources is provided. Example: call with no filters → returns up to 10 contacts for the organization. Use fields to return only specific fields per contact. See the documentation
Retrieve a paginated list of calls from OpenPhone. Requires both a phone number ID and a participant to scope the results — the API rejects calls missing either. Use List Phone Numbers to find valid phone number IDs. Example: call with phoneNumberId="PN123abc", participants="+15551234567" → returns up to 10 recent calls between that number and that participant. Use fields to return only specific fields per call. See the documentation
Retrieve a single call by its ID, including its summary and transcript when available. Summary and transcript are fetched from OpenPhone's separate /summary and /transcript endpoints and merged into the result; they are null if OpenPhone has not yet generated them. Use List Calls to find call IDs. Example: call with callId="AC123abc" → returns the call record with summary and transcript fields merged in. See the documentation
Permanently delete a task by ID. This cannot be undone. Use List Tasks to find task IDs. Example: call with taskId="TK123abc" → the task is removed and the response confirms deletion. See the documentation
Permanently delete a contact by ID. This cannot be undone. Example: call with contactId from List Contacts → the contact is removed and the response confirms deletion. See the documentation
Create a task tied to an OpenPhone conversation. Example: call with conversationId="CN123abc", title="Follow up with customer re: onboarding", description="Customer asked about pricing tiers." → returns the created task record, including its id. Use List Conversations or List Messages to find the conversationId. See the documentation
Create a new contact in OpenPhone. Example: call with firstName="Jane", lastName="Doe", phoneNumbers=[{"name": "Mobile", "value": "+15551234567"}] → returns the created contact record, including its id. See the documentation