{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_p69md3gnkxdt","handle":"hail","url":"https://wellknown.network/agents/hail","links":{"self":"https://wellknown.network/agents/hail/record.json","html":"https://wellknown.network/agents/hail","markdown":"https://wellknown.network/agents/hail/record.md","api":"https://wellknown.network/api/v1/agents/hail","status":"https://wellknown.network/api/v1/agents/hail/status","claim":"https://wellknown.network/agents/hail/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/hail/claim.json","badge":"https://wellknown.network/agents/hail/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:mcp.hail.so:server:hail","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Hail","summary":"Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.","description":"Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.","publisher":{"name":"hail-hq","url":null},"homepage":"https://hail.so/mcp","repository":"https://github.com/hail-hq/hail","version":"0.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.hail.so","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-07-07T13:41:48.35525Z","publishedAt":"2026-07-07T13:41:48.35525Z","registryName":"io.github.hail-hq/hail-mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"communication.sms-voice","name":"SMS & Voice","confidence":0.733,"provenance":"derived"}],"categories":["communication"]},"observed":{"status":"unknown","statusReason":"Not checked yet.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[{"at":"2026-09-06T21:26:58.297Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":19,"error":null,"detail":{"tools":[{"name":"place_call","description":"Originate an outbound phone call.\n\n        Provide ``system_prompt`` (mode A — Hail's bundled fallback LLM\n        uses this prompt) or ``llm`` (mode B — bring "},{"name":"send_email","description":"Send an outbound email through your configured SES sender.\n\n        ``to`` is a non-empty list of RFC-style email addresses. At\n        least one of ``body_text"},{"name":"upload_email_attachment","description":"Upload a file to attach to a future outbound email.\n\n        ``content_base64`` is the file's raw bytes, base64-encoded.\n        Returns ``{\"id\": ..., \"filename"},{"name":"get_call","description":"Fetch the current state of one call by id.\n\n        Use this after ``place_call`` (or to check on any prior call)\n        to read the call's latest ``status`` a"},{"name":"list_calls","description":"List recent calls in your organization, newest first.\n\n        Cursor-paginated: pass the previous response's ``next_cursor``\n        to fetch the next page. ``"},{"name":"send_sms","description":"Send an outbound SMS from your organization's dedicated number.\n\n        ``to`` must be E.164 (e.g. ``+14155551234``). ``body`` is the\n        message text. SMS"},{"name":"get_sms","description":"Fetch the current state of one SMS by id.\n\n        Use this after ``send_sms`` to check delivery status.\n\n        Example:\n            get_sms(sms_id=\"...\")\n   "},{"name":"list_sms","description":"Page through recent SMS messages for your organization.\n\n        ``status`` filters to one of: queued, sent, delivered, failed,\n        undelivered, received. `"},{"name":"get_email","description":"Fetch the full record of one email by id.\n\n        Returns the complete row — including ``body_text`` / ``body_html``\n        and (for inbound mail) the ``in_re"},{"name":"list_emails","description":"List emails in your organization, newest first.\n\n        Cursor-paginated: pass the previous response's ``next_cursor`` to\n        fetch the next page. Two opti"},{"name":"get_email_raw","description":"Get a fetchable URL for an email's original MIME source.\n\n        Returns ``{\"url\": \"<presigned-s3-url>\"}`` — a short-lived\n        (~5 minute) link to the full"},{"name":"get_email_attachment","description":"Get a fetchable URL for one inbound email attachment.\n\n        ``attachment_id`` comes from an item in ``get_email``'s\n        ``attachments`` list. Returns ``{"},{"name":"get_email_events","description":"Delivery/engagement timeline (sent→delivered→opened…) for one email.\n\n        Chronological lifecycle events for a single email — use this to see\n        exactl"},{"name":"get_email_stats","description":"Account-level email deliverability stats (counts, rates, time series).\n\n        Aggregates across your whole organization's outbound mail over a\n        window "},{"name":"get_events","description":"Page through events from across the org or one resource.\n\n        Pass ``id=\"<type>:<uuid>\"`` to narrow to a single resource —\n        supported types are ``cal"},{"name":"list_contacts","description":"List the workspace's contacts: org members (with their phone/email)\n        plus manually saved contacts. Use ``lookup_contact`` for name searches.\n\n        ``q"},{"name":"lookup_contact","description":"Find a contact by name, email, or phone fragment. Resolve a person\n        to their ``phone_e164``/``email`` BEFORE calling ``place_call``,\n        ``send_sms``"},{"name":"list_email_domains","description":"List the addresses this workspace can send email from. Call this\n        BEFORE ``send_email`` when you do not already know the ``from_``\n        address — do n"},{"name":"whoami","description":"Identify the human whose credentials this session runs under.\n\n        Use it to sign or route mail as that person: pass their address as\n        ``send_email(r"},{"name":"create_contact","description":"Save a new contact for the workspace. Provide at least one of\n        ``phone_e164`` (E.164, e.g. ``+14155551234``) or ``email`` — the API\n        rejects (422)"}],"toolCount":20,"serverName":"hail","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.1","protocolVersion":"2025-06-18"}},{"at":"2026-09-06T15:27:04.206Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":19,"error":null,"detail":{"tools":[{"name":"place_call","description":"Originate an outbound phone call.\n\n        Provide ``system_prompt`` (mode A — Hail's bundled fallback LLM\n        uses this prompt) or ``llm`` (mode B — bring "},{"name":"send_email","description":"Send an outbound email through your configured SES sender.\n\n        ``to`` is a non-empty list of RFC-style email addresses. At\n        least one of ``body_text"},{"name":"upload_email_attachment","description":"Upload a file to attach to a future outbound email.\n\n        ``content_base64`` is the file's raw bytes, base64-encoded.\n        Returns ``{\"id\": ..., \"filename"},{"name":"get_call","description":"Fetch the current state of one call by id.\n\n        Use this after ``place_call`` (or to check on any prior call)\n        to read the call's latest ``status`` a"},{"name":"list_calls","description":"List recent calls in your organization, newest first.\n\n        Cursor-paginated: pass the previous response's ``next_cursor``\n        to fetch the next page. ``"},{"name":"send_sms","description":"Send an outbound SMS from your organization's dedicated number.\n\n        ``to`` must be E.164 (e.g. ``+14155551234``). ``body`` is the\n        message text. SMS"},{"name":"get_sms","description":"Fetch the current state of one SMS by id.\n\n        Use this after ``send_sms`` to check delivery status.\n\n        Example:\n            get_sms(sms_id=\"...\")\n   "},{"name":"list_sms","description":"Page through recent SMS messages for your organization.\n\n        ``status`` filters to one of: queued, sent, delivered, failed,\n        undelivered, received. `"},{"name":"get_email","description":"Fetch the full record of one email by id.\n\n        Returns the complete row — including ``body_text`` / ``body_html``\n        and (for inbound mail) the ``in_re"},{"name":"list_emails","description":"List emails in your organization, newest first.\n\n        Cursor-paginated: pass the previous response's ``next_cursor`` to\n        fetch the next page. Two opti"},{"name":"get_email_raw","description":"Get a fetchable URL for an email's original MIME source.\n\n        Returns ``{\"url\": \"<presigned-s3-url>\"}`` — a short-lived\n        (~5 minute) link to the full"},{"name":"get_email_attachment","description":"Get a fetchable URL for one inbound email attachment.\n\n        ``attachment_id`` comes from an item in ``get_email``'s\n        ``attachments`` list. Returns ``{"},{"name":"get_email_events","description":"Delivery/engagement timeline (sent→delivered→opened…) for one email.\n\n        Chronological lifecycle events for a single email — use this to see\n        exactl"},{"name":"get_email_stats","description":"Account-level email deliverability stats (counts, rates, time series).\n\n        Aggregates across your whole organization's outbound mail over a\n        window "},{"name":"get_events","description":"Page through events from across the org or one resource.\n\n        Pass ``id=\"<type>:<uuid>\"`` to narrow to a single resource —\n        supported types are ``cal"},{"name":"list_contacts","description":"List the workspace's contacts: org members (with their phone/email)\n        plus manually saved contacts. Use ``lookup_contact`` for name searches.\n\n        ``q"},{"name":"lookup_contact","description":"Find a contact by name, email, or phone fragment. Resolve a person\n        to their ``phone_e164``/``email`` BEFORE calling ``place_call``,\n        ``send_sms``"},{"name":"list_email_domains","description":"List the addresses this workspace can send email from. Call this\n        BEFORE ``send_email`` when you do not already know the ``from_``\n        address — do n"},{"name":"whoami","description":"Identify the human whose credentials this session runs under.\n\n        Use it to sign or route mail as that person: pass their address as\n        ``send_email(r"},{"name":"create_contact","description":"Save a new contact for the workspace. Provide at least one of\n        ``phone_e164`` (E.164, e.g. ``+14155551234``) or ``email`` — the API\n        rejects (422)"}],"toolCount":20,"serverName":"hail","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.1","protocolVersion":"2025-06-18"}}],"tools":[{"name":"place_call","description":"Originate an outbound phone call.\n\n        Provide ``system_prompt`` (mode A — Hail's bundled fallback LLM\n        uses this prompt) or ``llm`` (mode B — bring "},{"name":"send_email","description":"Send an outbound email through your configured SES sender.\n\n        ``to`` is a non-empty list of RFC-style email addresses. At\n        least one of ``body_text"},{"name":"upload_email_attachment","description":"Upload a file to attach to a future outbound email.\n\n        ``content_base64`` is the file's raw bytes, base64-encoded.\n        Returns ``{\"id\": ..., \"filename"},{"name":"get_call","description":"Fetch the current state of one call by id.\n\n        Use this after ``place_call`` (or to check on any prior call)\n        to read the call's latest ``status`` a"},{"name":"list_calls","description":"List recent calls in your organization, newest first.\n\n        Cursor-paginated: pass the previous response's ``next_cursor``\n        to fetch the next page. ``"},{"name":"send_sms","description":"Send an outbound SMS from your organization's dedicated number.\n\n        ``to`` must be E.164 (e.g. ``+14155551234``). ``body`` is the\n        message text. SMS"},{"name":"get_sms","description":"Fetch the current state of one SMS by id.\n\n        Use this after ``send_sms`` to check delivery status.\n\n        Example:\n            get_sms(sms_id=\"...\")\n   "},{"name":"list_sms","description":"Page through recent SMS messages for your organization.\n\n        ``status`` filters to one of: queued, sent, delivered, failed,\n        undelivered, received. `"},{"name":"get_email","description":"Fetch the full record of one email by id.\n\n        Returns the complete row — including ``body_text`` / ``body_html``\n        and (for inbound mail) the ``in_re"},{"name":"list_emails","description":"List emails in your organization, newest first.\n\n        Cursor-paginated: pass the previous response's ``next_cursor`` to\n        fetch the next page. Two opti"},{"name":"get_email_raw","description":"Get a fetchable URL for an email's original MIME source.\n\n        Returns ``{\"url\": \"<presigned-s3-url>\"}`` — a short-lived\n        (~5 minute) link to the full"},{"name":"get_email_attachment","description":"Get a fetchable URL for one inbound email attachment.\n\n        ``attachment_id`` comes from an item in ``get_email``'s\n        ``attachments`` list. Returns ``{"},{"name":"get_email_events","description":"Delivery/engagement timeline (sent→delivered→opened…) for one email.\n\n        Chronological lifecycle events for a single email — use this to see\n        exactl"},{"name":"get_email_stats","description":"Account-level email deliverability stats (counts, rates, time series).\n\n        Aggregates across your whole organization's outbound mail over a\n        window "},{"name":"get_events","description":"Page through events from across the org or one resource.\n\n        Pass ``id=\"<type>:<uuid>\"`` to narrow to a single resource —\n        supported types are ``cal"},{"name":"list_contacts","description":"List the workspace's contacts: org members (with their phone/email)\n        plus manually saved contacts. Use ``lookup_contact`` for name searches.\n\n        ``q"},{"name":"lookup_contact","description":"Find a contact by name, email, or phone fragment. Resolve a person\n        to their ``phone_e164``/``email`` BEFORE calling ``place_call``,\n        ``send_sms``"},{"name":"list_email_domains","description":"List the addresses this workspace can send email from. Call this\n        BEFORE ``send_email`` when you do not already know the ``from_``\n        address — do n"},{"name":"whoami","description":"Identify the human whose credentials this session runs under.\n\n        Use it to sign or route mail as that person: pass their address as\n        ``send_email(r"},{"name":"create_contact","description":"Save a new contact for the workspace. Provide at least one of\n        ``phone_e164`` (E.164, e.g. ``+14155551234``) or ``email`` — the API\n        rejects (422)"}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.hail-hq/hail-mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.hail-hq%2Fhail-mcp","firstSeenAt":"2026-09-06T15:21:30.412Z","fetchedAt":"2026-09-06T15:21:30.412Z","normalizedAt":"2026-09-06T15:21:30.412Z"}]},"firstSeenAt":"2026-09-06T15:21:30.412Z","updatedAt":"2026-09-06T15:21:57.372Z"}