Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -672,6 +672,11 @@
"grokbot": "0.49.0",
"sand": "0.49.0"
}
},
{
"name": "phonic",
"source": "third_party/phonic",
"description": "Build and test Phonic voice agents: configure agents, discover voices, search docs, and work with phone calls, browser voice, tools, and post-call processing."
}
]
}
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc
| `gusto` | [Gusto](third_party/gusto/) | Cursor | Integrations | Work with payroll, employees, contractors, time off, and reports. |
| `gopuff` | [Gopuff](third_party/gopuff/) | Cursor | Integrations | Shop Gopuff from Grok Bot through Gopuff's official MCP server. Sign in with your Gopuff account; Gopuff handles the sign-in, and your searches, carts, and orders go to Gopuff under that account, so any order you place is charged and delivered like a normal Gopuff order. |
| `jobber` | [Jobber](third_party/jobber/) | Cursor | Integrations | Work with clients, requests, quotes, jobs, visits, and invoices. |
| `phonic` | [Phonic](third_party/phonic/) | Phonic | Integrations | Build and test Phonic voice agents: configure agents, discover voices, search docs, and work with phone calls, browser voice, tools, and post-call processing. |
| `databricks-genie-one` | [Databricks Genie One](third_party/databricks-genie-one/) | Cursor | Integrations | Ask Databricks Genie questions about your workspace's data in plain language. |
| `lark` | [Lark](third_party/lark/) | Cursor | Integrations | Search, create, and update Lark Suite docs, and read Lark messages and groups. |
| `feishu` | [Feishu](third_party/feishu/) | Cursor | Integrations | Search, create, and update Feishu docs, and read Feishu messages and groups. |
Expand Down
33 changes: 33 additions & 0 deletions third_party/phonic/.cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"name": "phonic",
"displayName": "Phonic",
"version": "0.2.0",
"description": "Build and test Phonic voice agents: configure agents, discover voices, search docs, and work with phone calls, browser voice, tools, and post-call processing.",
"author": {
"name": "Phonic",
"email": "support@phonic.ai"
},
"homepage": "https://phonic.ai",
"repository": "https://github.com/Phonic-Co/skills",
"license": "MIT",
"logo": "assets/logo.png",
"keywords": [
"phonic",
"voice",
"voice-ai",
"voice-agents",
"conversational-ai",
"speech-to-speech",
"phone-calls",
"telephony",
"mcp"
],
"category": "integrations",
"tags": [
"phonic",
"voice",
"mcp"
],
"skills": "./skills/",
"mcpServers": "./mcp.json"
}
21 changes: 21 additions & 0 deletions third_party/phonic/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 Phonic

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
61 changes: 61 additions & 0 deletions third_party/phonic/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Phonic

