Connect Claude, ChatGPT, Cursor, or any MCP client to a production-grade tool server. Your AI agent discovers Synup tools automatically, calls them with full OAuth 2.1 security, and respects multi-tenant isolation out of the box.
POST /mcp — that's the entire surface. Your AI agent sends a JSON-RPC 2.0 request, Synup executes the tool, and returns the result. The Streamable-HTTP transport means no WebSocket complexity. GET /mcp returns a WWW-Authenticate header so MCP clients can discover the auth server automatically.
POST /mcpGET /mcp WWW-Authenticate headeragencyId resolved from auth context, never from tool paramsThe registry ships with CRM tools (companies, contacts, deals), post idea tools (create, update, archive, publish), and post tools (create, schedule, publish, analyze). Each tool declares its input schema, whether it mutates data, and which scopes it requires.
list_companiesCompanies with owner + stagemcp:readNolist_contactsContacts, filterable by companymcp:readNolist_dealsDeals with value + stagemcp:readNolist_stagesPipeline stage definitionsmcp:readNocreate_post_ideaDraft an idea against a clientmcp:writeYeslist_post_ideasIdeas by client and statusmcp:readNopublish_idea_to_postPromote an idea into a postmcp:writeYesarchive_post_ideaRetire an idea from the queuemcp:writeYesmcp:writecreate_postSchedule to Google + Facebookmcp:writeYeslist_postsPosts by client, status, windowmcp:readNopublish_post_nowPush a scheduled post livemcp:writeYesget_post_analyticsViews, clicks, engagementmcp:readNo{
"name": "create_post",
"description": "Create a social post for a client",
"mutates": true,
"scopes": ["mcp:write"],
"inputSchema": {
"type": "object",
"required": ["clientId", "name", "platforms"],
"properties": {
"clientId": { "type": "string" },
"name": { "type": "string", "maxLength": 120 },
"platforms": { "type": "array", "items": { "enum": ["google", "facebook", "instagram"] } },
"postType": { "enum": ["announcement", "offer", "event"] },
"scheduledFor": { "type": "string", "format": "date-time" }
}
}
}
// Illustrative schema, swap for the live registry output of tools/list.
MCP auth uses the same OAuth 2.1 server as the REST API. Your MCP client registers dynamically (RFC 7591), gets a client_id, runs the PKCE authorization flow, and receives scoped tokens. Three auth paths are supported for different deployment contexts.
mcp:read for read tools, mcp:write for mutating toolsagencyId comes from the auth context only — tools cannot impersonateFour things the server does so your agent doesn't have to.
JSON-RPC 2.0 over standard HTTP POST. No WebSocket complexity, no custom protocols.
POST /mcp HTTP/1.1 Content-Type: application/json Authorization: Bearer eyJhbGciOi…
MCP clients automatically discover available tools, their schemas, and required scopes. No manual configuration.
// tools/list → 22 tools { "name": "list_posts", "inputSchema": { "clientId": "string", "status": "enum" }, "scopes": ["mcp:read"] }
Agency ID is resolved from the auth token, never from tool parameters. Tools cannot reach another agency's data.
// decoded access token { "agencyId": "agency_pinnacle", "scopes": ["mcp:read", "mcp:write"], "exp": "+1h" }
Save an API key or Anthropic key once and it propagates to the agent container, which reloads on its own.
agency_pinnacleSynced// Marinara Pizza — NYC rollout "objective": "maximize presence, manage reputation", "market": "NYC — most competitive pizza market in the US" // result: 80% increase in phone calls
Marinara Pizza added Synup to their marketing plan a few months after opening. Working with Synup's Customer Success team, they mapped out a strategy to maximize presence everywhere and aggressively manage reputation from day one — in one of the toughest pizza markets in the country.
mcp:read, mcp:write), short-lived (1h), and agency-isolated. Tools cannot access other agencies' data.Point your MCP client at the endpoint, approve the scopes, and start calling tools in the same conversation you're already having.