Phone, SMS and email for AI agents. One remote MCP endpoint, OAuth login, zero install.
Connect Remote server
claude mcp add --transport http hail-mcp https://mcp.hail.so
{
"mcpServers": {
"hail-mcp": {
"url": "https://mcp.hail.so"
}
}
}
{
"servers": {
"hail-mcp": {
"type": "http",
"url": "https://mcp.hail.so"
}
}
}
Settings > Connectors > Add custom connector
URL: https://mcp.hail.so
Tools 44 found in our last check
place_callStart an outbound AI phone call. At least one of ``system_prompt``, ``llm`` or ``agent_id`` is required. An ``agent_id`` selects saved settings; explicit arguments override them. ``llm`` contains ``base_url``, ``api_key`` and ``model`` for a compatible endpoint. A supplied promp…
send_emailSend an email from a verified workspace sender. ``to`` is a non-empty list of email addresses. At least one of ``body_text`` or ``body_html`` is required. Open and click tracking requires an HTML body. Plain-text emails still have sending, delivery and bounce events. ``cc``, ``b…
upload_email_attachmentUpload a small attachment for outbound email, as base64 text. Meant for small files (under about 50 KB): every base64 character goes through the tool call itself. Larger files go through ``create_file_upload`` with ``purpose="email_attachment"``: its ``curl`` line sends the byte…
create_file_uploadCreate a one-time link that uploads one file from a shell with curl. The bytes go from the local disk to Hail directly, not through the tool call, so any file that is not tiny goes this way. ``purpose`` is ``email_attachment`` (25 MB at most; the ``id`` works in ``send_email``'s…
get_callRead a call's current status and timing by ID. ``call_id`` identifies an existing workspace call. Returns the call record, or an error when the call is unavailable.
list_callsList recent workspace calls, newest first. ``cursor`` accepts the previous page's ``next_cursor``. Optional filters are ``status`` and the E.164 destination ``to``. Statuses include queued, dialing, ringing, in_progress, completed, failed, busy, no_answer and canceled. Returns `…
send_smsSend an outbound text message. ``to`` is an E.164 phone number and ``body`` is the message text. Without ``from_``, supported destinations use the workspace's alphanumeric sender ID. Other destinations use an eligible workspace SMS-capable number. A missing required number retur…
get_smsRead a text message's current state by ID. ``sms_id`` identifies an existing workspace message. Returns the message record, including delivery status, or an error.
list_smsList recent workspace text messages. ``status`` filters by queued, sent, delivered, failed, undelivered or received. ``to`` filters by E.164 destination. ``cursor`` accepts the previous page's ``next_cursor``. Returns ``items`` and ``next_cursor``.
get_emailRead a complete workspace email by ID. Returns ``body_text``, ``body_html`` and other email fields. Inbound records include reply headers and spam, virus, SPF, DKIM and DMARC verdicts. Attachments include IDs and file metadata. An unknown or inaccessible email returns an error.
list_emailsList workspace email summaries, newest first. ``direction`` is ``inbound`` or ``outbound``. ``status`` is queued, sent, failed, bounced, complained or received. ``cursor`` accepts the previous page's ``next_cursor``. Summaries contain IDs and metadata, without message bodies. Re…
get_email_rawReturn a temporary download URL for an inbound email's original MIME source. The URL expires after approximately five minutes and requires no authorization header. Raw source is available only for inbound emails. Returns ``url``, or an error for an unavailable email.
get_email_attachmentReturn a temporary download URL for an inbound email attachment. ``email_id`` identifies the email; ``attachment_id`` identifies one of its attachments. The URL expires after approximately five minutes and requires no authorization header. Returns ``url``, or an error for an una…
get_email_eventsRead one email's delivery and engagement timeline. Events include sent, delivered, delivery_delayed, bounced, complained, rejected, opened and clicked, with ``payload`` and ``occurred_at``. Open and click events require an HTML email body. ``cursor`` accepts the previous page's…
get_email_statsRead workspace email delivery counts, rates and time series. ``from_`` and ``to`` are ISO 8601 timestamps, defaulting to the last seven days. ``bucket`` is ``day`` or ``hour``. Hourly ranges are limited to eight days. All ranges are limited to 92 days. Returns ``from``, ``to``,…
get_eventsRead a page of workspace events or events for one resource. ``id`` optionally selects ``call:<uuid>``, ``email:<uuid>`` or ``sms:<uuid>``. ``kind`` filters event types such as state_change, agent_turn, user_turn, tool_call or error. ``cursor`` accepts the previous page's ``next_…
list_agentsList the workspace's saved agents and their settings. Agent records contain IDs, names, instructions, greetings, disclosure settings, voice settings, enabled channels, status, duration limits and handover contacts. Returns ``items`` or an error.
create_agentSave an agent for calls, texts, and email replies. ``system_prompt`` defines the saved agent's behavior. ``first_message`` is an optional greeting after the AI disclosure. Without a greeting, an inbound agent waits for the caller. ``ai_disclosure_line`` overrides the workspace l…
route_numberSet the saved agents that answer a number's calls and texts. ``number_id`` identifies an existing workspace number. ``voice_agent_id`` selects the agent for incoming calls. ``sms_agent_id`` selects the agent for incoming texts. ``clear_voice=true`` or ``clear_sms=true`` removes…
route_email_domainChoose which agent answers mail to an address, and who it answers. ``email_agent_id`` makes the agent reply to inbound mail; ``clear_agent=True`` stops that, and sending both is an error. ``email_agent_scope`` is ``"members"`` (the default: verified members of the workspace whos…
quote_numbersCompare available phone numbers and their prices without buying or charging. ``country_code`` is an ISO alpha-2 code, such as ``US``. ``capabilities`` selects voice, SMS or both. ``number_type`` is optional: local, mobile, national or toll_free. ``area_code`` is an area code or…
acquire_numberBuy a quoted phone number with explicit price confirmation. This charges the setup fee and first month immediately, then renews monthly. The purchase requires the user's authorization for that number and cost. ``quote_id``, ``country_code`` and ``number_type`` identify a current…
list_numbersList dedicated workspace phone numbers, newest first. ``limit`` is 1 to 200, defaulting to 50. ``cursor`` accepts the previous page's ``next_cursor``. Items include ID, E.164 number, country, type, capabilities, provisioning state and assigned agents. Returns ``items`` and ``nex…
list_number_regionsList US state and Canadian province codes supported by number searches. Returns ``regions`` containing ``country_code``, ``code`` and ``name``. These codes identify the optional region filter for a city search. An upstream failure returns an error.
get_numberRead a workspace number's state, capabilities and assigned agents. ``number_id`` identifies the number. Returns the number record or an error.
release_numberPermanently release a phone number after explicit user authorization. ``confirm_e164`` must match the number's E.164 value. A mismatch returns an error without releasing anything. Calls and texts to a released number stop. Recovery is not guaranteed. Current and previous monthly…
get_verification_requirementsRead a carrier's current registration fields, documents, address rules and fees. ``purpose`` is ``number`` or ``sms``. ``number`` is the default. ``country_code`` is an ISO alpha-2 code. ``number_type`` is local, mobile, national or toll_free. ``subject_type`` identifies the act…
check_verificationCheck a carrier registration form without filing anything. Takes the same arguments as ``submit_verification`` except ``attest_authorized``. Runs every check Hail can run before filing: purpose rules, credit (402), the carrier's current form, duplicates (409), field lengths, eac…
submit_verificationSubmit authorized applicant details and documents for carrier registration. Submission is irreversible once sent for review. Carriers retain submitted documents. ``attest_authorized=true`` attests that the named person or business authorized this submission and supplied the actu…
list_verificationsList workspace carrier registrations, newest first. ``purpose`` optionally selects ``number`` or ``sms`` registrations. Items include IDs, applicant names and types, country, number type, purpose, state, rejection details, timestamps, confirmation method and SMS progress fields.…
get_verificationRead one carrier registration's current state and reported next step. ``verification_id`` identifies an existing registration. The carrier state refreshes at most once per minute. Review can take business days. ``step="needs_information"`` means the existing SMS application need…
get_sms_applicationRead saved answers for an existing workspace SMS registration. Returns private applicant fields, address and available sender information. ``verification_id`` identifies the original application, including one needing corrections. An older application without saved answers retur…
preview_sms_applicationPreview the campaign text for a US SMS registration without filing or charging. ``subject_type``, ``fields``, ``address`` and ``number_id`` describe the proposed application. The response contains the description, consent flow and samples for user review before submission. Answe…
amend_sms_applicationCorrect an existing SMS registration at the needs_information step. ``verification_id`` identifies the same paid application and identity. ``fields`` contains complete corrected answers that satisfy the current requirements. The address must be accurate; saved details can be reu…
cancel_verificationCancel an eligible carrier registration after explicit user authorization. Awaiting-review drafts are discarded; rejected registrations are dismissed. A rejected registration must be dismissed before a new one is submitted for the same country and number type. An approved US SMS…
confirm_verificationConfirm a registration using the code the carrier sent to the applicant. ``verification_id`` identifies a registration with ``confirmation="code"``. ``code`` is the applicant-supplied code, containing 4 to 10 characters. Incorrect or expired codes return a field error; the carri…
get_agentRead one saved workspace agent by ID. Returns its name, instructions, greeting, disclosure, voice settings, enabled channels, status, limits and other saved settings, or an error.
update_agentUpdate selected fields on a saved workspace agent. Omitted fields retain their values. Repeating the same update gives the same result. ``status`` is ``live`` or ``paused``; a paused agent does not answer. ``language`` is a lowercase ISO 639-1 code. Changing only language or voi…
delete_agentPermanently delete a saved agent after explicit user authorization. ``confirm_name`` must match the agent's saved name. A mismatch returns an error without deleting anything. Numbers assigned to the deleted agent stop answering calls with it; texts are delivered to webhooks only…
list_contactsList workspace members and manually saved contacts. ``q`` filters by name, email or phone. ``limit`` defaults to 100, with a maximum of 500. Returns ``items`` with ID, kind, name, phone_e164, email and role. Members have ``kind="member"``, an ID of ``member:<user_id>`` and a rol…
lookup_contactFind workspace contacts by name, email or phone fragment. Returns up to ten matches containing names, phone numbers, email addresses and IDs. Several matches can refer to different people.
list_email_domainsList the workspace's sending identities and default sender address. Returns ``items``, ``next_cursor`` and ``default_from``. Only identities with ``verification_status="verified"`` can send. For ``kind="custom"``, ``domain`` is a domain supporting any local part. For ``kind="hai…
whoamiIdentify the account and organization authorized by the current credentials. Returns ``auth_kind``, ``organization_id``, ``user_id``, ``email`` and ``name``. Shared operator credentials have ``auth_kind="shared"`` with null user details. The response identifies the current actor…
create_contactSave a workspace contact with a name and a phone number or email address. At least one of ``phone_e164`` or ``email`` is required. Phone numbers use E.164 format. A duplicate phone or email returns 409. Returns the new contact record or an error.
Details
| Endpoint | https://mcp.hail.so (Streamable HTTP) |
| First published | 26 Oct 2026 |
| Last updated | 26 Oct 2026 |
| Registry name | io.github.hail-hq/hail-mcp |
More communication servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
