Connectors · Email & messaging
JustCall MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to JustCall and the rest of your systems. It gives your agent 100 JustCall actions (56 reads, 33 writes and 11 that wait for a confirmation) and holds the JustCall credential itself, so the agent never does. It paces JustCall's limits and records every call.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcpdo { action: "justcall.users.list", intent: "check which JustCall account is connected"}# List all users · read · 1 upstream call- 100actionsin one signed file
- 56readlook, never change
- 33writecreate and update
- 11wait for a yesdestructive, confirmed first
Set up
Connect JustCall in three steps.
- 01
Add actionlake to Claude.
Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
https://connect.actionlake.com/mcp - 02
Connect JustCall.
API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
api_keyJustCall API key (Profile > APIs and Webhooks)api_secretJustCall API secret (Profile > APIs and Webhooks)
account { op: "connections.requirements", service: "justcall" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "justcall.users.list" }# list all users · read · 1 upstream callcheck { action: "justcall.texts.send", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
JustCall at a glance
- Sign-in
- API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
- You provide
api_keyapi_secret- Limits we pace to
- 30 calls a minute, per connection
- API covered
- JustCall (cloud phone: calls, SMS/MMS, WhatsApp, RCS, contacts, Sales Dialer, JustCall AI) API v2.1
api.justcall.io - Built from
- JustCall's documentation, read 23 October 2026developer.justcall.iodeveloper.justcall.io
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 56 of 56 reads, for up to 5 minutes; a write clears what it affects
- Shared entities
- 4, so ask can line JustCall up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in JustCall.
100 actions in 25 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 56readlook, never change
- 33writecreate and update
- 11destructivewait for a confirmation
Sales dialer contacts
94 read · 4 write · 1 destructive
Bulk Add Contacts to DNCA · Bulk import contacts · Create contact · List all contacts
Text groups
94 read · 3 write · 2 destructive
Create a group · List all groups · List group messages · Send message in a group
Contacts
83 read · 4 write · 1 destructive
List all contacts · Create contact · Get a contact · Update contact
Sales dialer campaigns
73 read · 3 write · 1 destructive
Add contact to a campaign · Create campaign · List all campaigns · List campaign contacts
User groups
72 read · 3 write · 2 destructive
List all user groups · Create a user group · Get a user group · Update a user group
Calls
54 read · 1 write · 0 destructive
List all calls · Get a call · Update a call · Get call journey
RCS templates
51 read · 4 write · 0 destructive
Create a card template · Create a carousel template · Create a media template · Create a text template
Special dates
52 read · 2 write · 1 destructive
Create a special date · List all special dates · Get a special date · Update a special date
17 more areas · 45 actions
- Text tags 4
- Text threads 4
- Texts 4
- Whatsapp messages 4
- Appointments 3
- Call analytics 3
- Phone numbers 3
- RCS messages 3
- Users 3
- Webhooks 3
- Calls AI 2
- Meetings AI 2
- Sales dialer calls 2
- Voice agents 2
- RCS phones 1
- Sales dialer analytics 1
- Whatsapp templates 1
Top actions
The JustCall API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 19 of JustCall's 19 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
justcall.users.listList all users | Utilize this endpoint to fetch a list of all the users added to your JustCall account and to filter a set of users via the query parameters. | read | identity.user.list474 connectors |
justcall.calls.listList all calls | Retrieve all calls linked to an account or refine the call selection as needed by utilizing the numerous query parameter fields. | read | comm.call.list44 connectors |
justcall.texts.listList all texts | Retrieve all text messages linked to an account or refine the message selection as needed by utilizing the various query parameter fields. | read | comm.sms.list19 connectors |
justcall.contacts.listList all contacts | Retrieve all contacts present in your account or filter the contacts based on one or more query parameters. | read | crm.contact.list177 connectors |
justcall.users.getGet a user | Get data for a specific user using this endpoint by sending their id (agent_id can be found via the List all users API). | read | identity.user.get399 connectors |
justcall.texts.sendSend SMS/MMS | Utilize this endpoint to send SMS messages via the JustCall API and leverage it for setting up SMS automation's in a third-party tool as well. | write | comm.sms.send26 connectors |
justcall.calls.getGet a call | Utilize this endpoint for retrieval of data for a Call, including details such as duration, direction, status, timestamps, notes, and dispositions. | read | comm.call.get40 connectors |
justcall.contacts.createCreate contact | Utilize this endpoint to add a new contact to JustCall’s ‘Contacts’ section. | write | crm.contact.create161 connectors |
justcall.contacts.deleteDelete contact | Utilize this endpoint to delete a specific contact from your JustCall account using the ‘id’ or the ‘contact_number’ of the contact. | destructive | crm.contact.delete147 connectors |
justcall.user_groups.listList all user groups | Utilize this endpoint to fetch a list of all the user groups added to your JustCall account and to filter a set of user groups via the query parameters. | read | identity.group.list262 connectors |
justcall.user_groups.createCreate a user group | Create a user group using this endpoint by sending the group name, extension and member ids. | write | identity.group.create205 connectors |
justcall.texts.check_replyCheck reply | Check the response for a specific SMS sent to a user by providing the contact's phone number and, optionally, the JustCall number. | read | this connector |
Try it
Prompts to paste into Claude.
Each one names the JustCall actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Find the JustCall contacts with no email address, so we can clean them up.
calls
justcall.contacts.list - Writewrite
Send SMS/MMS in JustCall. Show me exactly what you will send before you save it.
calls
justcall.texts.send - Across systemsread
Which contacts are in both JustCall and HaloPSA, and how many are in only one of them?
calls
justcall.contacts.listhalopsa.users.list
Across your systems
JustCall, joined to the rest of your business.
One ask fetches from JustCall and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.
Which contacts are in both JustCall and HaloPSA, and how many are in only one of them?
justcall.contacts.list+halopsa.users.list, oncrm.contact· HaloPSAWhich contacts are in both JustCall and NetSuite, and how many are in only one of them?
justcall.contacts.list+netsuite.views.contacts, oncrm.contact· NetSuite
identity.user 517crm.contact 192comm.call 33comm.sms 8ask { intent: "which contacts are in both JustCall and HaloPSA, and how many are in only one of them", steps: [ { action: "justcall.contacts.list", as: "people", input: {}, limit: 100, max_pages: 5 }, { action: "halopsa.users.list", as: "people2", input: {}, limit: 100, max_pages: 5 }, { join: { left: "people", right: "people2", on: "crm.contact", group_by: "people.email", select: ["people.email", "count(people2.id) as in_halopsa"] } } ]}Governance for JustCall
Destructive actions wait for a yes.
11 JustCall actions are destructive. These are all of them:
- Delete contact
justcall.contacts.delete - Delete a user group
justcall.user_groups.delete - Delete a tag
justcall.text_tags.delete - Delete a group
justcall.text_groups.delete - Remove URL from webhook
justcall.webhooks.delete_url - Delete a special date
justcall.special_dates.delete - Remove tag from thread
justcall.text_threads.remove_tag - Remove members from a group
justcall.text_groups.remove_members - Remove members from a user group
justcall.user_groups.remove_members - Delete contact
justcall.sales_dialer_contacts.delete - Remove contact from a campaign
justcall.sales_dialer_campaigns.remove_contact
A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.
Delete contact?
intent: the user asked me to delete contact
account { op: "keys.create", name: "justcall-agent", allowed_actions: ["justcall.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "justcall.contacts.delete", approver: "[email protected]" }, { match: "justcall.user_groups.delete", approver: "[email protected]" }, { match: "justcall.text_tags.delete", approver: "[email protected]" } ]}Cost
What JustCall costs on actionlake.
Every JustCall action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call JustCall refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
- 1upstream call per actionall 100 JustCall actions
- 23actions pageeach page of a long list is one call
- 56reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every JustCall action.
100 actions by area: the id your agent calls, what it does, and its effect.
Sales dialer contacts9
justcall.sales_dialer_contacts.bulk_add_dncaBulk Add Contacts to DNCAwritejustcall.sales_dialer_contacts.bulk_importBulk import contactswritejustcall.sales_dialer_contacts.bulk_import_statusGet bulk import statusreadjustcall.sales_dialer_contacts.createCreate contactwritejustcall.sales_dialer_contacts.deleteDelete contactdestructivejustcall.sales_dialer_contacts.getGet a contactreadjustcall.sales_dialer_contacts.listList all contactsreadjustcall.sales_dialer_contacts.list_custom_fieldsList contact custom fieldsreadjustcall.sales_dialer_contacts.updateUpdate contactwrite
Text groups9
justcall.text_groups.add_membersAdd members to a groupwritejustcall.text_groups.createCreate a groupwritejustcall.text_groups.deleteDelete a groupdestructivejustcall.text_groups.getGet a groupreadjustcall.text_groups.get_messageGet a group messagereadjustcall.text_groups.listList all groupsreadjustcall.text_groups.list_messagesList group messagesreadjustcall.text_groups.remove_membersRemove members from a groupdestructivejustcall.text_groups.send_messageSend message in a groupwrite
Contacts8
justcall.contacts.bulk_add_to_blacklistBulk add contacts to blacklistwritejustcall.contacts.createCreate contactwritejustcall.contacts.deleteDelete contactdestructivejustcall.contacts.getGet a contactreadjustcall.contacts.listList all contactsreadjustcall.contacts.list_blacklistList blacklist contactsreadjustcall.contacts.updateUpdate contactwritejustcall.contacts.update_statusUpdate contact statuswrite
Sales dialer campaigns7
justcall.sales_dialer_campaigns.add_contactAdd contact to a campaignwritejustcall.sales_dialer_campaigns.createCreate campaignwritejustcall.sales_dialer_campaigns.getGet a campaignreadjustcall.sales_dialer_campaigns.listList all campaignsreadjustcall.sales_dialer_campaigns.list_contactsList campaign contactsreadjustcall.sales_dialer_campaigns.remove_contactRemove contact from a campaigndestructivejustcall.sales_dialer_campaigns.updateUpdate campaignwrite
User groups7
justcall.user_groups.add_membersAdd members to a user groupwritejustcall.user_groups.createCreate a user groupwritejustcall.user_groups.deleteDelete a user groupdestructivejustcall.user_groups.getGet a user groupreadjustcall.user_groups.listList all user groupsreadjustcall.user_groups.remove_membersRemove members from a user groupdestructivejustcall.user_groups.updateUpdate a user groupwrite
Calls5
justcall.calls.getGet a callreadjustcall.calls.get_journeyGet call journeyreadjustcall.calls.get_voice_agent_dataGet voice agent datareadjustcall.calls.listList all callsreadjustcall.calls.updateUpdate a callwrite
RCS templates5
justcall.rcs_templates.create_cardCreate a card templatewritejustcall.rcs_templates.create_carouselCreate a carousel templatewritejustcall.rcs_templates.create_mediaCreate a media templatewritejustcall.rcs_templates.create_textCreate a text templatewritejustcall.rcs_templates.listList all templatesread
Special dates5
justcall.special_dates.createCreate a special datewritejustcall.special_dates.deleteDelete a special datedestructivejustcall.special_dates.getGet a special datereadjustcall.special_dates.listList all special datesreadjustcall.special_dates.updateUpdate a special datewrite
Text tags4
justcall.text_tags.createCreate a tagwritejustcall.text_tags.deleteDelete a tagdestructivejustcall.text_tags.getGet a tagreadjustcall.text_tags.listList all tagsread
Text threads4
justcall.text_threads.add_tagAdd tag to threadwritejustcall.text_threads.getGet a threadreadjustcall.text_threads.listList all threadsreadjustcall.text_threads.remove_tagRemove tag from threaddestructive
Texts4
justcall.texts.check_replyCheck replyreadjustcall.texts.getGet a textreadjustcall.texts.listList all textsreadjustcall.texts.sendSend SMS/MMSwrite
Whatsapp messages4
justcall.whatsapp_messages.check_replyCheck message replyreadjustcall.whatsapp_messages.getGet a messagereadjustcall.whatsapp_messages.listList all messagesreadjustcall.whatsapp_messages.sendSend messagewrite
Appointments3
justcall.appointments.available_slotsList available slotsreadjustcall.appointments.createCreate an appointmentwritejustcall.appointments.getGet an appointmentread
Call analytics3
justcall.call_analytics.accountAccount analyticsreadjustcall.call_analytics.agentAgent analyticsreadjustcall.call_analytics.numberNumber analyticsread
Phone numbers3
justcall.phone_numbers.detectDetect incoming numberreadjustcall.phone_numbers.getGet a phone numberreadjustcall.phone_numbers.listList all phone numbersread
RCS messages3
justcall.rcs_messages.getGet a messagereadjustcall.rcs_messages.listList all messagesreadjustcall.rcs_messages.sendSend messagewrite
Users3
justcall.users.getGet a userreadjustcall.users.listList all usersreadjustcall.users.update_availabilityUpdate user availabilitywrite
Webhooks3
justcall.webhooks.createAdd URL to webhookwritejustcall.webhooks.delete_urlRemove URL from webhookdestructivejustcall.webhooks.listList subscribed webhooksread
Calls AI2
justcall.calls_ai.getGet AI datareadjustcall.calls_ai.listList calls AI dataread
Meetings AI2
justcall.meetings_ai.getGet AI datareadjustcall.meetings_ai.listList meetings AI dataread
Sales dialer calls2
justcall.sales_dialer_calls.getGet a callreadjustcall.sales_dialer_calls.listList all callsread
Voice agents2
justcall.voice_agents.initiate_callInitiate a callwritejustcall.voice_agents.listList all voice agentsread
RCS phones1
justcall.rcs_phones.listList RCS sendersread
Sales dialer analytics1
justcall.sales_dialer_analytics.agentAgent analyticsread
Whatsapp templates1
justcall.whatsapp_templates.listList all templatesread
Questions
The JustCall MCP server, answered.
Is there a JustCall MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 100 JustCall actions across sales dialer contacts, text groups, contacts and sales dialer campaigns, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by JustCall.
What do I need to connect JustCall?
JustCall API key (Profile > APIs and Webhooks) and JustCall API secret (Profile > APIs and Webhooks). The free call account { op: "connections.requirements", service: "justcall" } lists exactly what to paste.
Can an AI agent delete or change things in JustCall?
Only if its key allows it, and only with an explicit confirmation. 11 JustCall actions are destructive, including delete contact, delete a user group and delete a tag. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.
Will an AI agent use up my JustCall API limit?
actionlake paces every call to the limits in the JustCall service file: 30 calls a minute per connection. Repeated reads are answered from cache (56 JustCall actions can be), which never reaches JustCall.
What does a JustCall action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (23 JustCall actions page). Cache hits, searches, dry runs and calls JustCall refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
Which JustCall API does it cover?
The JustCall (cloud phone: calls, SMS/MMS, WhatsApp, RCS, contacts, Sales Dialer, JustCall AI) API v2.1 at api.justcall.io. It is built from JustCall's documentation as read on 23 October 2026. 100 actions in 25 areas, each one in the signed service file (version 1.0.0).
Can I combine JustCall with my other systems?
Yes. ask joins JustCall to HaloPSA or NetSuite on the same customer and returns the answer rather than every row. JustCall maps crm.contact, which 192 other connectors also map.
Does actionlake keep my JustCall data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your JustCall credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.
Which AI clients can use it?
Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.
Give your agent JustCall today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.