HAL

com.chatwithhalPublished by chatwithhal.comOfficial publisherv1.0.0Updated Oct 30, 2026

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

Overview

AI-generated overview

HAL's remote MCP server lets an assistant handle customer conversations, help-center articles, CRM contacts, companies, deals and email templates in a HAL…

What you can do
  • List projects and read or filter customer conversations, including messages, attachments and images
  • Draft and send replies, show typing status, and update status, assignment, snooze or spam
  • Find, read, create and update help-center articles and article groups
  • Search, create and update contacts, companies and CRM pipeline stages, and merge duplicate companies
  • List, create, update and delete deals, manage deal contacts, and summarize the sales pipeline
  • Browse email capabilities and list, read or create reusable workflow email templates
When to use it
Useful when an assistant should help a support or sales team working in HAL: answering visitor conversations with help-center articles, keeping CRM records current, reviewing pipeline, or preparing email templates.
Requirements
A remote endpoint at api.chatwithhal.com over streamable HTTP. Requires a HAL account and a bearer token in the Authorization header: an account MCP key or a project MCP key created in HAL under Settings, API. Every tool except list_projects needs a project.
Before you install
The key grants access to a whole project's conversations, contacts and CRM data. Tools send messages to visitors, change conversation status or spam marking, and create, update, merge or delete articles, contacts, companies and deals; merging deletes the source company and deleting a deal removes it from the pipeline. Generating AI response suggestions consumes AI quota. Conversation content and attachments are sent to the AI client.

Installation

In SourceWeft

  1. Open HAL in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.chatwithhal%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

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

Tools

134

list_projects

List projects available to this MCP key. Call this first, then get_email_capabilities_overview for email features.

Takes no parameters.

list_conversations

List conversations with filters (status, spam, limit, offset). Each result says whether it is marked as spam.

Parametersspamlimitoffsetstatusproject_idproject_slug

get_conversation

Get 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.

Parametersproject_idproject_slugconversation_idrequired

get_conversation_image

Get 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.

Parametersproject_idproject_slugattachment_idrequired

set_typing

Show 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.

Parametersis_typingproject_idproject_slugconversation_idrequiredduration_seconds

reply_to_conversation

Send 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.

Parameterscontentproject_idattachmentsis_internalproject_slugoffer_guide_idconversation_idrequired

update_conversation

Update 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.

Parametersstatusis_spamproject_idproject_slugsnoozed_untilconversation_idrequiredassigned_user_id

generate_ai_response_suggestion

Generate 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.

Parametersproject_idproject_slugconversation_idrequired

list_article_groups

List all article groups

Parametersproject_idproject_slug

create_article_group

Create a new article group

Parametersnamerequiredslugrequiredproject_iddescriptionproject_slugshow_in_helpdesk

update_article_group

Update an article group

Parametersnamesluggroup_idrequiredproject_idsort_orderdescriptionproject_slugshow_in_helpdesk

list_articles

List 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.

Parametersgroup_idproject_idproject_slugpublished_only

find_relevant_articles

Find 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.

Parametersqueryproject_idproject_slugconversation_idrequired

get_article

Get an article with translations

Parametersarticle_idrequiredproject_idproject_slug

create_article

Create an article with an initial translation

Parametersslugrequiredtitlerequiredlocalecontentrequiredgroup_idproject_idproject_slugshow_in_helpdesk

update_article

Update article properties or upsert a translation

Parametersslugtitlelocalecontentgroup_idarticle_idrequiredproject_idsort_orderis_publishedproject_slugshow_in_helpdesk

list_contacts

List contacts with optional search

Parameterslimitoffsetsearchproject_idproject_slug

get_contact

Get a contact with full details, recent activity and the deals they are on

Parameterscontact_idrequiredproject_idproject_slug

create_contact

Create a new contact

Parametersnametagsemailnotesphonemetadataproject_idproject_slug

update_contact

Update a contact

Parametersnametagsemailnotesphonemetadatacontact_idrequiredproject_idproject_slug

