Aircall MCP by usefulapi

Read calls, contacts, users, teams and numbers; tag calls and create or update contacts.

Should I use this

Quality & Safety

A
Description quality
90%
Schema completeness
91%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,781Tokens (tool definitions)
~1.1 KBTypical response size
Significant attention impact (2.95% of 128k context)

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-http

What it can do

Tool inventory

Tools (25)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded25 tools
verifiedversion not recorded25 tools
verifiedversion not recorded25 tools
failed observationversion not recorded—
failed observationversion not recorded—