Phone, SMS and email for AI agents with OAuth login and zero install
Hail lets Muse and other AI agents make outbound calls, send SMS and email through a single MCP endpoint. Includes contact lookup, delivery tracking, engagement analytics, and built-in consent attestation for compliance.
Try asking Muse: "Send a reminder email to my customers about their upcoming appointments and track who opens it"
Source: Found in the official MCP Registry (io.github.hail-hq/hail-mcp) · First listed September 25, 2026
Each bar is one check, every 15 minutes. Green means it answered. Last checked 3 h ago.
What Muse can see: It does not ask you to sign in, so it cannot see your accounts. It only sees what Muse sends it from your request.
Before it acts: Read what Muse plans to do before you approve it, and remove the app from Muse when you stop using it.
musedirectory.ai is not part of Meta. More about how Muse handles your information
Not in Muse's Connectors list yet, but Muse can still use it. Copy the request below and paste it into Muse. Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.
https://mcp.hail.so/Not in Muse's Connectors list yet. Muse can still use it: its page gives you a request to paste into Muse.
Hail is a remote MCP server, so any assistant that can add a custom connector by link can use it. Same link, same tools.
In ChatGPT, open Settings, then Connectors (called Apps & Connectors on some accounts).
Under Advanced settings, switch on Developer mode. That is what lets you add a connector by link.
Choose Create, give it a name, paste the link as the MCP server URL, and save. If it needs a sign-in, ChatGPT asks for it here.
Start a chat, open the tools menu, pick the connector, and ask. ChatGPT asks before it runs a tool the first time.
Custom connectors need a paid ChatGPT plan, and on Team, Enterprise and Edu accounts only an admin can add them. Our "Working" label means the server answered us; it cannot tell whether your plan lets you add it. All connectors that work in ChatGPT
In Claude, open Settings, then Connectors.
Choose Add custom connector, give it a name, and paste the link.
If it needs a sign-in, Claude sends you to it. Then turn the connector on in a chat from the tools menu and ask.
Custom connectors are available on paid Claude plans; on Team and Enterprise accounts an admin may need to add them. Our "Working" label means the server answered us; it cannot tell whether your plan lets you add it. All connectors that work in Claude
https://mcp.hail.so/Response time at the last check: 487ms. Worked in 99.1% of checks over 30 days.
Screened, no issues found
Screening looks for known threats and hidden instructions at the time of the check, and runs again weekly and whenever the tool list changes. It cannot see the server's code, so only connect what you need and review what Muse asks to do. How screening works.
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 promptsend_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``, ``bcupload_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 bytescreate_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 returnget_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. Retget_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 unavget_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_clist_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 liroute_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 troute_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 whosequote_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 nacquire_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 ``nextlist_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 actucheck_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, eachsubmit_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 actualist_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 needsget_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 returnpreview_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. Answeramend_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 reuscancel_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 carrieget_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 voicdelete_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 rolehttps://mcp.hail.so/Not in Muse's Connectors list yet, but Muse can still use it. Paste this into Muse: "Use Hail to help me. It is a free service with an MCP server at https://mcp.hail.so/. It does not need an API key. Ask me before you share anything with it." Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.
At the last check (November 13, 2026, 11:30 UTC) the endpoint was working, answering in 487ms. Over the last 7 days it answered 100% of health checks. It is checked every 15 minutes.
It was screened on September 25, 2026 with the result "screened, no issues found". Screening checks the domain against threat feeds and reads the tools for hidden instructions and requests for passwords or card numbers. It cannot see the server's code, so grant only the access you need.
It exposes 40 tools, including place_call, send_email, upload_email_attachment, create_file_upload. For example, you could ask Muse: "Send a reminder email to my customers about their upcoming appointments and track who opens it"
This listing was added from public sources (Found in the official MCP Registry (io.github.hail-hq/hail-mcp)). If you build Hail, claim it to correct the details and get your badge.
Paste this on your site or README. It always shows the latest check.
<a href="https://musedirectory.ai/connector/hail"><img src="https://musedirectory.ai/badge/hail.svg" alt="Hail on musedirectory.ai" width="236" height="40"></a>