list_crm_stages

List CRM pipeline stages

Parametersproject_idproject_slug

list_companies

List companies with optional search and stage filter. Includes companies with no linked contacts. Paginated.

Parameterslimitoffsetsearchstage_idproject_idproject_slug

list_companies_by_stage

Read-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.

Parametersstage_idproject_idstage_nameproject_sluginclude_unstaged

get_company

Get a company with contacts, details and its deals. The company stage and deal_value mirror its primary deal.

Parameterscompany_idrequiredproject_idproject_slug

create_company

Create a new company

Parametersnamerequirednotesdomainindustrymetadatastage_iddeal_valueproject_idproject_slug

update_company

Update a company

Parametersnamenotesdomainindustrymetadatastage_idcompany_idrequireddeal_valueproject_idproject_slug

merge_companies

Merge 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.

Parametersproject_idproject_slugkeeper_company_idrequiredsource_company_idrequired

list_deals

List 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.

Parameterslimitoffsetsearchstatusstage_idcompany_idcontact_idproject_idproject_slugowner_user_id

get_deal_pipeline

Summarize 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.

Parametersproject_idproject_slug

get_deal

Get a deal with its company, stage, contacts and stage/amount history

Parametersdeal_idrequiredproject_idproject_slug

create_deal

Create a deal for a company. The company's own stage and value follow its primary deal (its newest open new-business deal).

Parametersnamenotesamountsourcecontactsstage_iddeal_typenext_stepcompany_idrequiredproject_idlost_reasonproject_slug+3 more

update_deal

Update 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.

Parametersnamenotesamountsourcedeal_idrequiredstage_iddeal_typenext_stepproject_idlost_reasonproject_slugowner_user_id+2 more

set_deal_contact

Add a contact to a deal, or change their role on it

Parametersroledeal_idrequiredcontact_idrequiredproject_idproject_slug

remove_deal_contact

Remove a contact from a deal

Parametersdeal_idrequiredcontact_idrequiredproject_idproject_slug

delete_deal

Delete a deal. A company with no deals left drops out of the pipeline.

Parametersdeal_idrequiredproject_idproject_slug

get_email_capabilities_overview

Orientation 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.

Takes no parameters.

list_email_templates

List reusable workflow email templates for a project.

Parametersproject_idproject_slug

get_email_template

Get a reusable workflow email template.

Parametersproject_idtemplate_idrequiredproject_slug

create_email_template

New to HAL email? Call get_email_capabilities_overview first. Create a reusable workflow email template.

Parametersnamerequiredthemeblockssubjectrequiredpreheaderproject_idproject_slugtemplate_document

update_email_template

Update a reusable workflow email template.

Parametersnamethemeblockssubjectpreheaderproject_idtemplate_idrequiredproject_slugtemplate_document

delete_email_template

Delete a reusable workflow email template. Existing campaigns keep their embedded copy.

Parametersproject_idtemplate_idrequiredproject_slug

preview_email_template

Render an email template preview as subject, preheader, HTML, and plain text.

Parametersthemeblockssubjectpreheaderproject_idtemplate_idproject_slugworkflow_namesample_contexttemplate_document

validate_email_template

Validate an email template and return AI-client-friendly errors.

Parametersthemeblockssubjectpreheaderproject_idtemplate_idproject_slugtemplate_document

send_test_email_template

Send a workflow email template test to an account user email address only.

Parametersthemeblockssubjectto_emailrequiredpreheaderproject_idtemplate_idproject_slugworkflow_namesample_contexttemplate_document

send_test_email_campaign

Send a test email for an existing email campaign to an account user email address only.

Parametersto_emailrequiredproject_idcampaign_idrequiredproject_slugsample_context

list_email_suppressions

List email addresses suppressed for lifecycle email campaigns in a project.

Parameterslimitcursorreasonproject_idproject_slug

suppress_email_recipient

Suppress 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.

Parametersnoteemailrequiredreasoncategoryproject_idproject_slug

unsuppress_email_recipient

Remove 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.

