Integrations
Connect HuntSales to your AI
HuntSales speaks MCP (Model Context Protocol), the open standard for connecting tools to AI assistants. Point Claude, ChatGPT, or any MCP client at HuntSales with an API key and your AI can answer questions about your contacts, pipeline, and the People Search database. If your role allows it, the same AI can run your CRM end to end: claim prospects, build campaigns, and launch them. Everything is scoped to your organisation by your key, and a key can do exactly what its owner's role allows in the app, no more.
Endpoint
https://huntsales.io/api/mcpTransport: Streamable HTTP (JSON-RPC 2.0). Auth: Bearer API key.
Create your API key
In HuntSales, open Admin, then Developer, name your key and click Create key. Every member can create their own key. There is nothing to configure: the key can do everything your role can do in the app, and follows your role if it changes (see What a key can do below). Copy the key when shown; it is only displayed once. It starts with hs_live_. Keep it private, it is scoped to your workspace, and you can revoke it from the same page any time (admins can see and revoke every key in the workspace).
Connect your AI client
Pick the app you use. Replace hs_live_YOUR_KEY with the key from step 1.
Claude Code (the CLI)
Run this one command in your terminal:
claude mcp add --transport http --scope user huntsales \
https://huntsales.io/api/mcp \
--header "Authorization: Bearer hs_live_YOUR_KEY"Check it worked with claude mcp list (HuntSales should show ✓ Connected). It is available in new Claude Code sessions.
Claude Desktop
Go to Settings → Developer → Edit Config (this opens a file called claude_desktop_config.json; if Windows asks which app to open it with, choose Notepad or VS Code). Add HuntSales inside mcpServers. Desktop launches local commands, so we use the mcp-remote bridge to reach the hosted server (you need Node.js installed):
{
"mcpServers": {
"huntsales": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://huntsales.io/api/mcp",
"--header", "Authorization: Bearer hs_live_YOUR_KEY"
]
}
}
}If you already have other servers, just add the huntsales block alongside them. Save the file and fully restart Claude Desktop. HuntSales then appears under Settings → Developer.
claude.ai or ChatGPT (web)
Add a custom connector pointing at https://huntsales.io/api/mcp. These web clients are built around OAuth, so if yours cannot send a custom Authorization header, use the Claude Code or Claude Desktop method above, those pass your key directly.
Ask your AI about your CRM
With a read-only key you can ask things like:
- How many contacts are at the Follow-up stage?
- What is my pipeline breakdown right now?
- How many HR managers in Singapore are in the database?
- How many HuntSales credits do I have left?
If your role includes the write permissions, you can ask it to do the work too. See the end-to-end example below.
ChatGPT and the OpenAI API
The same endpoint works with any MCP client. ChatGPT supports remote MCP connectors in Developer mode (Plus, Pro, Team, Enterprise, and Edu plans): turn it on under Settings then Apps then Advanced settings then Developer mode, then add a custom connector pointing at https://huntsales.io/api/mcp.
One thing to know about auth: HuntSales authenticates with your Bearer API key, which Claude Desktop passes as a custom header. ChatGPT connectors are built around OAuth, so if your client cannot send a custom Authorization header, the Claude setup above is the smoothest path today. Email us if you need a hand wiring up ChatGPT.
With the OpenAI API or Agents SDK, pass HuntSales as a remote MCP tool (thetools array with the endpoint URL and your key in the headers), the same way you would any hosted MCP server.
What a key can do
Keys are personal and inherit their owner's role. Every call re-checks the owner's current role permissions, so a key can never do more than the member who created it. If an admin changes that member's role, the key follows immediately. A removed member's keys stop working entirely. Superadmin keys can do everything.
- Reading your contacts, pipeline, campaign engagement, contact lists, connected mailboxes, and credit balance works for every member's key. Without the View All Contacts permission, contact reads are limited to contacts assigned or co-assigned to you plus unassigned ones, the same as in the app.
- Searching People Search and revealing emails/phones needs the Live Search permission on your role (reveals spend People Search credits).
- Adding People Search prospects needs People Search (this spends 1 People Search credit per contact added).
- Creating and updating contacts, moving stages, building lists needs Edit Contacts.
- Building, enrolling, and launching campaigns needs Campaigns, Email Setup & Replies.
- Managing webhook endpoints needs Automations.
How writes stay safe
- The tools that claim, spend, or start real sending (claim_prospects, create_list_from_filter, enroll_list, and launch_campaign, plus resuming a paused campaign or editing a live one) preview first and wait for an explicit confirm, so the AI shows you what it is about to do before it happens. Creating a draft campaign, adding contacts to a list, and editing a draft apply straight away, because a draft never sends until launched.
- Per-call caps protect you: claiming is capped at 500 prospects and enrolling individual contacts at 2,000 per call.
- Mailbox credentials never leave HuntSales. The AI can list your connected mailboxes, but connecting one (the OAuth sign-in) stays a manual step you do in Email Setup.
- Launching a campaign only flips it live. The normal warm-up, daily and monthly send caps, and your send window still pace the actual sending, exactly as they do in the app.
- Every write is audit-logged, and you can revoke any key from Settings the moment you want to cut access.
Read tools
get_creditsany memberYour HuntSales credit balance.
query_contactsany memberSearch your CRM contacts by name, email, or job title; filter by stage.
get_pipeline_summaryany memberCount of your contacts in each pipeline stage.
count_prospectsLive SearchCount fresh prospects in the People Search database that match a profile.
get_campaign_engagementany memberRead opens, clicks, and replies for a campaign.
list_mailboxesany memberYour connected sending mailboxes: address, provider, status, and daily limit. Credentials are never returned.
list_contact_listsany memberYour contact lists with member counts.
Write / operate tools
Available when your role includes the permission shown on each tool.
claim_prospectsPeople SearchAdd fresh prospects from People Search into your CRM. Previews first with a dry run, then adds on your explicit confirm. Spends 1 People Search credit per contact added; capped at 500 per call.
create_contactEdit ContactsAdd a new contact to your CRM.
update_contact_stageEdit ContactsMove a contact to a different pipeline stage.
create_listEdit ContactsCreate a contact list to organise prospects.
create_list_from_filterEdit ContactsBuild a list from a contact filter (stage, job title pattern, email status). Previews the match count first, then creates on your explicit confirm.
create_campaignCampaignsCreate a draft campaign with its sequence steps, sending mailbox, and send window. Drafts never send until launched.
update_campaignCampaignsRename a campaign, change its mailbox or send window, or pause and resume it.
set_sequence_stepCampaignsAdd or edit a sequence step: subject, body, and delay before it sends.
enroll_contactsCampaignsEnrol contacts into a campaign. Capped at 2,000 per call.
enroll_listCampaignsEnrol a whole contact list into a campaign. Previews how many would be enrolled first, then enrols on your explicit confirm.
launch_campaignCampaignsFlip a draft campaign live so it starts sending. Checks it has steps, a mailbox, and enrolled contacts, previews first with a dry run, then launches on your explicit confirm. Requires the Campaigns permission on your role.
End-to-end example
With a key whose owner holds the claiming and campaign permissions, paste a prompt like this to your connected Claude and let it drive:
Find HR managers in Singapore in the database. Claim 200 of them
into a new list called "SG HR managers". Then draft a 2-step
email campaign for that list. Show me a dry-run preview of the
launch, and once I confirm, launch it.Your AI uses count_prospects to size the audience, claim_prospects (dry run, then your confirm) to claim 200 into the list, create_campaign to build the draft with its steps and mailbox, enroll_list (dry run, then your confirm) to enrol the list, and launch_campaign (dry run, then your confirm) to flip it live. From there your normal warm-up and send limits pace the sending.
Prefer plain REST? See the HuntSales API reference.