Skip to main content

HAL

com.chatwithhal/mcpVersion 1.0.0

Customer conversations, help center, CRM, deals and email campaigns on HAL (chatwithhal.com).

Status

Responds163 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 13:50 UTC
Latency
163 ms
Remotes responding
1 of 1
Sign-in
API key
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 21:12 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://api.chatwithhal.com/mcpResponds163 ms
No sign-in

Claude Code

claude mcp add --transport http chatwithhal https://api.chatwithhal.com/mcp --header 'Authorization: Bearer <YOUR_TOKEN>'

Replace <YOUR_TOKEN> before running.

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: chatwithhal
Remote MCP server URL: https://api.chatwithhal.com/mcp
This server expects the header Authorization.

Cursor

{
  "mcpServers": {
    "chatwithhal": {
      "url": "https://api.chatwithhal.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

Replace <YOUR_TOKEN> before running.

VS Code

code --add-mcp '{"name":"chatwithhal","type":"http","url":"https://api.chatwithhal.com/mcp","headers":{"Authorization":"Bearer <YOUR_TOKEN>"}}'

Replace <YOUR_TOKEN> before running.

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

136 tools

Tools of HAL
Read-only
Idempotent
Open world
cancel_broadcastCancel a scheduled, in-progress, or paused broadcast. Recipients not yet sent to are marked cancelled.YesNoYesNo
check_sender_domainRe-check the project's custom sender domain verification status against Amazon SES.NoNoYesYes
configure_sender_domainConfigure a custom sender domain for visitor-facing email on this project (Starter plan and above). Returns DNS records (DKIM CNAMEs, and MX/TXT if a mail-from subdomain is set) that the user must add themselves at their DNS provider before the domain can verify. Reply-To stays on the HAL inbound address so inbound routing keeps working, unless a Reply-To override is set afterwards with update_sender_identity.YesNoYesYes
create_articleCreate an article with an initial translationNoNoNoNo
create_article_groupCreate a new article groupNoNoNoNo
create_automationCreate a new automationNoNoNoNo
create_broadcastNew to HAL email? Call get_email_capabilities_overview first. Create a draft (or scheduled, if scheduled_at is set) one-off email broadcast. Does not send anything.NoNoNoNo
create_companyCreate a new companyNoNoNoNo
create_contactCreate a new contactNoNoNoNo
create_dealCreate a deal for a company. The company's own stage and value follow its primary deal (its newest open new-business deal).NoNoNoNo
create_email_campaignNew to HAL email? Call get_email_capabilities_overview first. Create an email campaign using campaign language instead of workflow graph internals.NoNoNoNo
create_email_templateNew to HAL email? Call get_email_capabilities_overview first. Create a reusable workflow email template.NoNoNoNo
create_guideCreate a new guideNoNoNoNo
create_webhookCreate a new webhookNoNoNoNo
create_workflowNew to HAL email? Call get_email_capabilities_overview first. Create a visitor workflow: a trigger plus a branching graph of condition/send_widget_message/send_email/trigger_campaign/end nodes. Call get_workflow_builder_reference first.NoNoNoNo
delete_broadcastDelete a broadcast. Refused while it is actively sending.YesNoYesNo
delete_companyPermanently delete a company. Without confirm: true it only returns a preview of what would be removed. Deletes the company with its deals and contact links; its contacts stay. Cannot be undone.YesNoYesNo
delete_contactPermanently delete a contact. Without confirm: true it only returns a preview of what would be removed. Deletes the contact with its deal links, company links and tracked email threads; its conversations stay, with their visitors made anonymous. Cannot be undone.YesNoYesNo
delete_dealDelete a deal. A company with no deals left drops out of the pipeline.YesNoYesNo
delete_email_campaignDelete an email campaign. Refuses if another workflow in the project still chains into it via trigger_campaign or next_campaign_id.YesNoYesNo
delete_email_imageDelete an image from a project’s email image library. Remove it from any email templates first, or the image block will break.YesNoYesNo
delete_email_templateDelete a reusable workflow email template. Existing campaigns keep their embedded copy.YesNoYesNo
delete_guidePermanently delete a guide and its execution historyYesNoYesNo
delete_webhookDelete a webhookYesNoYesNo
delete_workflowDelete a visitor workflow. Refuses if another workflow in the project still chains into it via trigger_campaign or next_campaign_id.YesNoYesNo
disable_email_campaignDisable an email campaign.YesNoYesNo
enable_email_campaignEnable an email campaign.YesNoYesYes
find_relevant_articlesFind published help articles that fit a conversation, in the visitor's language and limited to ones this visitor may see. Matches the visitor's latest message, or `query` when given. Returns up to 6, best match first; weaker results can be only loosely related, so check the title and excerpt before sharing one. Read-only; uses no AI quota. Each result has `insert`, the exact markup to put in the reply. To show a help article to the visitor, write `[label](hal-article:<article id or slug>)` into the `content` of reply_to_conversation. The widget renders it as a clickable card at that spot, on its own line (it is not an inline link inside a sentence), so put it between sentences or paragraphs, e.g. "Refunds take 5 days.\n[Refund policy](hal-article:refund-policy)\nAnything else?". The label is the card title, so use the article title. Several cards in one reply are fine. Only published articles the visitor may see are accepted; each reference is checked and rewritten to the slug for the visitor's language. Find the right article with find_relevant_articles (matched to the conversation, or to your own query), or list_articles with published_only.NoNoNoYes
generate_ai_response_suggestionGenerate an advisory-only HAL AI reply suggestion for the latest visitor message. Call this after get_conversation, then combine HAL's draft, evidence, and confidence with the conversation messages when composing your final answer. This tool never sends a message to the visitor, even when project auto-send or AI deflection is enabled.NoNoNoYes
get_articleGet an article with translationsNoYesYesNo
get_automationGet automation detailsNoYesYesNo
get_broadcastGet a single email broadcast, including delivery/open/click counts. With an A/B test, `ab_test` has its settings, `phase` (testing, waiting, winner_sending, done, skipped, cancelled), `ends_at` (automatic winner pick), the `winner`, and `results` (test-group sent/opens/clicks/rates per variant plus a confidence score).NoYesYesNo
get_broadcast_audience_fieldsList the fields available for building a broadcast audience (contact/company builtins, sampled metadata keys, valid operators per type).NoYesYesNo
get_broadcast_readinessDeliverability checklist for a broadcast before sending: sender authentication (custom domain, DMARC, MAIL FROM/SPF), postal address, project bounce/complaint health, warm-up capacity (how many days the send will be spread over), and content lint (size, image-heavy, subject, spam phrases, link shorteners). `error` checks block sending; share warnings with the user.NoYesYesNo
get_companyGet a company with contacts, details and its deals. The company stage and deal_value mirror its primary deal.NoYesYesNo
get_contactGet a contact with full details, recent activity and the deals they are onNoYesYesNo
get_conversationGet a conversation with its messages and attachment metadata. agents_typing lists teammates drafting a reply right now; if someone is, let them answer instead of replying over them. replied_to_email is set when the conversation started as a reply to a campaign, workflow or broadcast email. Call get_conversation_image with an image attachment ID to inspect its visual content. To incorporate HAL's own evidence-backed AI draft into your final answer, call generate_ai_response_suggestion next.NoYesYesNo
get_conversation_imageGet an image attached to a conversation message as MCP image content so the AI client can inspect it. Images over 2 MB are resized and compressed before delivery. Use an attachment ID returned by get_conversation.NoYesYesNo
get_dealGet a deal with its company, stage, contacts and stage/amount historyNoYesYesNo
get_deal_pipelineSummarize the sales pipeline: per stage the number of deals, total and probability-weighted amount, plus open/won/lost totals, win rate and open deals whose expected close date has passed. Use list_deals for the deals themselves.NoYesYesNo
get_email_campaignGet email campaign details.NoYesYesNo
get_email_campaign_runGet one email campaign run with clicked URLs.NoYesYesNo
get_email_capabilities_overviewOrientation for HAL email features: campaigns vs workflows vs broadcasts, templates vs project defaults vs inline design, sender domains, images, test sending, track_event, and unsubscribe/suppression. Call this before creating any campaign, workflow, broadcast, or template.NoYesYesNo
get_email_deliverabilityProject email reporting. Always returns: health (last 30 days across every campaign, workflow and broadcast: sent, sent_last_24h, delivered, hard bounces (bounced), soft bounces, complaints and their rates, plus the status that blocks broadcasts, and reset_at when a list-cleanup reset restarted the window), sources (the same window broken down per workflow/broadcast with delivered, hard/soft bounces, unique opens, clicks and replies), warm-up progress (only broadcasts count toward it), and the footer postal address. Pass workflow_id or broadcast_id (optionally with days; omitted = all time) to also get stats for that one campaign. Opens and clicks exclude automatic ones from security scanners and Apple Mail Privacy Protection, which are reported as automatic_opens/automatic_clicks. Replies count recipients who answered the email (auto-replies are ignored). Delivered counts only cover emails sent after delivery tracking was enabled.NoYesYesNo
get_email_templateGet a reusable workflow email template.NoYesYesNo
get_email_unsubscribe_statusCheck whether an email address is currently suppressed for lifecycle email campaigns, for a given category (default "all").NoYesYesNo
get_guideGet guide detailsNoYesYesNo
get_guide_healthWhich guides had steps fail to anchor recently — the signal that a selector rotted in the target appNoYesYesNo
get_guide_statsPer-guide analytics: triggers, completions, completion rate, per-step drop-off, selector missesNoYesYesNo
get_macroGet a single shared macro by IDNoYesYesNo
get_message_tags_statsGet all project tags with their usage countsNoYesYesNo
get_sender_domainGet the custom sender domain (Starter plan and above) configured for this project, including DNS records, verification status, and any Reply-To override (`sender_domain.reply_to`, alongside the top-level `reply_to` this project's emails actually use).NoYesYesNo
get_statisticsGet project statistics including responsiveness, conversation volume, and per-agent metrics. Defaults to last 30 days.NoYesYesNo
get_teamGet a team with its membersNoYesYesNo
get_workflowGet a visitor workflow including its full node/edge graph definition.NoYesYesNo
get_workflow_builder_referenceNew to HAL email? Call get_email_capabilities_overview first. Static reference for building visitor workflows through create_workflow/update_workflow/validate_workflow: trigger shapes, node types, graph rules, condition/predicate operators, email block types, and variable syntax.NoYesYesNo
get_workflow_email_defaultsGet the project default email design used to seed new send_email nodes.NoYesYesNo
get_workflow_executionGet one visitor workflow execution.NoYesYesNo
import_conversationImport a single historical conversation silently (no webhooks, no notifications). Use for migrating data from other chat platforms.NoNoNoNo
import_conversationsImport multiple historical conversations in batch (max 100). Each conversation is imported independently — one failure does not affect others. Silent: no webhooks, no notifications.NoNoNoNo
link_contact_to_companyLink an existing contact to an existing company. The operation is idempotent and both records must belong to the selected project.YesNoYesNo
list_article_groupsList all article groupsNoYesYesNo
list_articlesList articles, optionally filtered by group or to published ones. To show a help article to the visitor, write `[label](hal-article:<article id or slug>)` into the `content` of reply_to_conversation. The widget renders it as a clickable card at that spot, on its own line (it is not an inline link inside a sentence), so put it between sentences or paragraphs, e.g. "Refunds take 5 days.\n[Refund policy](hal-article:refund-policy)\nAnything else?". The label is the card title, so use the article title. Several cards in one reply are fine. Only published articles the visitor may see are accepted; each reference is checked and rewritten to the slug for the visitor's language. Find the right article with find_relevant_articles (matched to the conversation, or to your own query), or list_articles with published_only.NoYesYesNo
list_automationsList all automations for this projectNoYesYesNo
list_broadcast_recipientsList the per-recipient delivery status for a broadcast.NoYesYesNo
list_broadcastsList one-off email broadcasts for a project.NoYesYesNo
list_companiesList companies with optional search and stage filter. Includes companies with no linked contacts. Paginated.NoYesYesNo
list_companies_by_stageRead-only CRM board: list ALL companies grouped by pipeline stage, including companies with no linked contacts and unstaged companies. Returns per-stage deal totals so agents can reconcile Won totals with company rows. Company stage and deal value mirror the company primary deal; use list_deals to see every deal, including expansions and renewals.NoYesYesNo
list_contactsList contacts with optional searchNoYesYesNo
list_conversationsList conversations with filters (status, spam, limit, offset). Each result says whether it is marked as spam.NoYesYesNo
list_crm_stagesList CRM pipeline stagesNoYesYesNo
list_custom_propertiesList visitor custom properties and sampled metadata keys available for campaign predicates and conditions.NoYesYesNo
list_dealsList deals (sales opportunities). A company can have several deals: new business, expansion, renewal. Each deal has a stage, amount, expected close date, owner, next step and contacts. Filter by company, contact, stage, owner or status.NoYesYesNo
list_email_campaign_runsList email campaign runs with delivery, open, and click data.NoYesYesNo
list_email_campaignsList email campaigns backed by visitor workflows.NoYesYesNo
list_email_categoriesList a project's email categories used for per-category unsubscribe/preferences (marketing, product updates, transactional, ...). A project with no customized categories returns the built-in defaults.NoYesYesNo
list_email_imagesList images in a project’s email image library, newest first. Use these for lifecycle/workflow email `image` blocks.NoYesYesNo
list_email_suppressionsList email addresses suppressed for lifecycle email campaigns in a project.NoYesYesNo
list_email_templatesList reusable workflow email templates for a project.NoYesYesNo
list_event_namesList tracked lifecycle event names seen in a project.NoYesYesNo
list_guidesList all guides for this projectNoYesYesNo
list_macrosList shared macros (available to all team members)NoYesYesNo
list_message_tagsList all tags defined for this projectNoYesYesNo
list_projectsList projects available to this MCP key. Call this first, then get_email_capabilities_overview for email features.NoYesYesNo
list_teamsList all teams for this project with member and conversation countsNoYesYesNo
list_test_email_recipientsList account user emails allowed as workflow/email test recipients.NoYesYesNo
list_webhooksList all webhooks for this projectNoYesYesNo
list_workflow_executionsList execution history for a visitor workflow.NoYesYesNo
list_workflowsList visitor workflows for a project (trigger + branching graph automations), ordered by priority.NoYesYesNo
merge_companiesMerge a duplicate company into a keeper. Contacts, tracked events, and CRM timeline move to the keeper; the source company is deleted. Use when the same org has a HAL-generated row and a later source-system (e.g. Apollo) id row. Refuses to merge companies that already have different external ids.YesNoNoNo
preview_broadcast_audiencePreview who a broadcast (or a candidate audience) would reach: match count, suppressed count, contacts left out by list hygiene (invalid/disposable/role addresses, unengaged, recently emailed) per reason, and a sample.NoYesYesNo
preview_email_templateRender an email template preview as subject, preheader, HTML, and plain text.NoYesYesNo
remove_deal_contactRemove a contact from a dealYesNoYesNo
remove_sender_domainRemove the project's custom sender domain. Visitor-facing email reverts to the default Hal address.YesNoYesYes
reorder_workflowsReorder visitor workflows by priority; the first id in the list gets the highest priority.YesNoYesNo
reply_to_conversationSend an agent message to a conversation. To show a help article to the visitor, write `[label](hal-article:<article id or slug>)` into the `content` of reply_to_conversation. The widget renders it as a clickable card at that spot, on its own line (it is not an inline link inside a sentence), so put it between sentences or paragraphs, e.g. "Refunds take 5 days.\n[Refund policy](hal-article:refund-policy)\nAnything else?". The label is the card title, so use the article title. Several cards in one reply are fine. Only published articles the visitor may see are accepted; each reference is checked and rewritten to the slug for the visitor's language. Find the right article with find_relevant_articles (matched to the conversation, or to your own query), or list_articles with published_only. To walk the visitor through a flow, pass `offer_guide_id` instead of writing guide markup. To send files, pass `attachments`; they are delivered with the message in the widget and in email replies.YesNoNoYes
reset_email_deliverability_healthStart a fresh 30-day health window for a project that is blocked from sending broadcasts by old bounces or complaints. ONLY use this after the bounced and complained addresses have been suppressed (list_email_suppressions / suppress_email_recipient) so the same list cannot bounce again. HAL enforces this: the reset is refused, and nothing changes, if any recipient that bounced or complained in the current window is not suppressed (by a project-wide or platform-wide suppression), and a project can be reset at most once per 30 days. Once it succeeds, sends before the reset stop counting toward the project's bounce and complaint rate, and any new bounces after it count normally and can block the project again. This only resets HAL's own project health window; it does not change the Amazon SES account reputation or review status. Per-broadcast auto-pause is not affected. Cannot be undone and is logged: get explicit user confirmation, then pass confirm: true and a reason describing the cleanup (3-500 characters). Returns the updated health (including reset_at).YesNoYesNo
resume_broadcastResume a paused broadcast. Broadcasts auto-pause when their bounce or spam-complaint rate is too high, or when a scheduled send hits a blocking deliverability check; `pause_reason` says why. Only resume after the user understands the reason and has addressed it (e.g. removed bad addresses). The remaining recipients are sent to, and it pauses again if rates stay high.YesNoNoYes
schedule_broadcastSchedule a draft (or reschedule a scheduled) broadcast to send at a future time.YesNoNoYes
select_broadcast_ab_winnerEnd a broadcast's A/B test early and send the winner to the rest of the audience now, instead of waiting for the automatic pick. `ab_test.results` on get_broadcast shows each variant's open/click rates. Pass `variant` to choose it; omit it to send the current leader. This sends real email to the remaining recipients: confirm with the user first.YesNoNoYes
send_broadcast_nowIMMEDIATELY sends this broadcast to its whole live audience - a real, irreversible email blast to real contacts, not a test. You MUST call preview_broadcast_audience first and pass its exact `count` as confirm_recipient_count; a mismatch is refused. Call get_broadcast_readiness first too: sends with blocking deliverability checks are refused. Only call this after the user has explicitly confirmed they want to send to that many recipients right now.YesNoNoYes
send_test_broadcast_emailSend a test of a broadcast email to an account user email address only (never to real contacts).YesNoNoYes
send_test_email_campaignSend a test email for an existing email campaign to an account user email address only.YesNoNoYes
send_test_email_templateSend a workflow email template test to an account user email address only.YesNoNoYes
send_test_workflow_emailSend a real test email for one send_email node in a workflow to an account user email address only.YesNoNoYes
set_deal_contactAdd a contact to a deal, or change their role on itYesNoYesNo
set_typingShow the visitor and your teammates in the dashboard that a reply is being written. Call it right before you draft a reply the visitor will read, so a live agent sees the conversation is being handled. Do not call it for internal notes, for reading or summarizing, or when you are not going to reply. reply_to_conversation clears it; call again with is_typing false if you decide not to reply.NoNoYesYes
set_workflow_enabledEnable or disable a visitor workflow.YesNoYesYes
suppress_email_recipientSuppress an email address so lifecycle email campaigns skip it. Defaults to category "all" (blocks everything); pass a specific category key (see list_email_categories) to block only that category.NoNoYesNo
tag_messageAdd tags to a message. Merges with existing tags (deduplicates). If Damper integration is enabled and a tag matches tags_to_sync, pushes the conversation to Damper as feedback.NoNoYesNo
toggle_automationEnable or disable an automationYesNoNoYes
toggle_guideEnable or disable a guideYesNoNoYes
track_eventTrack a lifecycle event exactly like the public track-event API. THIS CAN SEND REAL EMAILS: matching enabled api_trigger workflows fire immediately for real contacts. Use dry_run to preview matches without tracking or sending anything. Workflows only fire for events that resolve to a visitor (via user_id or email); company-only events never trigger workflows.YesNoNoYes
unsuppress_email_recipientRemove an email address from the lifecycle email suppression list. Omit category to lift every suppression on the address (bounce/complaint rows are never removed); pass category to lift only that one.YesNoYesNo
untag_messageRemove specific tags from a messageYesNoYesNo
update_articleUpdate article properties or upsert a translationYesNoYesNo
update_article_groupUpdate an article groupYesNoYesNo
update_automationUpdate an automationYesNoYesNo
update_broadcastUpdate a draft or scheduled broadcast (name, email content, audience, schedule, list-hygiene or tracking options, A/B test).YesNoYesNo
update_companyUpdate a companyYesNoYesNo
update_contactUpdate a contactYesNoYesNo
update_conversationUpdate conversation status, assignment, snooze state, or spam. is_spam true does what "Mark as spam" does in the inbox: the conversation leaves the inbox, is marked read, and the same sender's next conversations in this project go straight to spam; is_spam false undoes it and lets the sender back in. The change is recorded in the conversation's activity as done via MCP. Use list_conversations with spam "only" to review spam.YesNoYesNo
update_dealUpdate a deal. Moving it to a 100% stage marks it won and a 0% stage marks it lost (pass lost_reason); moving it back to an open stage reopens it.YesNoYesNo
update_email_campaignUpdate an email campaign.YesNoYesNo
update_email_categoriesReplace the full set of email categories for a project (upserts by key, removes any key not included). Refused with the referencing suppressions/broadcasts/workflows if a key still in use would be removed.YesNoYesNo
update_email_postal_addressSet the physical mailing address shown in the footer of every marketing/lifecycle email (required by CAN-SPAM). Pass null or an empty string to remove it. Confirm the exact address with the user first.YesNoYesNo
update_email_templateUpdate a reusable workflow email template.YesNoYesNo
update_guideUpdate a guideYesNoYesNo
update_sender_identityUpdate the local part, display sender name, and/or Reply-To override of the configured sender domain, without changing the domain itself. By default, Reply-To stays on the HAL inbound address so inbound routing/threading keep working. Setting `reply_to` overrides that with the given address - it must already forward into the project's HAL inbound address, or replies will be lost. Pass an empty string or omit `reply_to` as `null` to clear an existing override and revert to the HAL address.YesNoYesNo
update_webhookUpdate an existing webhookYesNoYesNo
update_workflowUpdate a visitor workflow. Partial: only provided fields change. If trigger fields change without a new definition, the existing trigger node is synced in place.YesNoYesNo
update_workflow_email_defaultsUpdate the project default email design (subject/preheader/theme/template_document) used to seed new send_email nodes. Merges into the project config without touching other settings.YesNoYesNo
upload_email_imageUpload an image to a project's email image library so it can be used in lifecycle/workflow email `image` blocks (email_block_types.image.url must be an absolute URL — external hosting is no longer required). Provide exactly one of data_base64 (with mime_type) or source_url. Use email_url in email image blocks (image.url).NoNoNoYes
validate_email_templateValidate an email template and return AI-client-friendly errors.NoYesYesNo
validate_guideValidate a guide's start location and step selectors against the live pages the developer is logged into. Results are recorded by the widget's authoring mode (?hal_guide_debug=1 on any page where the widget runs); this tool returns the newest snapshot per page, so a guide that spans pages reports each of them.NoYesYesNo
validate_workflowValidate a visitor workflow definition without saving it. Same input as create_workflow.NoYesYesNo

Details

Registry status
Active
Published
Oct 30, 2026
Updated
Oct 30, 2026
Repository
Not given
Categories (suggested)
CRMCommunicationSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing