armavita-quo-mcp
armavita-quo-mcp
armavita-quo-mcp is a local-first MCP server for Quo API workflows (messaging, calls, contacts, users, phone numbers, and webhooks).
MCP transport: local
stdioRuntime: Node.js 18+
Auth:
QUO_API_KEYLicense: AGPL-3.0-only
Install
npm installRelated MCP server: AppleScript Automation MCP
Run
bash ./run.shrun.sh verifies Node/npm, installs dependencies if needed, then starts the MCP server.
Required Environment Variable
QUO_API_KEY: Quo API key used for all API calls.
Optional:
QUO_HTTP_TIMEOUT_MS: request timeout in milliseconds (default:30000).
Quick MCP Client Config
Use this pattern in your MCP client config:
{
"mcpServers": {
"armavita-quo-mcp": {
"command": "bash",
"args": ["/absolute/path/to/armavita-quo-mcp/run.sh"],
"env": {
"QUO_API_KEY": "YOUR_QUO_API_KEY"
}
}
}
}If your client launches from this folder, you can use:
{
"mcpServers": {
"armavita-quo-mcp": {
"command": "bash",
"args": ["./run.sh"],
"env": {
"QUO_API_KEY": "YOUR_QUO_API_KEY"
}
}
}
}Tool Coverage
Messages:
send_text,list_messages,get_messageConversations:
list_conversationsContacts:
create_contact,list_contacts,get_contact,update_contact,delete_contact,get_contact_custom_fieldsCalls:
list_calls,get_call,get_call_recordings,get_call_summary,get_call_transcription,get_voicemailPhone numbers:
list_phone_numbers,get_phone_numberUsers:
list_users,get_userWebhooks:
list_webhooks
Pagination
List endpoints expose Quo pagination parameters such as
maxResultsandpageToken.Preserve and pass forward returned page tokens to continue pagination.
Usage Notes
Use E.164 format for phone numbers where required (for example
+18325551234).update_contactrequires at least one field to update.API failures are returned from Quo status and response details, with secrets redacted in server error paths.
Security
Never commit real
QUO_API_KEYvalues.Keep credentials in client/server env config, not in source files.
Use separate keys for dev/staging/prod.
Docs
Scope
This repository is an OSS local MCP server.
Transport mode is local
stdioonly.Tool aliases are intentionally not exposed.
Development
Syntax check:
npm run checkStart directly:
npm startLicense
GNU Affero General Public License v3.0 (AGPLv3). See LICENSE.
Available Tools
21 toolscreate_contactC
Create a new contact in the Quo workspace.
Inputs: firstName (required), lastName, company, role, +2 more.
delete_contactA
Delete a contact by ID. THIS IS DESTRUCTIVE — use with caution.
Inputs: id (required).
get_callA
Get details of a specific call by ID, including duration, status, direction.
Inputs: callId (required).
get_call_recordingsC
Get recordings for a specific call.
Inputs: callId (required).
get_call_summaryB
Get an AI-generated summary of a call (Business/Scale plans only).
Inputs: callId (required).
get_call_transcriptionB
Get the transcription of a call (Business/Scale plans only).
Inputs: callId (required).
get_contactB
Get a specific contact by ID.
Inputs: id (required).
get_contact_custom_fieldsA
List all custom contact fields defined in the workspace (name, key, type). Useful for understanding what custom data is tracked on contacts.
Inputs: no named parameters.
get_messageC
Get a specific message by its ID.
Inputs: id (required).
get_phone_numberC
Get details of a specific phone number by ID, including users, restrictions, and forwarding settings.
Inputs: phoneNumberId (required).
get_userB
Get a specific user by ID, including their email, name, role, and picture.
Inputs: userId (required).
get_voicemailC
Get the voicemail for a call.
Inputs: callId (required).
list_callsC
List calls for a specific phone number and participant.
Inputs: phoneNumberId (required), participants (required), maxResults, createdAfter, +2 more.
list_contactsB
List contacts in the Quo workspace with optional filtering.
Inputs: maxResults, pageToken, externalIds.
list_conversationsB
List conversations, optionally filtered by phone number(s), user, or date range. Ordered by most recent activity.
Inputs: phoneNumbers, userId, createdAfter, createdBefore, +5 more.
list_messagesA
List messages for a specific phone number and conversation participant. Returns messages in chronological order with pagination.
Inputs: phoneNumberId (required), participants (required), maxResults, createdAfter, +2 more.
list_phone_numbersB
List all phone numbers in the Quo workspace, with their users and settings.
Inputs: userId.
list_usersB
List all users in the Quo workspace.
Inputs: no named parameters.
list_webhooksB
List all configured webhooks.
Inputs: no named parameters.
send_textA
Send an SMS text message from a Quo phone number to a recipient. Use E.164 format for phone numbers (e.g. +18325551234). The 'from' field can be a phone number ID (PN...) or E.164 number.
Inputs: from (required), to (required), content (required), setInboxStatus.
update_contactC
Update an existing contact by ID.
Inputs: id (required), firstName, lastName, company, +3 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 21 tools
Most tools have distinct purposes targeting specific resources like contacts, calls, messages, phone numbers, users, and webhooks, with clear action distinctions (e.g., create_contact vs. update_contact). However, some potential overlap exists between list_calls and list_conversations, as calls might be part of conversations, which could cause minor confusion for agents.
Tool names follow a highly consistent verb_noun pattern throughout, such as create_contact, list_calls, get_user, and send_text. All tools use snake_case with clear verbs (create, delete, get, list, update, send), making them predictable and easy to understand.
With 21 tools, the count is slightly high but reasonable for a comprehensive CRM/communication platform like Quo, covering contacts, calls, messages, phone numbers, users, and webhooks. It feels a bit heavy but not excessive, as each tool serves a specific function in the domain.
The tool set provides complete CRUD/lifecycle coverage for the domain, including create, get, list, update, and delete operations for contacts, calls, messages, phone numbers, users, and webhooks. There are no obvious gaps; agents can perform core workflows like managing contacts, handling calls, and sending messages without dead ends.
Maintenance
Related MCP Connectors
MCP server for SuperPhone — contacts, conversations, tags and consent-based text messages.
Official Airtable MCP server — database and operations layer for agents.
MCP server for interacting with the Supabase platform
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseAqualityCmaintenanceStdio MCP server for curated GoHighLevel API v2 coverage, enabling create, update, and delete operations on custom fields, contacts, opportunities, tags, conversations, calendars, and more, with safe guarded destructive tools requiring explicit confirmation.5621 npm2AGPL 3.0
- AlicenseAqualityDmaintenanceA local MCP server that exposes macOS automation actions (AppleScript + CLIs) as tools, enabling MCP clients on your Mac to control apps, system settings, and more.39MIT
- FlicenseAqualityCmaintenanceMCP server for Personal OS API that enables managing tasks, notes, projects, collections, reviews, and more through typed tools over stdio.66-
- AlicenseNot gradedqualityDmaintenanceA stdio-based MCP server that exposes the Orbit CPaaS API as tools, enabling sending SMS, managing campaigns, and other communication workflows through natural language in MCP clients.6 npmMIT