# CallHub MCP connector

The CallHub connector brings contacts, phonebooks, tags, calling teams and campaigns into Elaichi, so Claude, ChatGPT or any MCP client can add supporters, tag them and check campaign usage within each person's own CallHub access.

Source: https://elaichi.ai/connectors/callhub/

## Facts

| | |
| --- | --- |
| Application | CallHub |
| Category | Voice |
| AI tools | 29 |
| Authentication | Connects with an API key |
| Bring your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once CallHub is connected

- Add these 40 canvass sign-ups to the Precinct 12 phonebook
- Tag every contact who asked about housing with Housing
- How many credits did the GOTV texting campaign use this week?

## Connect CallHub in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick CallHub.
2. Optionally set Share with, then press Connect.
3. Paste a CallHub API key. One person generates a token in CallHub and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which CallHub tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## CallHub MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## CallHub MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## CallHub MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect CallHub to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a CallHub tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with CallHub through Elaichi

### Add new supporters after a canvass

Organizing. Hand over the sign-up sheet and have the new names created as CallHub contacts in one batch, with the right tags already on them.

### Move a list into the right phonebook

Field. Add a batch of contacts to a phonebook before a call shift, or pull them out once the shift is done, without editing one row at a time.

### Set up a calling team for Saturday

Volunteer coordination. Create a new team in CallHub, add the volunteers who confirmed, and update agents who changed shifts, all from a plain request.

### Honor a do-not-call request right away

Compliance. When someone asks to stop being called, add them to the do-not-call list on the spot so no future campaign reaches them.

### Adjust a texting campaign before it goes out

Communications. Update a peer-to-peer texting campaign's details and review which campaigns are live, so the message that goes out is the one you meant.

### Check credits before a big push

Operations. Ask how many credits recent campaigns used and what is left, so the next calling or texting run is budgeted before it starts.

## Frequently asked questions

### How do I connect CallHub to Claude?

Connect CallHub in Elaichi first: CallHub signs in with an API key, so you paste the key from your CallHub account and Elaichi holds it. There is no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp as the endpoint. Claude signs you in through Elaichi and your CallHub contacts, phonebooks and teams are ready to ask about.

### Does CallHub work with ChatGPT and Cursor as well as Claude?

Yes. Once CallHub is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. You connect CallHub once and every client sees it.

### What can an AI agent actually do with my CallHub data?

With CallHub connected, an agent can create and update contacts, add or remove them from phonebooks in bulk, create and apply tags, and add people to the do-not-call list. It can also set up calling teams, update team agents, list your campaigns, update a peer-to-peer texting campaign and report on credits usage. Short concrete asks, such as "add these ten names to the Ward 3 phonebook", work better than long paragraphs.

### Does connecting CallHub give the AI access to all of my account?

No. Every request to CallHub runs as the person who signed in, so the agent only sees the contacts, phonebooks, teams and campaigns that person can already reach in CallHub. Elaichi can narrow that further with roles and restrictions, and it never widens what CallHub itself allows.

### Can my team share one CallHub connection?

Yes. One person connects CallHub in Elaichi and shares the connection with a team, and nobody else ever handles the API key. Each teammate still signs into Elaichi as themselves, so every contact added or team changed in CallHub is logged under their own name.

### Can I stop an agent from deleting or changing things in CallHub?

Yes. Restrictions in Elaichi apply per action, so you can allow reading and creating CallHub contacts while blocking deletion of contacts, tags or teams. A restricted action is never advertised to Claude, ChatGPT or any other client, so no prompt can reach it.

### What happens to a CallHub connection when someone leaves?

Offboarding a person in Elaichi ends their access to CallHub through every client at once. If they connected a shared CallHub account, that connection keeps working for everyone else on the team. Disconnecting CallHub once in Elaichi removes it from every client at the same time.

### Does the CallHub MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. CallHub is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

## All 29 CallHub tools

Every tool below is callable through https://api.elaichi.ai/mcp once CallHub is connected, subject to the toolbox it is in and the restrictions on the caller.

