MCP Server
Enrichment inside your AI tools
Connect the SalesQL MCP to Claude, ChatGPT, Gemini or Cursor — authorize once, no key to paste — then prospect, reveal verified emails and check credits without leaving the chat.
https://mcp.salesql.com/mcpConnect your client
Every client points at the same endpoint, and most of them can authorize themselves against it — you approve a consent screen and never handle a credential. An MCP key stays available under each client's advanced section, for tools that can't do OAuth. Jump to yours:
Claude
OAuthThe easiest path, and no key involved. Claude reaches the server from Anthropic’s cloud, so the same connector works in the browser and in the desktop app.
- On a personal account: open Customize → Connectors, click “+” and then Add custom connector.
- On a Team or Enterprise account an owner adds it once, under Organization settings → Connectors → Add → Custom → Web. Members then just hit Connect on it under Customize → Connectors.
- Paste https://mcp.salesql.com/mcp as the remote MCP server URL and click Add.
- Click Connect. Claude opens the SalesQL consent screen — approve the scopes and the tools appear in the composer.
Leave the Advanced settings OAuth client ID and secret empty: the server registers Claude for you.
Or let your assistant do it
Paste this in and it will walk you through authorizing, then read your plan and credits back so you know the connection works.
Help me connect the SalesQL MCP server to Claude. The server URL is https://mcp.salesql.com/mcp and it uses OAuth, so there is no API key to paste anywhere. Walk me through it step by step for Claude specifically, including where to approve the SalesQL consent screen. When it reports connected, call get_account_status and read back my plan, remaining credits and next refresh date so we know the connection really works. Then run one free search_people query as a smoke test — don't spend credits.
Manual setup with an MCP key (advanced)
Only needed if you want a long-lived key instead of a connection you can revoke per client. Claude Desktop reads this file at startup; it bridges to the HTTP server through mcp-remote, which needs Node 18+.
{
"mcpServers": {
"salesql": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://mcp.salesql.com/mcp",
"--header", "Authorization: Bearer YOUR_MCP_KEY"
]
}
}
}Check with node -v and which npx; a stale nvm default is the usual cause of "Server disconnected". Fully quit Claude (Cmd+Q) and reopen after editing.
Claude Code
OAuthOne command, then authorize in the browser. Keep --transport http — it is the only transport that carries OAuth.
claude mcp add --transport http salesql https://mcp.salesql.com/mcp- Run the command above.
- Type /mcp inside Claude Code, pick salesql, and choose Authenticate.
- Approve the scopes in the browser tab that opens.
Tokens go to your system keychain and refresh on their own. The same /mcp panel has Clear authentication when you want to disconnect.
Or let your assistant do it
Paste this in and it will walk you through authorizing, then read your plan and credits back so you know the connection works.
Help me connect the SalesQL MCP server to Claude Code. The server URL is https://mcp.salesql.com/mcp and it uses OAuth, so there is no API key to paste anywhere. Walk me through it step by step for Claude Code specifically, including where to approve the SalesQL consent screen. When it reports connected, call get_account_status and read back my plan, remaining credits and next refresh date so we know the connection really works. Then run one free search_people query as a smoke test — don't spend credits.
Manual setup with an MCP key (advanced)
Pass the key as a header instead of authorizing — useful in CI, or on a machine with no browser.
claude mcp add --transport http salesql \
https://mcp.salesql.com/mcp \
--header "Authorization: Bearer YOUR_MCP_KEY"ChatGPT
Developer ModeOAuthCustom MCP apps live behind Developer mode. Once it is on, adding SalesQL is a few fields and a consent screen — no key to generate.
- Open Settings → Apps → Advanced settings and turn on Developer mode. Older builds label this section Connectors.
- Back in Settings → Apps, choose Create.
- Name it SalesQL, paste https://mcp.salesql.com/mcp as the MCP server URL, and set Authentication to OAuth.
- Save, then Connect and approve the SalesQL consent screen.
On ChatGPT web. SalesQL exposes tools that act on your account, which needs full MCP — OpenAI documents that for Business and Enterprise/Edu workspaces, where an admin may also have to allow custom MCP connectors first; other plans may be limited to search and fetch. OpenAI moves this surface often, so check their Developer mode help article if the menus don’t match.
Or let your assistant do it
Paste this in and it will walk you through authorizing, then read your plan and credits back so you know the connection works.
Help me connect the SalesQL MCP server to ChatGPT. The server URL is https://mcp.salesql.com/mcp and it uses OAuth, so there is no API key to paste anywhere. Walk me through it step by step for ChatGPT specifically, including where to approve the SalesQL consent screen. When it reports connected, call get_account_status and read back my plan, remaining credits and next refresh date so we know the connection really works. Then run one free search_people query as a smoke test — don't spend credits.
Manual setup with an MCP key (advanced)
If you would rather authenticate with a key, pick API key instead of OAuth when you create the connector.
# Settings → Apps → Create (older builds: Connectors)
Name: SalesQL
URL: https://mcp.salesql.com/mcp
Auth: Bearer YOUR_MCP_KEYGemini CLI
OAuthDeclare the server with OAuth enabled, then authorize once from inside the CLI. No token in your settings file.
{
"mcpServers": {
"salesql": {
"httpUrl": "https://mcp.salesql.com/mcp",
"oauth": { "enabled": true }
}
}
}- Add the block above to ~/.gemini/settings.json.
- Run /mcp auth inside the CLI and pick salesql.
- Approve the scopes in the browser.
Gemini CLI discovers the endpoints from the server itself. Tokens are cached in ~/.gemini/mcp-oauth-tokens.json and refreshed automatically — re-run /mcp auth if they ever expire.
Or let your assistant do it
Paste this in and it will walk you through authorizing, then read your plan and credits back so you know the connection works.
Help me connect the SalesQL MCP server to Gemini CLI. The server URL is https://mcp.salesql.com/mcp and it uses OAuth, so there is no API key to paste anywhere. Walk me through it step by step for Gemini CLI specifically, including where to approve the SalesQL consent screen. When it reports connected, call get_account_status and read back my plan, remaining credits and next refresh date so we know the connection really works. Then run one free search_people query as a smoke test — don't spend credits.
Manual setup with an MCP key (advanced)
Send the key as a header instead. Anything in this file is stored in plain text, so prefer OAuth on a shared machine.
{
"mcpServers": {
"salesql": {
"httpUrl": "https://mcp.salesql.com/mcp",
"headers": { "Authorization": "Bearer YOUR_MCP_KEY" }
}
}
}Perplexity
ConnectorsOAuthAdd SalesQL as a custom remote connector and let Perplexity discover the rest.
- Settings → Connectors → Add connector.
- Paste https://mcp.salesql.com/mcp, set Transport to Streamable HTTP and Authentication to OAuth.
- Save, connect, and approve the consent screen.
Leave Client ID and Client Secret empty — the server supports dynamic registration, so Perplexity registers itself. Remote connectors require a paid Perplexity plan.
Or let your assistant do it
Paste this in and it will walk you through authorizing, then read your plan and credits back so you know the connection works.
Help me connect the SalesQL MCP server to Perplexity. The server URL is https://mcp.salesql.com/mcp and it uses OAuth, so there is no API key to paste anywhere. Walk me through it step by step for Perplexity specifically, including where to approve the SalesQL consent screen. When it reports connected, call get_account_status and read back my plan, remaining credits and next refresh date so we know the connection really works. Then run one free search_people query as a smoke test — don't spend credits.
Manual setup with an MCP key (advanced)
Choose API key instead of OAuth when you add the connector.
# Settings → Connectors → Add connector
Name: SalesQL
URL: https://mcp.salesql.com/mcp
Auth: Bearer YOUR_MCP_KEYVS Code
OAuthFor GitHub Copilot agent mode. VS Code notices the server wants OAuth and prompts you to sign in — the file holds no secret, so you can commit it.
{
"servers": {
"salesql": {
"type": "http",
"url": "https://mcp.salesql.com/mcp"
}
}
}- Save the block above as .vscode/mcp.json.
- Click Auth in the CodeLens above the server entry — or just ask Copilot for a SalesQL tool and let it prompt you.
- Approve the scopes in the browser window VS Code opens.
Because there is no key in it, this file is safe to commit — every teammate authorizes with their own SalesQL account.
Or let your assistant do it
Paste this in and it will walk you through authorizing, then read your plan and credits back so you know the connection works.
Help me connect the SalesQL MCP server to VS Code. The server URL is https://mcp.salesql.com/mcp and it uses OAuth, so there is no API key to paste anywhere. Walk me through it step by step for VS Code specifically, including where to approve the SalesQL consent screen. When it reports connected, call get_account_status and read back my plan, remaining credits and next refresh date so we know the connection really works. Then run one free search_people query as a smoke test — don't spend credits.
Manual setup with an MCP key (advanced)
Header auth works too, but it puts a live credential in a file people commit by accident.
{
"servers": {
"salesql": {
"type": "http",
"url": "https://mcp.salesql.com/mcp",
"headers": { "Authorization": "Bearer YOUR_MCP_KEY" }
}
}
}Cursor
OAuthPoint Cursor at the endpoint and let it handle the handshake — OAuth 2.1 with PKCE, registering itself as it goes.
{
"mcpServers": {
"salesql": {
"url": "https://mcp.salesql.com/mcp"
}
}
}- Add the block above to ~/.cursor/mcp.json — or .cursor/mcp.json to scope it to one project.
- Open Settings → MCP and click Connect (or Needs login) next to salesql.
- Approve the scopes in the browser.
No client ID or secret to fill in: the server registers Cursor dynamically.
Or let your assistant do it
Paste this in and it will walk you through authorizing, then read your plan and credits back so you know the connection works.
Help me connect the SalesQL MCP server to Cursor. The server URL is https://mcp.salesql.com/mcp and it uses OAuth, so there is no API key to paste anywhere. Walk me through it step by step for Cursor specifically, including where to approve the SalesQL consent screen. When it reports connected, call get_account_status and read back my plan, remaining credits and next refresh date so we know the connection really works. Then run one free search_people query as a smoke test — don't spend credits.
Manual setup with an MCP key (advanced)
Header auth, for a machine that can’t open a browser.
{
"mcpServers": {
"salesql": {
"url": "https://mcp.salesql.com/mcp",
"headers": { "Authorization": "Bearer YOUR_MCP_KEY" }
}
}
}Any client
OAuthAny client that speaks Streamable HTTP and the MCP authorization spec can connect unaided: the server publishes its own metadata and accepts dynamic client registration, so there is nothing to pre-register and no secret to exchange.
Endpoint: https://mcp.salesql.com/mcp
Transport: Streamable HTTP
Auth: OAuth 2.1 — authorization code + PKCE (S256)
Discovery: https://mcp.salesql.com/.well-known/oauth-protected-resource/mcpOr let your assistant do it
Paste this in and it will walk you through authorizing, then read your plan and credits back so you know the connection works.
Help me connect the SalesQL MCP server to Any client. The server URL is https://mcp.salesql.com/mcp and it uses OAuth, so there is no API key to paste anywhere. Walk me through it step by step for Any client specifically, including where to approve the SalesQL consent screen. When it reports connected, call get_account_status and read back my plan, remaining credits and next refresh date so we know the connection really works. Then run one free search_people query as a smoke test — don't spend credits.
Manual setup with an MCP key (advanced)
Or send a key on every request.
Endpoint: https://mcp.salesql.com/mcp
Header: Authorization: Bearer YOUR_MCP_KEYPrompt library
Copy a playbook, or open it straight in your assistant. Searching is free, so most of these start by shaping a list before spending a single credit.
"Here is my website: acme.com. Propose an ideal customer profile — job titles, industries, company sizes and countries — then resolve those filters with lookup and show me how many people match."
"Find 25 Heads of Talent at software companies with 51–200 employees in Spain who have a verified work email. Show them first, and only enrich the ones I pick."
"Map the marketing team at acme.com — group them by job title, most senior first. Enrich only the top two."
"How many VPs of Sales are there in fintech companies in Germany with 201–500 employees and a direct phone on file? Just the count and a sample — don’t spend credits yet."
"Find RevOps leaders who started their current role less than 12 months ago at US SaaS companies — new leaders are the ones changing tools."
"Find people who used to work at Stripe and are now heads of engineering somewhere else in Europe."
"Who is behind jane.doe@acme.com? Give me their full name, title, company and LinkedIn."
Available tools
Enrichment consumes credits. Everything else is free, so you can search and size a list before spending anything:
lookupsearch_peopleget_account_status| Tool | What it does | Cost |
|---|---|---|
lookup | Resolve the exact filter values (company_size, company_type, industry, country, region) that search_people expects. Always pass the returned `value`, never the human-readable `label`. | Free |
search_people | Prospect for people by job title, industry, location, company and contact availability. Pass at least one filter — an empty request is rejected. Emails and phones come back obfuscated, so you can size and refine a list before spending anything — enrich a match with its linkedin_url to reveal the real contact data. | Free |
enrich_person | Reveal a contact’s work email, phone, job title, company and LinkedIn. Prefer a LinkedIn URL; otherwise name + company. | 1 credit |
enrich_person_bulk | Enrich up to 100 people in a single request. Each item takes a LinkedIn URL, an email, or a name + organization. | 1 credit |
enrich_organization | Enrich a company: domain, industry, size, location, logo and LinkedIn. Prefer a LinkedIn URL, then a domain, then a name. | 1 credit |
enrich_organization_bulk | Enrich up to 100 companies in a single request. Each item takes a LinkedIn URL, a domain, or a name. | 1 credit |
get_account_status | Return the current plan, available credits, next refresh date, role and rate limits for the authenticated key. | Free |
Scopes
One list, two ways of granting it: an OAuth connection asks you to approve scopes on the consent screen, and an MCP key carries the ones you tick when you create it. Approve only what the client needs — searching and enrichment are separate grants. The enrichment tools accept either enrich scope; the one you grant decides whether emails, phones or both come back. verify:verify exists for API keys but no MCP tool uses it yet.
account:readget_account_statusPlan, credit balance, refresh date and rate limits. Livesearch:readsearch_peoplelookupProspect for people and resolve the filter values a search needs. Liveenrich:emailsenrich_personenrich_person_bulkenrich_organizationenrich_organization_bulkReveal verified work and personal email addresses. Liveenrich:phonesenrich_personenrich_person_bulkenrich_organizationenrich_organization_bulkReveal direct dials and mobile numbers. Livecampaigns:readRead outbound campaigns and their stats. Latercampaigns:writeCreate and edit outbound campaigns. Latercampaigns:sendSend outbound campaigns. LaterConnected clients
Every OAuth connection is its own grant, listed under Connectors → MCP → Connected clients in the dashboard, with the scopes it was approved for and who approved it.
Disconnecting a client revokes that grant immediately and only that one — your other connected tools keep working. Reconnecting is the same consent screen again.
A client that can’t prove which product it is shows as Unverified: the name is self-reported by whatever software connected. Treat an Unverified entry you don’t recognise as something to disconnect.
Rate limits & credits
Unified API & MCP quota · sharedThe MCP runs on the same access as the SalesQL API: it’s available on the Professional and Organization plans. The Basic plan and free accounts can’t connect it yet.
The MCP and REST API draw on one shared credit balance and rate limit — across all your API keys, MCP keys and connected clients, based on your plan. Bursts above your plan’s per-minute limit return 429 — back off and retry.
Enrichment spends 1 credit per matched contact. Everything else is free — lookup, search_people, get_account_status — so you can search, size a list and check your balance without spending anything. Ask get_account_status for your live balance, plan and limits.
Troubleshooting
- The consent screen refuses, or every tool fails right after connecting
- The MCP runs on the same access as the SalesQL API: the Professional and Organization plans. Check which account the browser is signed into before you approve — approving with a personal free account is the usual cause. On the Basic plan the consent screen may let you through and the tools still refuse, because the two checks are not the same one.
- The client can’t connect
- Confirm the transport is Streamable HTTP and the URL ends in /mcp. Opening that URL in a browser is not the connection test — a plain GET is refused by design (405 today), so “it doesn’t open” tells you nothing either way. Let the client connect instead.
- A tool answers “This MCP key lacks a required scope”
- The connection was approved without that capability. For an OAuth connection, disconnect it under Connectors → MCP → Connected clients and reconnect, approving every scope you need. For an MCP key, edit its scopes in the same screen.
- “Your OAuth connection has no backing SalesQL API key”
- The connection outlived the key minted for it — usually because that key was revoked. Reconnect SalesQL from your client’s settings and the connection is rebuilt.
- Tools return “insufficient credits”
- Ask for get_account_status: it reports your plan, remaining credits and the next refresh date, and costs nothing. Only enrichment spends credits — searching and status checks never do.
- Enrichment returns no match
- Unmatched lookups don’t spend credits. Prefer the linkedin_url from a search_people result — it’s the most reliable identifier — and drop match_if_direct_email / match_if_direct_phone if you set them.
- Claude Desktop: “Server disconnected” or npm errors (E405)
- That’s the mcp-remote bridge, which only the MCP-key path uses, and it needs Node 18+. Run node -v and which npx; a stale nvm default is the usual cause. The OAuth connector needs none of this — switch to it and the problem disappears.