Parametersemailrequiredcategoryproject_idproject_slug

get_email_unsubscribe_status

Check whether an email address is currently suppressed for lifecycle email campaigns, for a given category (default "all").

Parametersemailrequiredcategoryproject_idproject_slug

list_email_campaigns

List email campaigns backed by visitor workflows.

Parametersproject_idproject_slug

get_email_campaign

Get email campaign details.

Parametersproject_idcampaign_idrequiredproject_slug

list_event_names

List tracked lifecycle event names seen in a project.

Parameterslimitproject_idproject_slug

list_custom_properties

List visitor custom properties and sampled metadata keys available for campaign predicates and conditions.

Parametersproject_idproject_slugcompany_sample_limit

create_email_campaign

New to HAL email? Call get_email_capabilities_overview first. Create an email campaign using campaign language instead of workflow graph internals.

Parametersnamerequiredenabledtriggerrequiredfrequencyconditionsproject_idtemplate_idemail_designproject_slugdelay_secondsemail_categoryskip_unengaged+4 more

update_email_campaign

Update an email campaign.

Parametersnameenabledtriggerfrequencyconditionsproject_idcampaign_idrequiredtemplate_idemail_designproject_slugdelay_secondsemail_category+5 more

enable_email_campaign

Enable an email campaign.

Parametersproject_idcampaign_idrequiredproject_slug

disable_email_campaign

Disable an email campaign.

Parametersproject_idcampaign_idrequiredproject_slug

delete_email_campaign

Delete an email campaign. Refuses if another workflow in the project still chains into it via trigger_campaign or next_campaign_id.

Parametersproject_idcampaign_idrequiredproject_slug

list_email_campaign_runs

List email campaign runs with delivery, open, and click data.

Parameterslimitcursorproject_idcampaign_idrequiredproject_slug

get_email_campaign_run

Get one email campaign run with clicked URLs.

Parametersrun_idrequiredproject_idcampaign_idrequiredproject_slug

list_email_categories

List 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.

Parametersproject_idproject_slug

update_email_categories

Replace 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.

Parameterscategoriesrequiredproject_idproject_slug

list_email_images

List images in a project’s email image library, newest first. Use these for lifecycle/workflow email `image` blocks.

Parameterslimitcursorproject_idproject_slug

upload_email_image

Upload 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).

Parametersaltfilenamemime_typeproject_idsource_urldata_base64project_slug

delete_email_image

Delete an image from a project’s email image library. Remove it from any email templates first, or the image block will break.

Parametersimage_idrequiredproject_idproject_slug

list_broadcasts

List one-off email broadcasts for a project.

Parameterslimitcursorstatusproject_idproject_slug

get_broadcast

Get 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).

Parametersproject_idbroadcast_idrequiredproject_slug

create_broadcast

New 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.

Parametersnamerequiredthemeblocksab_testsubjectrequiredaudiencecategorypreheaderproject_idproject_slugscheduled_atskip_unengaged+4 more

update_broadcast

Update a draft or scheduled broadcast (name, email content, audience, schedule, list-hygiene or tracking options, A/B test).

Parametersnamethemeblocksab_testsubjectaudiencecategorypreheaderproject_idbroadcast_idrequiredproject_slugscheduled_at+5 more

delete_broadcast

Delete a broadcast. Refused while it is actively sending.

Parametersproject_idbroadcast_idrequiredproject_slug

preview_broadcast_audience

Preview 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.

Parametersaudiencecategoryproject_idbroadcast_idproject_slugskip_unengagedskip_role_addressesskip_recently_emailed

get_broadcast_audience_fields

List the fields available for building a broadcast audience (contact/company builtins, sampled metadata keys, valid operators per type).

Parametersproject_idproject_slug

send_test_broadcast_email

Send a test of a broadcast email to an account user email address only (never to real contacts).

Parametersvariantto_emailrequiredproject_idbroadcast_idrequiredproject_slugsample_contact_id

schedule_broadcast

Schedule a draft (or reschedule a scheduled) broadcast to send at a future time.