- **Create a CallHub contact** (Create). Create a new CallHub contact. Returns the created contact record including id, url, phonebooks, contact, mobile, first_name, last_name, and email. Required: contact (the phone number used in all voice campaigns).
- **Delete a CallHub contact by ID** (Delete). Delete a CallHub contact by id. Returns an empty 204 response on success. Required: id.
- **Get single CallHub contact by ID** (Get). Get a single CallHub contact by id. Returns the contact record including id, url, phonebooks, contact, mobile, first_name, last_name, and email. Required: id.
- **Update a CallHub contact by ID** (Update). Update an existing CallHub contact by id. Returns the updated contact record including id, url, phonebooks, contact, mobile, first_name, and last_name. Required: id and contact (the phone number used in all voice campaigns).
- **Create a CallHub contact tag** (Create). Create one or more tags on a CallHub contact. Returns the created tag objects including name, crm_type, crm_id, id, pk_str, and created_date. Required: contact_id, name.
- **Delete a CallHub contact tag by ID** (Delete). Delete a tag from a CallHub contact by tag id. Returns an empty 204 response on success. Required: contact_id and id.
- **CallHub phonebook contacts bulk add** (Add). Add existing CallHub contacts to a phonebook in bulk. Returns the updated phonebook object including its id, url, owner, name, description, and contact count. Required: phonebook_id, contact_ids.
- **CallHub phonebook contacts bulk remove** (Delete). Remove existing CallHub contacts from a phonebook in bulk. Returns the updated phonebook object including its id, url, owner, name, description, and contact count. Required: phonebook_id, contact_ids.
- **List all CallHub phonebook contacts** (List). List all contacts in a CallHub phone book, each with all contact details. Returns: url, phonebooks, contact, mobile, last_name, first_name, country_code, email, address, city, state, company_name, company_website, job_title. Required: phonebook_id. Max page size 1000.
- **Create a CallHub contacts bulk create** (Create). Bulk import contacts into a CallHub phonebook from an uploaded CSV file or a hosted csv_url. Returns: message, openapi, info, servers, components, security, paths, x-readme, x-readme-fauxas. Required: phonebook_id, mapping. Either contacts_csv or csv_url must be supplied; imports are processed asynchronously one at a time.
- **Create a CallHub tag** (Create). Create a tag in CallHub. Returns the created tag object including id, name, crm_id, crm_type, contact, created_date, and updated_date. Required: tag (the name of the tag to create).
- **Get single CallHub tag by ID** (Get). Get details of a specific tag in CallHub by its id. Returns the tag record with id, name, crm_id, crm_type, contact, created_date, and updated_date. Required: id.
- **Get single CallHub team agent by ID** (Get). Get agent details for a CallHub team by id. Returns: agents_data, team. Required: id.
- **List all CallHub team agents** (List). List the existing agents assigned to a CallHub team. Returns: agents. Required: team_id.
- **CallHub team agents bulk delete** (Delete). Remove existing agents from a CallHub team. Pass the agent ids to remove in agent_ids. Required: team_id. Returns an empty 204 response on success.
- **CallHub team agents bulk update** (Update). Assign existing agents to a CallHub team. Returns the team record: id, name, created_at. Required: team_id, agent_ids.
- **Create a CallHub team** (Create). Create a team in CallHub with the given name. Returns the created team object including id, name, created_at, and pk_str (the team id as a string). Required: name.
- **Delete a CallHub team by ID** (Delete). Delete a team in CallHub by id. Returns an empty 204 response on success. Required: id.
- **List all CallHub teams** (List). List teams in CallHub. Returns each team's id, name, and created_at.
- **Update a CallHub team by ID** (Update). Update a team's name in CallHub by id. Returns the updated team object including id, name, and created_at. Required: id, name.
- **List all CallHub campaign info** (List). List CallHub campaign info for the campaigns the agent is assigned to, filtered by campaign IDs. Returns an array of campaign info objects including id, name, status, script, totalcontact, completed, phonebook, and created_date. Required: id (array of Campaign IDs).
- **List all CallHub credits usage** (List). Get CallHub credits usage details for a date range. Returns a usage report with count, next, previous, and results containing total_usage records (sms_amount, voice_amount, voice_calls, credits_remaining) plus per-campaign-type usage breakdowns. Required: start_date (mm/dd/yyyy). If end_date is omitted, usage covers a single day; all usage details cover UTC 00:00-23:59.
- **Create a CallHub dnc contact** (Create). Create a new DNC contact in CallHub, adding a phone number to a Do-Not-Call list. Returns: url, dnc, phone_number, openapi, info, servers, components, security, paths, x-readme, x-readme-fauxas. Required: dnc, phone_number. Set category to 1 for opted out of calling only, 2 for opted out of texting only, or 3 for both (defaults to 3).
- **Update a CallHub p 2 p campaign by ID** (Update). Update a CallHub P2P campaign's status (1 = START, 2 = PAUSE, 4 = END) or rename it. Returns: id, name, status, openapi, info, servers, components, security, paths, x-readme, x-readme-fauxas. Required: id. PATCH semantics — at least one of status or name must be provided, and name cannot be changed while the campaign is running (status 1) unless the same request also transitions it out of START.
- **List all CallHub calling numbers** (List). List rented calling numbers in Callhub. Returns: phone_number, country, region, last_rent, is_active, last_used_date, is_used_in_campaign. Filterable by country, region, and number prefix; max 1000 per page.
- **List all CallHub validated numbers** (List). List the phone numbers validated for use in CallHub campaigns. Returns a list where each item includes phone_number. Max 1000 per page.
- **Create a CallHub rent number** (Create). Rent a phone number in CallHub for use in call center or voice broadcast campaigns. Returns the rented number with id, phone_number, country, region, status, voice/sms/mms capability flags, and rental charges. Required: country_iso. If no numbers are available in the requested area code, a random number from the country is rented.
- **Create a CallHub template** (Create). Create a CallHub script template with a label and a list of survey/text questions. Returns the created template: label, questions. Required: label, questions; each question requires type (12 or 1) and question text.
- **List all CallHub templates** (List). List CallHub script templates. Returns template records with id, label, and their survey/text questions.
