Customer conversations, help center, CRM, deals and email campaigns on HAL (chatwithhal.com).
Connect Remote server
claude mcp add --transport http mcp https://api.chatwithhal.com/mcp --header "Authorization: Bearer <YOUR_API_KEY>"
{
"mcpServers": {
"mcp": {
"url": "https://api.chatwithhal.com/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}
{
"servers": {
"mcp": {
"type": "http",
"url": "https://api.chatwithhal.com/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}
Settings > Connectors > Add custom connector
URL: https://api.chatwithhal.com/mcp
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools 80 found in our last check
list_projectsList projects available to this MCP key. Call this first, then get_email_capabilities_overview for email features.
list_conversationsList conversations with filters (status, spam, limit, offset). Each result says whether it is marked as spam.
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 broad…
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.
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 ar…
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…
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 le…
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,…
list_article_groupsList all article groups
create_article_groupCreate a new article group
update_article_groupUpdate an article group
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…
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 titl…
get_articleGet an article with translations
create_articleCreate an article with an initial translation
update_articleUpdate article properties or upsert a translation
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.
list_contactsList contacts with optional search
get_contactGet a contact with full details, recent activity and the deals they are on
create_contactCreate a new contact
update_contactUpdate a contact
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.
list_crm_stagesList CRM pipeline stages
list_companiesList companies with optional search and stage filter. Includes companies with no linked contacts. Paginated.
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…
get_companyGet a company with contacts, details and its deals. The company stage and deal_value mirror its primary deal.
link_contact_to_companyLink an existing contact to an existing company. The operation is idempotent and both records must belong to the selected project.
create_companyCreate a new company
update_companyUpdate a company
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 diffe…
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.
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.
get_dealGet a deal with its company, stage, contacts and stage/amount history
create_dealCreate a deal for a company. The company's own stage and value follow its primary deal (its newest open new-business deal).
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.
set_deal_contactAdd a contact to a deal, or change their role on it
remove_deal_contactRemove a contact from a deal
delete_dealDelete a deal. A company with no deals left drops out of the pipeline.
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.
list_email_templatesList reusable workflow email templates for a project.
get_email_templateGet a reusable workflow email template.
create_email_templateNew to HAL email? Call get_email_capabilities_overview first. Create a reusable workflow email template.
update_email_templateUpdate a reusable workflow email template.
delete_email_templateDelete a reusable workflow email template. Existing campaigns keep their embedded copy.
preview_email_templateRender an email template preview as subject, preheader, HTML, and plain text.
validate_email_templateValidate an email template and return AI-client-friendly errors.
send_test_email_templateSend a workflow email template test to an account user email address only.
send_test_email_campaignSend a test email for an existing email campaign to an account user email address only.
list_email_suppressionsList email addresses suppressed for lifecycle email campaigns in a project.
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.
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.
get_email_unsubscribe_statusCheck whether an email address is currently suppressed for lifecycle email campaigns, for a given category (default "all").
list_email_campaignsList email campaigns backed by visitor workflows.
get_email_campaignGet email campaign details.
list_event_namesList tracked lifecycle event names seen in a project.
list_custom_propertiesList visitor custom properties and sampled metadata keys available for campaign predicates and conditions.
create_email_campaignNew to HAL email? Call get_email_capabilities_overview first. Create an email campaign using campaign language instead of workflow graph internals.
update_email_campaignUpdate an email campaign.
enable_email_campaignEnable an email campaign.
disable_email_campaignDisable an email campaign.
delete_email_campaignDelete an email campaign. Refuses if another workflow in the project still chains into it via trigger_campaign or next_campaign_id.
list_email_campaign_runsList email campaign runs with delivery, open, and click data.
get_email_campaign_runGet one email campaign run with clicked URLs.
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.
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.
list_email_imagesList images in a project’s email image library, newest first. Use these for lifecycle/workflow email `image` blocks.
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…
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.
list_broadcastsList one-off email broadcasts for a project.
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/ra…
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.
update_broadcastUpdate a draft or scheduled broadcast (name, email content, audience, schedule, list-hygiene or tracking options, A/B test).
delete_broadcastDelete a broadcast. Refused while it is actively sending.
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.
get_broadcast_audience_fieldsList the fields available for building a broadcast audience (contact/company builtins, sampled metadata keys, valid operators per type).
send_test_broadcast_emailSend a test of a broadcast email to an account user email address only (never to real contacts).
schedule_broadcastSchedule a draft (or reschedule a scheduled) broadcast to send at a future time.
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…
cancel_broadcastCancel a scheduled, in-progress, or paused broadcast. Recipients not yet sent to are marked cancelled.
list_broadcast_recipientsList the per-recipient delivery status for a broadcast.
Headers
| Name | Description |
|---|---|
AuthorizationRequired, secret | Bearer <key>: an account MCP key or a project MCP key (hal_mk_…), created in HAL under Settings → API. |
Details
| Endpoint | https://api.chatwithhal.com/mcp (Streamable HTTP) |
| First published | 30 Oct 2026 |
| Last updated | 30 Oct 2026 |
| Registry name | com.chatwithhal/mcp |
More marketing and seo servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