Parametersproject_idbroadcast_idrequiredproject_slugscheduled_atrequired

send_broadcast_now

IMMEDIATELY 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.

Parametersproject_idbroadcast_idrequiredproject_slugconfirm_recipient_countrequired

cancel_broadcast

Cancel a scheduled, in-progress, or paused broadcast. Recipients not yet sent to are marked cancelled.

Parametersproject_idbroadcast_idrequiredproject_slug

list_broadcast_recipients

List the per-recipient delivery status for a broadcast.

Parameterslimitcursorstatusproject_idbroadcast_idrequiredproject_slug

get_broadcast_readiness

Deliverability 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.

Parametersproject_idbroadcast_idrequiredproject_slug

resume_broadcast

Resume 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.

Parametersproject_idbroadcast_idrequiredproject_slug

select_broadcast_ab_winner

End 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.

Parametersvariantproject_idbroadcast_idrequiredproject_slug

get_email_deliverability

Project 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.

Parametersdaysproject_idworkflow_idbroadcast_idproject_slug

update_email_postal_address

Set 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.

Parametersproject_idproject_slugpostal_addressrequired

reset_email_deliverability_health

Start 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).

Parametersreasonrequiredconfirmrequiredproject_idproject_slug

get_workflow_builder_reference

New 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.

Takes no parameters.

list_workflows

List visitor workflows for a project (trigger + branching graph automations), ordered by priority.

Parametersenabledproject_idproject_slugtrigger_type

get_workflow

Get a visitor workflow including its full node/edge graph definition.

Parametersproject_idworkflow_idrequiredproject_slug

validate_workflow

Validate a visitor workflow definition without saving it. Same input as create_workflow.

Parametersnamerequiredenabledpriorityfrequencydefinitionrequiredproject_idproject_slugtrigger_modetrigger_typerequiredtrigger_config

create_workflow

New 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.

Parametersnamerequiredenabledpriorityfrequencydefinitionrequiredproject_idproject_slugtrigger_modetrigger_typerequiredtrigger_config

update_workflow

Update a visitor workflow. Partial: only provided fields change. If trigger fields change without a new definition, the existing trigger node is synced in place.

Parametersnameenabledpriorityfrequencydefinitionproject_idworkflow_idrequiredproject_slugtrigger_modetrigger_typetrigger_config

delete_workflow

Delete a visitor workflow. Refuses if another workflow in the project still chains into it via trigger_campaign or next_campaign_id.

Parametersproject_idworkflow_idrequiredproject_slug

set_workflow_enabled

Enable or disable a visitor workflow.

Parametersenabledrequiredproject_idworkflow_idrequiredproject_slug

reorder_workflows

Reorder visitor workflows by priority; the first id in the list gets the highest priority.

Parametersproject_idproject_slugworkflow_idsrequired

list_workflow_executions

List execution history for a visitor workflow.

Parameterslimitcursorproject_idworkflow_idrequiredproject_slug

get_workflow_execution

Get one visitor workflow execution.

Parametersproject_idworkflow_idrequiredexecution_idrequiredproject_slug

get_workflow_email_defaults

Get the project default email design used to seed new send_email nodes.

Parametersproject_idproject_slug

update_workflow_email_defaults

Update 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.

Parametersthemeblockssubjectpreheaderproject_idproject_slugtemplate_document

send_test_workflow_email

Send a real test email for one send_email node in a workflow to an account user email address only.

Parametersnode_idto_emailrequiredproject_idworkflow_idrequiredproject_slugsample_context

list_test_email_recipients

List account user emails allowed as workflow/email test recipients.

Takes no parameters.

track_event

Track 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.

Parametersnamerequiredemailvalueentitydry_runuser_idmetadataevent_keycompany_idproject_idoccurred_atcontact_name+2 more

list_automations

List all automations for this project

Parametersproject_idproject_slug

get_automation

Get automation details

Parametersproject_idproject_slugautomation_idrequired

create_automation

Create a new automation

