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.
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.https://plyto.ai/api/mcpAuthorization with the value Bearer YOUR_API_KEY, including the space after “Bearer”.)claude mcp add --transport http plyto https://plyto.ai/api/mcp \ --header "Authorization: Bearer YOUR_API_KEY"
{
"mcpServers": {
"plyto": {
"url": "https://plyto.ai/api/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}npx mcp-remote https://plyto.ai/api/mcp \ --header "Authorization: Bearer YOUR_API_KEY"
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"}'/contacts, /companies and /deals support GET and POST; a single contact supports GET, PATCH and DELETE.POST /api/v1/tools/{name} with the tool's arguments as the JSON body.limit (max 200) and offset. Responses carry pagination.hasMore, measured rather than estimated.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.
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.
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