Cursor plugin that connects agents to [Phonic](https://phonic.ai) through Phonic's hosted [Model Context Protocol](https://modelcontextprotocol.io/) server, plus Phonic's skills for building voice agents.

Build and test Phonic voice agents from your coding assistant. Connect your Phonic account, search product documentation, configure agents, discover voices, and get ready for your first conversation.

## Install

1. Open **Cursor Settings → Plugins**.
2. Search for **Phonic**.
3. Click **Install**, then complete the Phonic sign-in prompt.

Or run `/add-plugin phonic` in chat.

## MCP

```json
{
"mcpServers": {
"phonic": {
"type": "http",
"url": "https://mcp.phonic.ai/mcp"
}
}
}
```

Auth is OAuth through the client's MCP sign-in flow; an API key also works. OAuth selects the workspace for the connection.

## Before you connect

You need a Phonic account and workspace. Sign up at [phonic.ai](https://phonic.ai).

## Skills

| Skill | When to use it |
| --- | --- |
| `phonic-get-started` | Connect MCP, build an agent, and run a first conversation. |
| `phonic` | Choose an integration and find the relevant implementation skill. |
| `phonic-agents` | Configure agents, phone calls, prompts, and project operations. |
| `phonic-voices` | Discover and preview voices. |
| `phonic-websockets` | Build browser voice sessions and server audio bridges. |
| `phonic-tools` | Connect tools and transfer callers. |
| `phonic-post-call` | Process webhooks, extractions, and evaluations. |
| `phonic-improvement-loop` | Run prompt experiments with simulated conversations. |
| `phonic-steering` | Update live conversations. |

The hosted runtime is the source of truth for tool names and schemas. Documentation search is provided through `search_docs` on the same connection.

## Docs

- Phonic: https://phonic.ai
- Documentation: https://docs.phonic.ai
- Source: https://github.com/Phonic-Co/skills
- Support: support@phonic.ai

Skills, MCP config, and logo are copied from [Phonic-Co/skills](https://github.com/Phonic-Co/skills).

## License

MIT
Binary file added third_party/phonic/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions third_party/phonic/mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mcpServers": {
"phonic": {
"type": "http",
"url": "https://mcp.phonic.ai/mcp"
}
}
}
30 changes: 30 additions & 0 deletions third_party/phonic/skills/phonic-agents/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
name: phonic-agents
description: Create and configure Phonic agents and phone calls using MCP, SDKs, or REST. Use for saved agents, inbound numbers, outbound calls, prompting, and project operations.
license: MIT
---

# Configure Phonic agents and calls

SDKs: `npm install phonic` / `pip install phonic`. Entry points: `new PhonicClient({ apiKey })` (Node), `Phonic(api_key=...)` / `AsyncPhonic(...)` (Python). REST base: `https://api.phonic.ai/v1` with `Authorization: Bearer $PHONIC_API_KEY`. Always use the `.ai` domain for API and docs URLs — `phonic.co` addresses still resolve for backward compatibility, but all new code should use `phonic.ai`.

Fetch live docs rather than from memory: use the index at [llms.txt](https://docs.phonic.ai/llms.txt). For the REST API, see [openapi.json](https://docs.phonic.ai/openapi.json). For the WebSocket protocol, see [asyncapi.json](https://docs.phonic.ai/asyncapi.json). If an endpoint does not appear in these docs, it doesn't exist, do not invent one.

## SDK surface

- Agents: `client.agents.create/get/list/update/upsert/delete`. `upsert` is create-or-update by name (idempotent). Agents are identified by name.
- Outbound calls: `client.conversations.outboundCall(...)` — greeting goes in `config.welcome_message`.

## Prompting voice agents

Voice prompts differ from chat prompts (speech formatting, silence handling, naturalness) — use [the prompting guide](https://docs.phonic.ai/docs/build/agents/prompting_guide.md).

## Operations

- **Projects** organize agents/tools/numbers within a workspace; use one project per tenant/product line rather than a new workspace. API keys are workspace-level.
- **Rate limits**: see [the rate limits page](https://docs.phonic.ai/docs/platform/rate_limits.md); high-volume outbound campaigns need client-side concurrency caps.
- **Observability**: per-call outcomes via the webhook events above; live read-only monitoring via the live WebSocket; [audit logs](https://docs.phonic.ai/docs/platform/audit-logs.md).

## Campaign and batch dialers

- **Campaign/batch dialers**: claim each number (durable in-progress state) before dialing and design the claim so a second runner instance can't grab it too — per-run completion state alone doesn't prevent two processes from double-dialing.
43 changes: 43 additions & 0 deletions third_party/phonic/skills/phonic-get-started/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
name: phonic-get-started
description: Get started on phonic.ai via MCP, connect Phonic, and build and run a first voice conversation. Use for Phonic setup, a first conversation, and choosing the next implementation workflow.
license: MIT
---

# Get started with Phonic

When the user says “get started on phonic.ai via MCP,” “connect Phonic,” or “build my first Phonic conversation,” carry the task through connection, agent setup, and a first conversation. Use the user's existing context, make reasonable reversible defaults, and ask only for missing details that block the next step.

## Connect and authenticate

Inspect the client's available tools and MCP configuration before adding anything. Reuse a working Phonic connection. Otherwise configure `https://mcp.phonic.ai/mcp` through the client's supported setup flow; consult the client-specific installation instructions in [the package README](../../README.md). Preserve other MCP entries. Use the client's OAuth flow for sign-in and workspace selection; never ask the user to paste a token into chat.

Perform supported setup steps directly when the environment permits. If a login, client approval, or restart requires the user, give the exact next action and resume from that point when completed. Do not claim connection success until a Phonic tool responds. Installing a skill does not itself connect MCP, and connecting MCP does not install skills; automatic selection depends on the host loading this skill.

Discover the tools actually exposed by the connection; prefixes differ between clients. Use `search_docs` on the same connection for product and API questions. If it is unavailable, use [the documentation index](https://docs.phonic.ai/llms.txt) and check connection status; do not require a separate docs server.

## Set up the first agent

Inspect the connected workspace, projects, and existing agents. Use the user's specified project, or an unambiguous existing project; ask only when the choice is unclear. OAuth selects the workspace for the connection; selecting a project does not switch workspaces.

Use the discovered API tools for account operations. Reuse a suitable agent or create a small demo agent within the user's requested scope. If no use case is given, start with a simple friendly assistant that can hold a short conversation, without business integrations. Use a supported model and available voice from the current schemas/catalog. Avoid making a long questionnaire a prerequisite to trying the product.

## Run the first conversation

Follow the user's requested conversation surface. For an unspecified first demo, prefer a browser or dashboard conversation so a phone number is not required; use current docs to find the supported test interface or implement a minimal browser session if that is the user's task. Use a returned or documented destination rather than inventing a dashboard URL. Keep API keys server-side when building a browser session.

For an outbound call, obtain the user's intended recipient if missing, validate with `dry_run: true`, then place the requested test call once validation succeeds and the task authorizes calling that recipient. A dry run is not a completed conversation. Do not repeat a potentially successful call after an ambiguous error without checking its status.

Verify the conversation from available status/transcript events and invite the user to speak when microphone interaction is required. Report the selected workspace/project, agent, and observed result concisely. If the host cannot capture audio or start the chosen surface, provide the exact action or runnable entry point that lets the user finish, and state that the conversation has not yet been verified. Continue through available steps rather than stopping after a setup plan.

## Specialized tasks

- Use `phonic-improvement-loop` for prompt experiments and Replay or Responses simulations.
- Use `phonic-steering` for context and reply controls during a live conversation.
- Use `phonic-voices` for voice selection and allocation.

Load a specialized skill only when relevant and installed; otherwise use the live documentation.

## Continue building

For implementation details, use the installed `phonic` routing skill or the relevant `phonic-agents`, `phonic-websockets`, `phonic-tools`, or `phonic-post-call` skill. If a skill is unavailable, use the live docs.
34 changes: 34 additions & 0 deletions third_party/phonic/skills/phonic-improvement-loop/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
name: phonic-improvement-loop
description: Run Phonic prompt experiments and conversation simulations with Replay or Responses. Use to debug a conversation, compare prompt changes, or simulate tool-dependent behavior.
license: MIT
---

# Phonic prompt experiments and simulations

Use Replay and Responses to investigate a conversation or compare a proposed prompt change. Read the [Replay API](https://docs.phonic.ai/api-reference/conversation-items/replay.md) or [Responses API](https://docs.phonic.ai/api-reference/responses/create.md) for the selected method.

## Scope the experiment

Identify the behavior being changed, the affected conversations and tool paths, and the consequence of a regression. Match the experiment to that scope:

- **One conversation or a small wording change:** inspect the failure, replay the relevant completed assistant turns, and check a few related cases. A mock server or formal dataset split is unnecessary for a local diagnosis.
- **Broader prompt or tool-use changes:** compare the baseline and candidate on representative conversations, including ordinary cases, known failures, and affected tool paths. For repeated prompt development, separate train (development), validation (candidate selection), and test (final assessment) sets. Keep related conversation turns and synthetic variants in the same split.
- **High-volume or consequential deployments:** consider simulations with varied tool outputs, failures, and rare cases. A mock tool server is useful when tool behavior materially affects the result; scale, tool complexity, and failure impact matter more than an enterprise label. Read [mock-tool simulations](references/mock-tools.md) only when this larger experiment is warranted.

Choose sample counts and a stopping condition from the user's objective, coverage, cost, and available time. Respect a supplied budget; otherwise propose the size and estimated generation count before a substantial batch. There is no fixed iteration limit. Define what a successful reply or tool call looks like before comparing results.

## Choose Replay or Responses

- **Replay:** use `replay_conversation_item` when exposed, or `POST /v1/conversation_items/{id}/replay`, for a completed assistant turn from an ended, transcript-retained conversation. Omit `system_prompt` for the as-recorded baseline; supply it for the candidate. Whole-conversation audio replay is a different operation.
- **Responses:** use the discovered `create_response` tool or `POST /v1/responses` for synthetic or edited histories, alternate tool outputs, and multi-turn simulations. Workspace enablement may be required. Read [Responses simulation requests](references/responses.md) when using this method.

## Run and compare

Keep inputs, configuration, sample counts, and grading criteria consistent between baseline and candidate. Inspect generated text, proposed tool calls, and actions together; check tool names and arguments rather than judging plausible speech alone. A proposed tool call does not prove an external action executed. Text simulations do not measure voice quality, interruptions, or live latency.

For a local experiment, report what the related cases establish and their limits. For broader experiments, develop changes on train cases, select using validation, and assess the chosen prompt on untouched test cases. If test results guide a further edit, use a new test set before making a final generalization claim. If grading criteria change, regrade baseline and candidate consistently.

Stop when the target is met, the agreed resource limit is reached, or further experiments are not justified by the evidence. Separate failed Replay or Responses API requests from poor generated replies and deliberately simulated tool errors. Report attempted, successful, and failed requests, sample sizes, representative failures, and total generations; do not silently drop missing samples. Fix access/eligibility errors before retrying, and bound transient retries within the experiment's resource limit.

Return the proposed prompt diff and concise experiment results, including regressions and uncertainty. Raw outputs may contain conversation data and tool configuration; do not commit them by default. Updating a saved agent must be within the user's authorized task.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Mock tool simulations

For scenarios sensitive to tool results, build a mock tool server or a local fixture generator with configurable outcomes. For example, simulate A at 40%, B at 30%, C at 25%, and D at 5%. These are example weights, not defaults. Match real response schemas, include relevant error or empty-result cases, and keep business side effects simulated.

For Responses, the test harness obtains an output from the mock and appends the matching `tool_call_output` to the history before generating the next turn. The Responses endpoint does not call the mock server for you. Replay uses recorded context; use Responses when changing historical tool outputs. To test an actual tool integration, connect the mock server to a dedicated test agent using the documented tool interface.

Reuse a recorded output schedule or seeded fixtures for baseline and candidate comparisons. A random sample of 100 runs will not necessarily contain exactly 40/30/25/5 outcomes; use fixed counts when exact coverage matters and random sampling when testing the distribution matters. Report observed counts and agent success by outcome, including rare failures that aggregate success can hide.
Loading
Loading