Aircall MCP by usefulapi
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Read calls, contacts, users, teams and numbers; tag calls and create or update contacts.
| Author | io.usefulapi |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 241 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Aircall MCP by usefulapi": {
"url": "https://aircall.usefulapi.io/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (25)
aircall_pingread-onlyHealth check — verify the API is reachable and the credentials are valid. Aircall REST: GET /ping.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_get_companyread-onlyGet details of the authenticated Aircall company (name, plan, usage). Aircall REST: GET /company.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_list_usersread-onlyList users (agents) in the Aircall company (id, name, email, availability). Aircall REST: GET /users.
Parameters:
page— integer — 1-based page number to fetch (default 1).per_page— integer — Results per page (default 20, max 50).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_get_userread-onlyGet a single user (agent) by id. Aircall REST: GET /users/{id}.
Parameters:
id(required) — integer — The user id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_list_callsread-onlyList calls, optionally filtered by a creation-date window and ordered. Aircall REST: GET /calls.
Parameters:
to— string — Maximal creation date — a UNIX timestamp or ISO 8601 string.from— string — Minimal creation date — a UNIX timestamp or ISO 8601 string.page— integer — 1-based page number to fetch (default 1).order— string — Sort order by creation date — 'asc' or 'desc' (default asc).per_page— integer — Results per page (default 20, max 50).fetch_contact— boolean — If true, include the full contact details of each call.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_get_callread-onlyGet a single call by id. Aircall REST: GET /calls/{id}.
Parameters:
id(required) — integer — The call id.fetch_contact— boolean — If true, include the full contact details for the call.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_search_callsread-onlySearch calls by a free-text term (e.g. phone number, tag, direction). Aircall REST: GET /calls/search.
Parameters:
q— string — Search term to match calls against.page— integer — 1-based page number to fetch (default 1).per_page— integer — Results per page (default 20, max 50).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_list_numbersread-onlyList the phone numbers owned by the company (id, name, digits, country). Aircall REST: GET /numbers.
Parameters:
page— integer — 1-based page number to fetch (default 1).per_page— integer — Results per page (default 20, max 50).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_get_numberread-onlyGet a single phone number by id. Aircall REST: GET /numbers/{id}.
Parameters:
id(required) — integer — The number id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_list_contactsread-onlyList contacts in the shared address book, optionally by creation-date window and order. Aircall REST: GET /contacts.
Parameters:
to— string — Maximal creation date — a UNIX timestamp or ISO 8601 string.from— string — Minimal creation date — a UNIX timestamp or ISO 8601 string.page— integer — 1-based page number to fetch (default 1).order— string — Sort order by creation date — 'asc' or 'desc' (default asc).per_page— integer — Results per page (default 20, max 50).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_get_contactread-onlyGet a single contact by id. Aircall REST: GET /contacts/{id}.
Parameters:
id(required) — integer — The contact id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_search_contactsread-onlySearch contacts by a free-text term (e.g. name, phone number, email). Aircall REST: GET /contacts/search.
Parameters:
q— string — Search term to match contacts against.page— integer — 1-based page number to fetch (default 1).per_page— integer — Results per page (default 20, max 50).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_list_tagsread-onlyList the company's call tags (id, name, color). Aircall REST: GET /tags.
Parameters:
page— integer — 1-based page number to fetch (default 1).per_page— integer — Results per page (default 20, max 50).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_get_tagread-onlyGet a single tag by id. Aircall REST: GET /tags/{id}.
Parameters:
id(required) — integer — The tag id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_list_teamsread-onlyList the company's teams and their members. Aircall REST: GET /teams.
Parameters:
page— integer — 1-based page number to fetch (default 1).per_page— integer — Results per page (default 20, max 50).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_get_teamread-onlyGet a single team by id. Aircall REST: GET /teams/{id}.
Parameters:
id(required) — integer — The team id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_get_call_transcriptionread-onlyGet the AI-generated transcription of a call (Aircall AI Voice feature). Aircall REST: GET /calls/{id}/transcription.
Parameters:
id(required) — integer — The call id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_get_call_sentimentsread-onlyGet the AI-generated sentiment analysis of a call (Aircall AI Voice feature). Aircall REST: GET /calls/{id}/sentiments.
Parameters:
id(required) — integer — The call id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_get_call_topicsread-onlyGet the AI-detected topics of a call (Aircall AI Voice feature). Aircall REST: GET /calls/{id}/topics.
Parameters:
id(required) — integer — The call id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_get_call_summaryread-onlyGet the AI-generated summary of a call (Aircall AI Voice feature). Aircall REST: GET /calls/{id}/summary.
Parameters:
id(required) — integer — The call id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_get_call_action_itemsread-onlyGet the AI-extracted action items / follow-ups from a call (Aircall AI Voice feature). Aircall REST: GET /calls/{id}/action_items.
Parameters:
id(required) — integer — The call id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
aircall_create_contactdestructiveCreate 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.
Parameters:
emails— array — Email addresses for the contact, each { label, value }.last_name— string — The contact's last name.first_name— string — The contact's first name.information— string — Freeform notes about the contact.company_name— string — The contact's company name.phone_numbers— array — Phone numbers for the contact, each { label, value }.
Hints: read-only not declared · destructive yes · idempotent not declared · open-world not declared
aircall_update_contactdestructiveUpdate fields on an existing contact. Only provided fields are changed. Aircall REST: PUT /contacts/{id}.
Parameters:
id(required) — integer — The contact id to update.emails— array — Replace the contact's email addresses, each { label, value }.last_name— string — The contact's last name.first_name— string — The contact's first name.information— string — Freeform notes about the contact.company_name— string — The contact's company name.phone_numbers— array — Replace the contact's phone numbers, each { label, value }.
Hints: read-only not declared · destructive yes · idempotent not declared · open-world not declared
aircall_add_call_commentdestructiveAdd a comment / note to a call. Aircall REST: POST /calls/{id}/comments.
Parameters:
id(required) — integer — The call id to comment on.content(required) — string — The comment text (required).
Hints: read-only not declared · destructive yes · idempotent not declared · open-world not declared
aircall_tag_calldestructiveApply tags to a call by tag id (get ids from aircall_list_tags). Aircall REST: POST /calls/{id}/tags.
Parameters:
id(required) — integer — The call id to tag.tag_ids(required) — array — Ids of the tags to apply (from aircall_list_tags) (required).
Hints: read-only not declared · destructive yes · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.