---
name: quincer
description: Use when you need to control a Quincer chat widget via Perplexity Computer — take over live visitor conversations, reply as a human agent, list or update leads, or review agent activity. Useful when the user asks about their Quincer leads, wants to jump into a live chat on their site, or wants to qualify/reassign a lead without leaving Perplexity Computer.
metadata: { "perplexity": { "homepage": "https://chat.quincer.com/docs/integrations", "requires": { "env": ["QUINCER_API_KEY"] } } }
---

# Quincer Actions

## Overview

Quincer is an AI sales chat widget. This skill lets Perplexity Computer drive live conversations on the user's website and read the lead pipeline behind them. The Quincer API is HTTPS + bearer token. The token is `$QUINCER_API_KEY` — inject it as `Authorization: Bearer $QUINCER_API_KEY` on every request. Base URL: `https://chat.quincer.com`.

Every action below is an HTTPS request. Use whatever HTTP tool is available in the current Perplexity Computer runtime. If the response is 401 or 403, stop and tell the user to reconnect from the Quincer dashboard → Integrations → Perplexity Computer.

## Inputs to collect

- A Quincer `conversationId` (cuid) when acting on a specific chat. These appear in `conversation.message_received` webhook payloads and in `GET /api/v1/conversations` listings.
- A Quincer `leadId` when updating a lead record.
- A visitor-facing `agentName` when taking over a conversation (defaults to `"Perplexity Computer"`).

## Actions

### Action groups

| Action group   | Default | Notes                                                 |
| -------------- | ------- | ----------------------------------------------------- |
| conversations  | enabled | Read transcripts, take over, reply, hand back to AI   |
| leads          | enabled | List + update leads, change stage/temperature/tags    |
| activities     | enabled | Read agent task history                               |

### Read a conversation

```json
{
  "action": "getConversation",
  "method": "GET",
  "path": "/api/v1/conversations/{conversationId}"
}
```

### Take over a conversation

Locks the conversation to this skill so the AI stops replying. Emit this before sending any reply.

```json
{
  "action": "takeover",
  "method": "POST",
  "path": "/api/v1/conversations/{conversationId}/takeover",
  "body": { "agentName": "Perplexity Computer" }
}
```

### Reply as the external agent

Posts a human-agent message. The visitor sees it under `agentName`. Quincer auto-translates to the visitor's language.

```json
{
  "action": "reply",
  "method": "POST",
  "path": "/api/v1/conversations/{conversationId}/reply",
  "body": { "message": "Hi, I can help with that — can I grab your email?", "agentName": "Perplexity Computer" }
}
```

### Hand back to the AI

Releases the takeover so the Quincer AI resumes handling the conversation.

```json
{
  "action": "handback",
  "method": "POST",
  "path": "/api/v1/conversations/{conversationId}/handback"
}
```

### List leads

Supports filters: `widgetId`, `stage`, `temperature`, `assignedTo`, `updatedSince` (ISO), `limit`, `offset`.

```json
{
  "action": "listLeads",
  "method": "GET",
  "path": "/api/v1/leads?stage=qualified&temperature=hot&limit=25"
}
```

### Read a lead

```json
{
  "action": "getLead",
  "method": "GET",
  "path": "/api/v1/leads/{leadId}"
}
```

### Update a lead

Editable fields: `name`, `email`, `phone`, `company`, `jobTitle`, `website`, `budget`, `authority`, `need`, `timeline`, `stage`, `temperature`, `score`, `tags`, `assignedTo`.

```json
{
  "action": "updateLead",
  "method": "PATCH",
  "path": "/api/v1/leads/{leadId}",
  "body": { "stage": "qualified", "temperature": "hot", "tags": ["perplexity-touched"] }
}
```

### List activities

Read the agent task log. Filters: `widgetId`, `leadId`, `status`, `type`, `updatedSince`.

```json
{
  "action": "listActivities",
  "method": "GET",
  "path": "/api/v1/activities?status=pending&limit=50"
}
```

## Reacting to live messages

Users who want real-time delivery of incoming chat messages should turn on the `conversation.message_received` webhook in Quincer → Developers → Webhooks and point it at whatever inbound URL their Perplexity Computer environment exposes. When `data.status == "human_active"` the conversation is already locked to an external agent — you can `reply` freely. When `data.status == "active"`, issue `takeover` first.

## Setup

1. In Quincer, open **Dashboard → Integrations → Perplexity Computer** and click **Connect Perplexity Computer**. This creates a dedicated "Perplexity Computer" team member in your workspace and issues an API token bound to it. The token is shown once — copy it.
2. In Perplexity Computer, install this skill (upload this `SKILL.md` file).
3. When Perplexity Computer asks for the `QUINCER_API_KEY` environment variable, paste the `cw_dev_...` token from step 1.
4. The `quincer` skill is now available. Try asking: *"Show me my hot leads from today."*

## Ideas to try

- **Watch hot leads:** `listLeads?temperature=hot&updatedSince=...` every few minutes, reach out in the chat before they go cold.
- **Auto-qualify:** read the conversation transcript, then PATCH the lead to `stage=qualified` when BANT is met.
- **Handoff from Perplexity:** take over whenever a visitor asks for a human, reply from Perplexity's knowledge, hand back when resolved.