Parametersnamerequiredenabledmessagesrequiredfrequencyproject_idproject_slugtrigger_typerequireddelay_secondstrigger_config

update_automation

Update an automation

Parametersnameenabledmessagesfrequencyproject_idproject_slugtrigger_typeautomation_idrequireddelay_secondstrigger_config

toggle_automation

Enable or disable an automation

Parametersenabledrequiredproject_idproject_slugautomation_idrequired

list_guides

List all guides for this project

Parametersproject_idproject_slug

get_guide

Get guide details

Parametersguide_idrequiredproject_idproject_slug

create_guide

Create a new guide

Parametersnamerequiredstepsrequiredtitleenabledfrequencystart_urlconditionsproject_iddescriptionproject_slugtrigger_typerequireddelay_seconds+2 more

update_guide

Update a guide

Parametersnamestepstitleenabledguide_idrequiredfrequencystart_urlconditionsproject_iddescriptionproject_slugtrigger_type+3 more

toggle_guide

Enable or disable a guide

Parametersenabledrequiredguide_idrequiredproject_idproject_slug

delete_guide

Permanently delete a guide and its execution history

Parametersguide_idrequiredproject_idproject_slug

get_guide_stats

Per-guide analytics: triggers, completions, completion rate, per-step drop-off, selector misses

Parametersguide_idrequiredproject_idsince_daysproject_slug

get_guide_health

Which guides had steps fail to anchor recently — the signal that a selector rotted in the target app

Parametersproject_idsince_daysproject_slug

validate_guide

Validate 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.

Parametersguide_idrequiredproject_idproject_slug

tag_message

Add 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.

Parameterstagsrequiredmessage_idrequiredproject_idproject_slug

untag_message

Remove specific tags from a message

Parameterstagsrequiredmessage_idrequiredproject_idproject_slug

list_message_tags

List all tags defined for this project

Parametersproject_idproject_slug

get_message_tags_stats

Get all project tags with their usage counts

Parametersproject_idproject_slug

list_teams

List all teams for this project with member and conversation counts

Parametersproject_idproject_slug

get_team

Get a team with its members

Parametersteam_idrequiredproject_idproject_slug

list_macros

List shared macros (available to all team members)

Parametersproject_idproject_slug

get_macro

Get a single shared macro by ID

Parametersmacro_idrequiredproject_idproject_slug

list_webhooks

List all webhooks for this project

Parametersproject_idproject_slug

create_webhook

Create a new webhook

Parametersurlrequiredeventsrequiredsecretproject_idproject_slug

update_webhook

Update an existing webhook

Parametersurleventssecretenabledproject_idwebhook_idrequiredproject_slug

delete_webhook

Delete a webhook

Parametersproject_idwebhook_idrequiredproject_slug

get_statistics

Get project statistics including responsiveness, conversation volume, and per-agent metrics. Defaults to last 30 days.

Parametersend_dateproject_idstart_dateproject_slug

get_sender_domain

Get 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).

Parametersproject_idproject_slug

configure_sender_domain

Configure 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.

Parametersdomainrequiredlocal_partrequiredproject_idsender_nameproject_slugmail_from_subdomain

check_sender_domain

Re-check the project's custom sender domain verification status against Amazon SES.

Parametersproject_idproject_slug

update_sender_identity

Update 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.

Parametersreply_tolocal_partproject_idsender_nameproject_slug

remove_sender_domain

Remove the project's custom sender domain. Visitor-facing email reverts to the default Hal address.

Parametersproject_idproject_slug

import_conversation

Import a single historical conversation silently (no webhooks, no notifications). Use for migrating data from other chat platforms.

Parametersvisitorrequiredmessagesrequiredproject_idconversationproject_slug

import_conversations

Import multiple historical conversations in batch (max 100). Each conversation is imported independently — one failure does not affect others. Silent: no webhooks, no notifications.

Parametersproject_idproject_slugconversationsrequired

Version history

1
  1. v1.0.0LatestOct 30, 2026

Score

83% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.