Skip to content

API Endpoints

All API requests go to api.switchboard.fpdigital.ai and require authentication. v4.10.14

Include your token in the Authorization header:

Terminal window
Authorization: Bearer fps_unified_your_token_here
Token TypeFormatScope
Per-Servicefps_google_xxxSingle service only
Per-Accountfps_google_work_xxxSingle account of a service
Unifiedfps_unified_xxxAll connected services
Bundlefps_bundle_xxxCustom bundle of services

Access all connected services through a single endpoint.

URLPOST /mcp/unified
Tokenfps_unified_*

Access a single service.

URLPOST /mcp/{service}
Tokenfps_{service}_*

Available services (32):

ServiceEndpointTools
Google Workspace/mcp/google69
Slack/mcp/slack48
Notion/mcp/notion21
QuickBooks/mcp/quickbooks49
HubSpot/mcp/hubspot33
Asana/mcp/asana45
Teamwork/mcp/teamwork52
Figma/mcp/figma33
Canva/mcp/canva23
PandaDoc/mcp/pandadoc22
Cloudflare/mcp/cloudflare28
Instagram/mcp/instagram23
Salesforce/mcp/salesforce55
Sage Intacct/mcp/sage48
LinkedIn/mcp/linkedin30
WordPress/mcp/wordpress45
Facebook/mcp/facebook30
Facebook Ads/mcp/facebookads35
Google Analytics/mcp/googleanalytics25
Google Ads/mcp/googleads30
Pinterest/mcp/pinterest30
ManyChat/mcp/manychat30
n8n/mcp/n8n25
Fathom Analytics/mcp/fathom20
Fathom AI/mcp/fathom_ai20
GitHub/mcp/github36
Microsoft 365/mcp/microsoft36545
Teams/mcp/teams25
SharePoint/mcp/sharepoint30
WhatsApp Business/mcp/whatsapp20
Cloudflare Tenant/mcp/cloudflare_tenant15
Jira Cloud/mcp/jira53

Access a custom bundle of services.

URLPOST /mcp/bundle/{bundle_id}
Tokenfps_bundle_*

Add ?dynamic=true to any MCP endpoint for 96% token reduction. Returns 3 meta-tools instead of the full tool list.

URLPOST /mcp/unified?dynamic=true
Meta-toolsswitchboard_search_tools, switchboard_get_tool_details, switchboard_execute_tool

See Dynamic Tool Loading for details.

Terminal window
curl -X POST https://api.switchboard.fpdigital.ai/mcp/unified \
-H "Authorization: Bearer fps_unified_xxx" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Terminal window
curl -X POST https://api.switchboard.fpdigital.ai/mcp/unified \
-H "Authorization: Bearer fps_unified_xxx" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "gmail_search",
"arguments": {
"query": "is:unread",
"max_results": 10
}
}
}'
Terminal window
# Step 1: Search for tools
curl -X POST "https://api.switchboard.fpdigital.ai/mcp/unified?dynamic=true" \
-H "Authorization: Bearer fps_unified_xxx" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "switchboard_search_tools",
"arguments": { "query": "email search" }
}
}'

These endpoints are used by the dashboard UI and protected by Cloudflare Access.

EndpointMethodDescription
/dashboardGETMain dashboard
/dashboard/services/:serviceGETService detail page
/dashboard/bundlesGETBundle management
/dashboard/prompt-generatorGETAI prompt generator
/adminGETAdmin panel (org admins)
/admin/usersGETUser management
/admin/policiesGETPolicy rules
/admin/dlpGETDLP settings
/admin/analyticsGETUsage analytics
/guides/:serviceGETSetup guides

Used during service connection flow.

EndpointDescription
/oauth/{service}/authorizeInitiate OAuth flow
/oauth/{service}/callbackOAuth callback handler
/oauth/{service}/connectAPI key connection (non-OAuth services)
Terminal window
curl https://api.switchboard.fpdigital.ai/health

Response:

{
"status": "healthy",
"version": "4.10.14",
"timestamp": "2026-02-08T10:30:00Z"
}

All endpoints are rate limited:

Endpoint TypeLimit
MCP endpoints100 req/min
Dashboard60 req/min
OAuth flows10 req/min

Rate limit information is returned in headers:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1705312800

The API supports CORS for browser-based requests:

  • Access-Control-Allow-Origin: * (for MCP endpoints)
  • Access-Control-Allow-Methods: POST, OPTIONS
  • Access-Control-Allow-Headers: Authorization, Content-Type

All errors follow this format:

{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32000,
"message": "Human-readable error message",
"data": {
"errorCode": "MACHINE_READABLE_CODE",
"details": "Additional context"
}
}
}

See MCP Protocol for the complete error code reference.