MCP Server (Model Context Protocol)
The Salescaling MCP server allows AI agents like Claude, Cursor, and other MCP-compatible clients to access your meeting data, transcripts, and summaries in a structured and secure way.
What is MCP?
Model Context Protocol (MCP) is a standard protocol that allows language models (LLMs) to interact with external systems in a structured way. The Salescaling MCP server implements this protocol to expose your meeting data through tools that AI agents can use.
Features
✅ Spec-Compliant: Full implementation of the official MCP protocol
✅ 11 Available Tools: Meetings (video call and in person), phone calls, search, listings, transcription, summary with action items, details, statistics, and more
✅ Advanced Search: Full Text Search with PostgreSQL for semantic searches with optimized GIN indexes
✅ Payload Control: Configurable limits to avoid context overflow
✅ Secure Authentication: Salescaling API key or OAuth Clients (Authorization Code + PKCE)
✅ Multi-tenant: Automatic isolation by organization
✅ High Performance: Optimized for millions of rows with GIN indexes and concurrency control
MCP Endpoints
The MCP server exposes two main endpoints:
GET /api/v1/mcp - List Tools
/api/v1/mcp - List ToolsReturns the list of available tools with their input schemas.
Example:
POST /api/v1/mcp - Execute Tool
/api/v1/mcp - Execute ToolExecutes a specific tool with the provided arguments.
Example:
MCP Connection via OAuth Clients
In addition to the API key, you can connect MCP clients that support OAuth 2.0 (flow Authorization Code with PKCE). OAuth clients are registered explicitly in Salescaling (there is no dynamic client registration in the authorization server).
Requirements
An account with permissions to manage OAuth Clients (usually organization administrators).
The MCP client must be able to complete the OAuth flow in the browser and send
Authorization: Bearer <access_token>to the MCP server.
Configure the client in Salescaling
In the platform, go to Settings → OAuth Clients (or Settings → OAuth Clients).
Create a new OAuth client.
Add the allowed Redirect URIs . For Claude (Anthropic) use exactly:
https://claude.ai/api/mcp/auth_callbackAssign the scopes scopes the MCP needs (at minimum
meetings:readfor the current meeting tools).Save the client and copy the
client_id(and the secret only if you created a confidential client; many MCP clients use a public client with PKCE).
Authorization server metadata
Salescaling exposes metadata compatible with OpenID discovery on the MCP endpoint itself:
GET https://api.salescaling.com/api/v1/mcp/.well-known/openid-configuration
There you will find issuer, authorization_endpoint, token_endpoint, revocation_endpoint and supported scopes (replace the host if you use another environment).
Example: MCP for Claude with OAuth
After creating the OAuth Client with the redirect above, configure the MCP client with the MCP server URL and OAuth endpoints (adjust domains if your tenant uses another app URL):
Summary of typical URLs
MCP Server
https://api.salescaling.com/api/v1/mcp
Authorization (user login)
https://app.salescaling.com/oauth/authorize
Token (code exchange / refresh)
https://api.salescaling.com/v1/oauth/token
Redirect URI in Salescaling for Claude
https://claude.ai/api/mcp/auth_callback
Requests to the MCP will use the access token in the header Authorization: Bearer … instead of X-API-Key.
Meetings vs phone calls
Salescaling stores video calls, in-person meetings and phone calls in the same meeting entity. To keep the MCP API clear:
The tools whose name includes
meetings(search_meetings,list_meetings,find_meetings_by_participant) only include video calls and in-person meetings (they do not return phone calls).The tools
list_calls,search_callsandfind_calls_by_participantare dedicated to phone calls and support filters such as direction (INBOUND/OUTBOUND) and phone numbers.get_meeting_transcript,get_meeting_summary,get_meeting_detailsandget_meeting_action_itemswork with any meeting or call ID (the same identifier).
Available Tools
1. search_meetings - Advanced Search
search_meetings - Advanced SearchSearches video calls and in-person meetings by text in titles and/or transcripts (Full Text Search). Does not include phone calls; for that use search_calls.
Parameters:
query
string
Yes
Search term
scope
string
No
title, sentences or all (default: all)
fromDate
string
No
Start date (YYYY-MM-DD)
toDate
string
No
End date (YYYY-MM-DD)
limit
number
No
Maximum 50 (default: 20)
Note: Only video call or in-person activities.
Example:
2. list_meetings - List Meetings
list_meetings - List MeetingsLists video calls and in-person meetings with structured filters (excludes phone calls).
Parameters:
keyword
string
No
Search in names / title
fromDate
string
No
Start date
toDate
string
No
End date
limit
number
No
Maximum 50 (default: 20)
skip
number
No
Pagination (default: 0)
sortOrder
string
No
asc or desc — sort by start date (default: desc)
participants
string[]
No
Participant emails
organizers
string[]
No
Organizer emails
Example:
3. get_meeting_transcript - Get Transcript
get_meeting_transcript - Get TranscriptGets the detailed transcript with speaker attribution (meeting or call).
Parameters:
transcriptId
string
Yes
Meeting or call ID
language
string
No
Language code (e.g., "es", "en")
maxSentences
number
No
Sentence limit (payload control)
Payload Control:
Auto-truncates at 10,000 sentences if not specified
maxSentencesIndicates in the response if the content was truncated
Example:
4. get_meeting_summary - Get Summary
get_meeting_summary - Get SummaryGets the AI-generated summary: text (summaryText), action items (actionItems / next_steps), and depending on the type, topics/highlights (meetings) or call insights (calls).
Parameters:
transcriptId
string
Yes
Meeting or call ID
language
string
No
Language code
Example:
5. get_meeting_details - Full Details
get_meeting_details - Full DetailsGets complete details of a meeting (metadata + transcript + summary).
Parameters:
id
string
Yes
Meeting ID
includeTranscript
boolean
No
Include transcript (default: true)
includeSummary
boolean
No
Include summary (default: true)
maxSentences
number
No
Sentence limit in transcript
Example:
6. find_meetings_by_participant - Search Meetings by Participant
find_meetings_by_participant - Search Meetings by ParticipantFinds meetings where a specific person participated. Searches by name (partial match) or email (exact match).
Parameters:
participant
string
Yes
Participant name or email
fromDate
string
No
Start date (YYYY-MM-DD)
toDate
string
No
End date (YYYY-MM-DD)
limit
number
No
Maximum 50 (default: 20)
skip
number
No
Pagination (default: 0)
sortOrder
string
No
asc or desc by start date (default: desc)
titleFilter
string
No
Optional filter on the meeting title (partial match)
Features:
Only video calls and in-person meetings (no phone calls).
Email search: Exact match (case-insensitive)
Example:
jon@empresa.comwill find only that exact email
Name search: Partial match
Example:
Jonwill find "Jon Smith", "Jonathan", "Jon Doe", etc.
Returns full participant and organizer information
Configurable order with
sortOrder
Examples:
Search by email:
Search by name:
7. list_calls - List phone calls
list_calls - List phone callsLists only phone calls (phonecall), with filters by dates, title, participants, direction, and numbers.
titleFilter
string
No
Partial match in the name/title
fromDate / toDate
string
No
Date range (YYYY-MM-DD)
limit
number
No
Maximum 50 (default: 20)
skip
number
No
Pagination
sortOrder
string
No
asc or desc (default: desc)
direction
string
No
INBOUND or OUTBOUND
participants
string[]
No
Participant emails
fromNumber / toNumber
string
No
Partial filter by caller or destination number
8. search_calls - Search in calls
search_calls - Search in callsSearch in titles and/or transcripts for phone calls only. Similar parameters to search_meetings, plus direction, fromNumber, toNumber optional ones.
9. find_calls_by_participant - Calls by participant
find_calls_by_participant - Calls by participantSame as find_meetings_by_participant but only for phone calls, with the same extra filters as list_calls (titleFilter, sortOrder, direction, numbers).
10. get_meeting_action_items - Summary action items
get_meeting_action_items - Summary action itemsReturns the next steps structured from the AI summary for a meeting or call ID.
meetingId
string
Yes
language
string
No
11. get_meetings_statistics - Aggregated statistics
get_meetings_statistics - Aggregated statisticsTotals, average durations by activity type, and top participants (limited sample). Configurable scope:
fromDate / toDate
string
Optional range
type
string
meetings (video+in-person), calls (phone only), or all (default)
Configuration in MCP Clients
For OAuth (including Claude with redirect https://claude.ai/api/mcp/auth_callback), follow the section MCP Connection via OAuth Clients.
Claude Desktop (API Key)
Locate your configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Add the MCP server configuration:
Restart Claude Desktop
Verify that the server is connected:
Look for the tools icon in the interface
You should see "salescaling" as an available server
The 11 tools should appear listed
Cursor IDE
Open Cursor settings (
Cmd/Ctrl + ,)Search for "MCP Servers" in settings
Add the Salescaling server:
Restart Cursor
Use the server from Cursor chat:
Mention "@salescaling" in chat
Or ask directly: "Search meetings about performance"
Other MCP Clients
For any MCP-compatible client:
Server URL:
https://api.salescaling.com/api/v1/mcpAuthentication: Header
X-API-Keywith your API keyProtocol: Standard HTTP/HTTPS
Format: JSON
Usage Examples
Example 1: Search Meetings with Claude
Example 2: Get Full Transcript
Example 3: Analysis of Multiple Meetings
Response Format
All tools return responses in standard MCP format:
Security and Privacy
Authentication
Requests require API key (
X-API-Key) or an OAuth access token (Authorization: Bearer) issued for an authorized OAuth ClientAPI keys are managed from Settings > API Keys; OAuth clients from Settings > OAuth Clients
Each credential is linked to your organization (tenant)
Data Isolation
The MCP server respects multi-tenant isolation
You can only access meetings from your organization
OpenFGA permissions are applied automatically
Best Practices
Never share your API key: Treat it like a password
Use environment variables: Do not hardcode the key in files
Rotate keys periodically: Create new keys and delete the old ones
Set expiration dates: For temporary or test keys
Monitor usage: Review access logs regularly
Limits and Quotas
Rate Limiting
The MCP server shares the same limits as the public API:
Short term: 35 requests per second
Medium term: 200 requests every 10 seconds
Long term: 1000 requests per minute
Payload Limits
Transcripts: Auto-truncates at 10,000 sentences
Searches: Maximum 50 results per request
Listings: Maximum 50 meetings per request
Use the parameter maxSentences to control transcript size.
Troubleshooting
Error: "Unauthorized - missing or invalid API key"
Cause: Invalid or missing API key
Solution:
Verify that the header
X-API-Keyis presentConfirm that the key is valid in Settings > API Keys
Verify that the key has not expired
Error: "Unknown tool: xxx"
Cause: Incorrect tool name
Solution:
Verify the tool name (case-sensitive)
Use
GET /api/v1/mcpto see the available toolsValid names (among others):
search_meetings,list_meetings,get_meeting_transcript,get_meeting_summary,get_meeting_details,find_meetings_by_participant,list_calls,search_calls,find_calls_by_participant,get_meeting_action_items,get_meetings_statistics
Error: "Meeting not found"
Cause: Meeting ID does not exist or you do not have access
Solution:
Verify that the ID is correct
Confirm that the meeting belongs to your organization
Use
list_meetingsto obtain valid IDs
The server does not appear in Claude Desktop
Solution:
Check that the configuration file is in the correct location
Check that the JSON is valid (no syntax errors)
Restart Claude Desktop completely
Check the Claude Desktop logs for errors
Very long responses or timeouts
Solution:
Use
maxSentencesto limit transcriptsReduce the
limitin searches and listingsUse
includeTranscript: falseif you only need the summaryFilter by dates to reduce the dataset
Support
Need help with the MCP server?
Email: support@salescaling.com
API Documentation: https://api.salescaling.com/api/docs
Community Slack: Join here
Additional Resources
Last updated: April 2026
Last updated
Was this helpful?
