Plyto

Use Plyto from Claude, or any AI assistant

Plyto ships a hosted MCP server. Connect it once and your assistant can work your CRM directly: add contacts, move deals, draft emails and ad campaigns, pull reports: the same tools Plyto's own agent uses.

1Connect with OAuth, or create an API key

Clients that support MCP OAuth (claude.ai custom connectors, ChatGPT, and most recent MCP hosts) can skip keys entirely: add https://plyto.ai/api/mcpwith no credentials, and the client walks you through signing in to Plyto and choosing a business. Under the hood it's OAuth 2.1: discovery at /.well-known/oauth-authorization-server, dynamic client registration, PKCE (S256) required, public clients only, scope mcp, rotating refresh tokens, and revocation at /api/oauth/revoke. Nothing to preconfigure.

For everything else: in Plyto, open Settings → API keysand create a key. Keys are scoped to one business and inherit your role's permissions. Copy the key; it's shown once.

2Add the server to your client

Claude (claude.ai, desktop & mobile apps)

  1. Go to Settings → Connectors → Add custom connector.
  2. Server URL: https://plyto.ai/api/mcp
  3. Leave the headers empty and save: Claude detects OAuth and walks you through signing in to Plyto and picking a business. No key needed.
  4. (Key fallback: if you prefer a key, add a header named Authorization with the value Bearer YOUR_API_KEY, including the space after “Bearer”.)
  5. Enable the connector in any chat.

Claude Code

claude mcp add --transport http plyto https://plyto.ai/api/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

Cursor, Windsurf, and other JSON-config clients

{
  "mcpServers": {
    "plyto": {
      "url": "https://plyto.ai/api/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

Clients without native remote-server support

npx mcp-remote https://plyto.ai/api/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

3Talk to your CRM

Ask your assistant things like “add the lead from this email thread to my CRM”, “which deals are stalled?”, or “draft a follow-up sequence for contacts tagged webinar”. The assistant sees the same contacts, pipelines, and reports you do.

REST API

If your system speaks HTTP rather than MCP, the same API key works against /api/v1. Send it as a bearer token.

# List contacts
curl https://plyto.ai/api/v1/contacts?limit=50 \
  -H "Authorization: Bearer plyto_at_..."

# Create one (existing email updates instead of duplicating)
curl -X POST https://plyto.ai/api/v1/contacts \
  -H "Authorization: Bearer plyto_at_..." \
  -H "Content-Type: application/json" \
  -d '{"firstName":"Dana","email":"dana@example.com"}'

# Anything else: every tool is reachable by name
curl -X POST https://plyto.ai/api/v1/tools/crm.tasks.create \
  -H "Authorization: Bearer plyto_at_..." \
  -H "Content-Type: application/json" \
  -d '{"title":"Follow up with Dana"}'

Safety model

Protocol details

Streamable HTTP (JSON-RPC over POST) at https://plyto.ai/api/mcp. Protocol versions 2024-11-05 through 2025-06-18. Capabilities: tools. Auth: Authorization: Bearer plyto_at_… (thex-api-keyheader works too). The server is reachable from the public internet, including Anthropic's infrastructure for claude.ai connectors. Machine-readable metadata: server card.

Bring your own system of record

If your revenue lives outside Plyto (your own Stripe, HubSpot, a billing backend), you can still close the loop between ad clicks and money. Capture leads through your business's inbound webhook, then report what became of them to the same URL plus /outcome:

POST /api/inbound/{token}/outcome
Content-Type: application/json

{"email": "lead@example.com", "outcome": "customer"}

Plyto promotes the contact and reports the conversion back to the ad platform against the original click, so bidding optimizes toward people who pay rather than people who fill in forms. Outcomes are upgrade-only, so retries and replays are safe. Connected Stripe accounts do this automatically on the nightly sync; the webhook is for everything else. Your webhook URL lives in Settings → Integrations.

The same token also syncs contact data. POST to /properties with {email, properties: {plan: "growth", lifetime_revenue: 1240}} and Plyto writes every key that exists as a custom contact property, reports unknown keys back, and emits a property-changed event automations can trigger on.

Find Plyto in MCP directories

The same server is listed on Smithery, mcp.so, and Cursor Directory, plus the official MCP registry as ai.plyto/crm.

Questions? hello@plyto.ai · ← Back to plyto.ai