Aircall MCP by usefulapi
Read calls, contacts, users, teams and numbers; tag calls and create or update contacts.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"aircall": {
"url": "https://aircall.usefulapi.io/mcp"
}
}
}Remote endpoints
https://aircall.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (25)
🟢aircall_ping
Health check — verify the API is reachable and the credentials are valid. Aircall REST: GET /ping.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_get_company
Get details of the authenticated Aircall company (name, plan, usage). Aircall REST: GET /company.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_list_users(page, per_page)
List users (agents) in the Aircall company (id, name, email, availability). Aircall REST: GET /users.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "1-based page number to fetch (default 1).",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20, max 50).",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_get_user(id)
Get a single user (agent) by id. Aircall REST: GET /users/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The user id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_list_calls(from, to, order, page, per_page, ...)
List calls, optionally filtered by a creation-date window and ordered. Aircall REST: GET /calls.
Input Schema
{
"type": "object",
"properties": {
"from": {
"description": "Minimal creation date — a UNIX timestamp or ISO 8601 string.",
"type": "string"
},
"to": {
"description": "Maximal creation date — a UNIX timestamp or ISO 8601 string.",
"type": "string"
},
"order": {
"description": "Sort order by creation date — 'asc' or 'desc' (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "1-based page number to fetch (default 1).",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20, max 50).",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"fetch_contact": {
"description": "If true, include the full contact details of each call.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_get_call(id, fetch_contact)
Get a single call by id. Aircall REST: GET /calls/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The call id."
},
"fetch_contact": {
"description": "If true, include the full contact details for the call.",
"type": "boolean"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_search_calls(q, page, per_page)
Search calls by a free-text term (e.g. phone number, tag, direction). Aircall REST: GET /calls/search.
Input Schema
{
"type": "object",
"properties": {
"q": {
"description": "Search term to match calls against.",
"type": "string"
},
"page": {
"description": "1-based page number to fetch (default 1).",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20, max 50).",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_list_numbers(page, per_page)
List the phone numbers owned by the company (id, name, digits, country). Aircall REST: GET /numbers.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "1-based page number to fetch (default 1).",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20, max 50).",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_get_number(id)
Get a single phone number by id. Aircall REST: GET /numbers/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The number id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_list_contacts(page, per_page, order, from, to)
List contacts in the shared address book, optionally by creation-date window and order. Aircall REST: GET /contacts.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "1-based page number to fetch (default 1).",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20, max 50).",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"order": {
"description": "Sort order by creation date — 'asc' or 'desc' (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"from": {
"description": "Minimal creation date — a UNIX timestamp or ISO 8601 string.",
"type": "string"
},
"to": {
"description": "Maximal creation date — a UNIX timestamp or ISO 8601 string.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_get_contact(id)
Get a single contact by id. Aircall REST: GET /contacts/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The contact id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_search_contacts(q, page, per_page)
Search contacts by a free-text term (e.g. name, phone number, email). Aircall REST: GET /contacts/search.
Input Schema
{
"type": "object",
"properties": {
"q": {
"description": "Search term to match contacts against.",
"type": "string"
},
"page": {
"description": "1-based page number to fetch (default 1).",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20, max 50).",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_list_tags(page, per_page)
List the company's call tags (id, name, color). Aircall REST: GET /tags.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "1-based page number to fetch (default 1).",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20, max 50).",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_get_tag(id)
Get a single tag by id. Aircall REST: GET /tags/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The tag id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_list_teams(page, per_page)
List the company's teams and their members. Aircall REST: GET /teams.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "1-based page number to fetch (default 1).",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"per_page": {
"description": "Results per page (default 20, max 50).",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_get_team(id)
Get a single team by id. Aircall REST: GET /teams/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The team id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_get_call_transcription(id)
Get the AI-generated transcription of a call (Aircall AI Voice feature). Aircall REST: GET /calls/{id}/transcription.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The call id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_get_call_sentiments(id)
Get the AI-generated sentiment analysis of a call (Aircall AI Voice feature). Aircall REST: GET /calls/{id}/sentiments.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The call id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_get_call_topics(id)
Get the AI-detected topics of a call (Aircall AI Voice feature). Aircall REST: GET /calls/{id}/topics.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The call id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_get_call_summary(id)
Get the AI-generated summary of a call (Aircall AI Voice feature). Aircall REST: GET /calls/{id}/summary.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The call id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢aircall_get_call_action_items(id)
Get the AI-extracted action items / follow-ups from a call (Aircall AI Voice feature). Aircall REST: GET /calls/{id}/action_items.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The call id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴aircall_create_contact(first_name, last_name, company_name, information, phone_numbers, ...)
Create a new contact in the shared address book. Aircall typically requires at least one of first_name / last_name / company_name. Aircall REST: POST /contacts.
Input Schema
{
"type": "object",
"properties": {
"first_name": {
"description": "The contact's first name.",
"type": "string"
},
"last_name": {
"description": "The contact's last name.",
"type": "string"
},
"company_name": {
"description": "The contact's company name.",
"type": "string"
},
"information": {
"description": "Freeform notes about the contact.",
"type": "string"
},
"phone_numbers": {
"description": "Phone numbers for the contact, each { label, value }.",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Label for the entry, e.g. 'Work', 'Home', 'Mobile'."
},
"value": {
"type": "string",
"description": "The phone number or email address."
}
},
"required": [
"label",
"value"
],
"description": "A labelled contact detail entry."
}
},
"emails": {
"description": "Email addresses for the contact, each { label, value }.",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Label for the entry, e.g. 'Work', 'Home', 'Mobile'."
},
"value": {
"type": "string",
"description": "The phone number or email address."
}
},
"required": [
"label",
"value"
],
"description": "A labelled contact detail entry."
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴aircall_update_contact(id, first_name, last_name, company_name, information, ...)
Update fields on an existing contact. Only provided fields are changed. Aircall REST: PUT /contacts/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The contact id to update."
},
"first_name": {
"description": "The contact's first name.",
"type": "string"
},
"last_name": {
"description": "The contact's last name.",
"type": "string"
},
"company_name": {
"description": "The contact's company name.",
"type": "string"
},
"information": {
"description": "Freeform notes about the contact.",
"type": "string"
},
"phone_numbers": {
"description": "Replace the contact's phone numbers, each { label, value }.",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Label for the entry, e.g. 'Work', 'Home', 'Mobile'."
},
"value": {
"type": "string",
"description": "The phone number or email address."
}
},
"required": [
"label",
"value"
],
"description": "A labelled contact detail entry."
}
},
"emails": {
"description": "Replace the contact's email addresses, each { label, value }.",
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Label for the entry, e.g. 'Work', 'Home', 'Mobile'."
},
"value": {
"type": "string",
"description": "The phone number or email address."
}
},
"required": [
"label",
"value"
],
"description": "A labelled contact detail entry."
}
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴aircall_add_call_comment(id, content)
Add a comment / note to a call. Aircall REST: POST /calls/{id}/comments.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The call id to comment on."
},
"content": {
"type": "string",
"description": "The comment text (required)."
}
},
"required": [
"id",
"content"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴aircall_tag_call(id, tag_ids)
Apply tags to a call by tag id (get ids from aircall_list_tags). Aircall REST: POST /calls/{id}/tags.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "The call id to tag."
},
"tag_ids": {
"type": "array",
"items": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"description": "Ids of the tags to apply (from aircall_list_tags) (required)."
}
},
"required": [
"id",
"tag_ids"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence