Overview
The Peachdesk platform connector lets Claude work with the agents, calls, campaigns, analytics, knowledge bases, telephony configuration, and billing information in one Peachdesk organization. It uses the Model Context Protocol (MCP), so Claude discovers structured tools instead of automating the dashboard. The canonical connector URL is:https://app.peachdeskai.com/mcp. Self-hosted
deployments replace {PUBLIC_BASE_URL} with their externally reachable HTTPS
origin.
Peachdesk has two separate MCP servers. This page covers the public, OAuth-protected
platform connector. Voice Studio’s MCP server is a
local service with different tools and a different connection method.
Before you connect
- You need a Peachdesk account and membership in the organization Claude should use.
- The connector URL must be reachable from Anthropic over HTTPS. A loopback URL is suitable only for local Claude Code testing.
- A connector authorization is pinned to one organization. Changing your active organization in Peachdesk does not move an existing grant; authorize a new connection to work in another organization.
Connect from claude.ai
1
Open the custom connector form
Go to Customize → Connectors → + → Add custom connector.
2
Enter the connector details
Choose a name such as Peachdesk and enter
{PUBLIC_BASE_URL}/mcp. Leave
Advanced client credentials empty. Peachdesk uses Dynamic Client
Registration (DCR), so Claude registers a public client and does not need a
client secret.3
Add and connect
Select Add or Connect, sign in to Peachdesk, choose one organization,
review the requested scopes, and approve the scopes you want to grant.
4
Enable it in a conversation
Open the conversation’s connector controls, enable Peachdesk, and confirm that
the permitted tools appear.
Why the consent screen says “unverified”
Peachdesk allows public clients to register dynamically. Peachdesk does not vet each application, and the displayed application name is whatever that application claims it is. Check the exact redirect URL shown on the consent screen and approve only a connection you started yourself.Connect from Claude Code
Use your Claude account connector
If Claude Code is signed in with the same Claude account:- Add Peachdesk in the claude.ai connector UI once.
- Run
/mcpin Claude Code. - Select the Peachdesk account connector and authenticate if prompted.
- Verify the tool list before using it.
Add the URL with the CLI
Use this path for a direct Claude Code registration:--scope local— one developer in one repository.--scope user— one developer across all repositories.--scope project— only when the team intends to commit and share.mcp.json.
.mcp.json. Inspect an existing entry
with claude mcp list and claude mcp get <name> before replacing it.
OAuth scopes
You can approve a subset of the scopes requested by the client. The tool list and every tool call are filtered server-side using the approved subset.Not in v1
These permissions are deliberately not grantable in v1:agents:publish— publish or archive an agent from the Peachdesk dashboard.analytics:write— manage saved charts in the Analytics dashboard.telephony:write— change a number’s inbound agent or default caller ID under Telephony configurations.
Approval for calls and campaign runs
Approvingcalls:run or campaigns:run on the OAuth consent screen grants access
to the preview tools. It is not approval to dial.
When you ask Claude to place a call or start or resume a campaign:
- Claude creates a preview and returns a link to a Peachdesk approval page.
- The page shows the specific campaign or phone-number target and its bounds.
- Nothing is dialled until the signed-in grant owner selects Approve and run there.
- Peachdesk durably queues the approved action; you can leave the page open to see Queued, Running, and the final outcome. Claude can read the same status without running it again.
- The approval is single-use, expires, and is tied to that target snapshot.
- Changing the target invalidates the approval and requires a new preview.
Retry write operations safely
Write tools accept an optionalidempotency_key. Repeating the same tool call
with the same key and arguments returns the original result instead of creating a
second resource. Reusing the key with different arguments is an error. Use a new
key for a genuinely new operation.
Revoke a connection
Open Peachdesk Account (/account), find Connected apps, and select
Revoke. Revocation immediately invalidates the grant’s access and refresh
tokens. Remove the connector in Claude as the client-side half; removing it only
from Claude does not replace server-side revocation.
Legacy API-key clients
The existing/api/v1/mcp alias remains supported for API-key integrations, but
OAuth at /mcp is recommended for new connections because it is per-user, scoped,
and revocable.
initialize and tools/list;
those operations were previously anonymous. API keys are organization-wide and
carry no OAuth scopes, so treat YOUR_API_KEY as a full-organization credential.
Never commit it or paste it into a shared chat.
Example prompts
Explore your workspace- “List my agents in Peachdesk.”
- “Show me the draft definition of the agent called Lead Qualifier.”
- “List recent calls and summarize their outcomes.”
- “Show my current credit balance.”
- “Create a draft agent for lead qualification.”
- “Create a campaign draft from this contact list, but do not start it.”
- “Add this text to the Support knowledge-base collection.”
- “Preview starting the August follow-up campaign and give me the Peachdesk approval link.”
- “Preview a call to this customer using Support Bot. Do not dial until I approve it in Peachdesk.”
Agent edits are saved as a new draft version. Your published agent keeps
serving calls until you explicitly publish the draft from the Peachdesk dashboard.
Self-hosted and local testing
For the all-in-Docker stack, the API port is not published to the host. Reach the connector through the configured edge or cloudflared URL and setPUBLIC_BASE_URL
to that externally reachable origin. Do not give Claude http://localhost:8000/mcp
for that deployment shape.
For contributor development, run only Postgres, Redis, and MinIO from
docker-compose-local.yaml; the centrally managed host uvicorn process owns port
8000. A loopback PUBLIC_BASE_URL=http://localhost:8000 is then suitable for a
local Claude Code client, but not for claude.ai.
Before switching between the -p peachdesk full stack and the directory-named
local dependency stack, run docker compose -p peachdesk down (or bring down the
local stack when switching the other way). This avoids leaving a container attached
to a network the next stack needs to replace.
Optional Google sign-in
Operators using thelocal auth provider can set GOOGLE_CLIENT_ID and
GOOGLE_CLIENT_SECRET in the backend environment and register
{PUBLIC_BASE_URL}/api/v1/auth/google/callback in Google Cloud. Both variables
must be set for the button and routes to become available. These are backend-only
secrets; never use a NEXT_PUBLIC_ variable or put them in ui/.env.
Troubleshooting
- The endpoint returns
401. This is the expected unauthenticated response. ItsWWW-Authenticateheader points the client to Peachdesk’s protected-resource metadata so OAuth can begin. - The connector was added but shows no tools. Reconnect and approve the scopes needed for those tools. Tool discovery is scope-filtered.
- The wrong organization appears. Revoke the grant and authorize a new connection for the intended organization; a grant never follows the dashboard’s active-organization switch.
- Claude Code rejects a self-signed certificate. Use the temporary development workaround above or install a trusted certificate.

