Skip to content
Back to skills

003 Name Skill B6531b9d

ASecurity

Query your Quo (formerly OpenPhone) business phone — calls, texts, contacts, transcripts.

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 31, 2026
businessawsapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned May 31, 2026

npx -y skills add tools-only/X-Skills --skill 003-name-skill_b6531b9d --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 003 Name Skill B6531b9d?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 003 Name Skill B6531b9d
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-003-name-skill-b6531b9d/badge)](https://www.skillsdirectory.com/skills/tools-only-003-name-skill-b6531b9d)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: quo
version: 0.4.0
description:
  Quo (formerly OpenPhone) business phone system — check calls, texts, voicemails,
  missed calls, send SMS/texts, manage contacts, read call transcripts and summaries,
  get recordings. Use for anything related to the work phone or business line.
triggers:
  - quo
  - openphone
  - business phone
  - work calls
  - call transcript
  - call summary
  - text
  - SMS
  - send text
  - missed calls
  - voicemail
  - phone messages
  - work phone
  - business messages
  - who called
  - who texted
metadata: { "openclaw": { "emoji": "📞", "primaryEnv": "QUO_API_KEY" } }
---

# Quo 📞

Query your Quo (formerly OpenPhone) business phone — calls, texts, contacts,
transcripts.

## Setup

API key from my.quo.com → Settings → API. Configure via gateway under
`skills.entries.quo.apiKey`. OpenClaw injects it as `QUO_API_KEY` automatically.

## What Users Ask

- "What's my Quo number?"
- "Show recent conversations"
- "Get the transcript from that call"
- "What was the summary of my call with [person]?"
- "List my business contacts"
- "Send a text to [number]"
- "Show my recent calls with [number]"
- "Any missed calls today?"
- "Who called the office?"
- "Text [person] from my work number"
- "Check my voicemails"
- "What messages came in on the business line?"

## CLI Reference

```
{baseDir}/quo numbers                    List phone numbers
{baseDir}/quo conversations [filters]    List conversations
{baseDir}/quo contacts [--limit N]       List contacts
{baseDir}/quo custom-fields              List contact custom fields
{baseDir}/quo users                      List workspace users
{baseDir}/quo summary <callId>           Get AI call summary
{baseDir}/quo transcript <callId>        Get full dialogue transcript
{baseDir}/quo recordings <callId>        Get recording URLs
{baseDir}/quo voicemails <callId>        Get voicemail + transcript
{baseDir}/quo send --from <num> --to <num> <message>
{baseDir}/quo messages --number-id <id> --participant <phone> [--limit N]
{baseDir}/quo calls --number-id <id> --participant <phone> [--limit N] [--created-after ISO] [--created-before ISO]
{baseDir}/quo raw [METHOD] <endpoint> [json-body]
```

### Conversation Filters

```
--phone <number-or-id>    Filter by Quo phone line (repeatable)
--updated-after ISO       Conversations updated after date
--updated-before ISO      Conversations updated before date
--created-after ISO       Conversations created after date
--created-before ISO      Conversations created before date
--include-inactive        Include inactive/snoozed conversations
--limit N                 Max results (default 10)
```

## API Endpoints

Full OpenAPI spec:
https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json

| Endpoint                       | Method  | Description                                                    |
| ------------------------------ | ------- | -------------------------------------------------------------- |
| `/v1/phone-numbers`            | GET     | List phone numbers                                             |
| `/v1/conversations`            | GET     | List conversations (filterable)                                |
| `/v1/messages`                 | GET     | List messages for a conversation                               |
| `/v1/messages`                 | POST    | Send a text message                                            |
| `/v1/messages/{id}`            | GET     | Get message by ID                                              |
| `/v1/calls`                    | GET     | List calls (with date filters)                                 |
| `/v1/calls/{callId}`           | GET     | Get call by ID                                                 |
| `/v1/call-summaries/{callId}`  | GET     | AI-generated call summary                                      |
| `/v1/call-transcripts/{id}`    | GET     | Full dialogue transcript with speaker attribution              |
| `/v1/call-recordings/{callId}` | GET     | Recording URLs (MP3)                                           |
| `/v1/call-voicemails/{callId}` | GET     | Voicemail + transcript                                         |
| `/v1/contacts`                 | GET     | List contacts (paginated)                                      |
| `/v1/contacts`                 | POST    | Create a contact                                               |
| `/v1/contacts/{id}`            | GET     | Get contact by ID                                              |
| `/v1/contacts/{id}`            | PATCH   | Update contact (**replaces entire defaultFields!**)            |
| `/v1/contacts/{id}`            | DELETE  | Delete a contact                                               |
| `/v1/contact-custom-fields`    | GET     | List custom contact fields                                     |
| `/v1/users`                    | GET     | List workspace users                                           |
| `/v1/webhooks/*`               | Various | Webhook management for messages, calls, summaries, transcripts |

## Key Data Formats

### Transcript Response

Returns `dialogue[]` array with speaker-attributed entries:

```json
{
  "data": {
    "callId": "AC...",
    "dialogue": [
      {
        "content": "Hello",
        "start": 0.16,
        "end": 0.48,
        "identifier": "+15551234567",
        "userId": "US..."
      },
      {
        "content": "Hi, my name is Jane",
        "start": 1.0,
        "end": 2.5,
        "identifier": "+15559876543",
        "userId": null
      }
    ]
  }
}
```

### Contact Fields

- `defaultFields`: firstName, lastName, company, role, emails[], phoneNumbers[]
- `customFields`: Array of {key, value} pairs (keys from `/contact-custom-fields`)
- ⚠️ PATCH replaces entire `defaultFields` — always include ALL existing fields

### Custom Fields (Julianna's workspace)

- `Property Associated` (key: `1712532493777`, type: string)
- `Address` (key: `1700067557182`, type: address)

## Notes

- Transcripts require call recording enabled in Quo settings
- Phone numbers in E.164 format (+1XXXXXXXXXX)
- Contacts API has no phone number search — must page through or use externalIds
- Voicemail endpoint returns single object (not array)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.