
HAL MCP server
Which MCP servers are HAL's own, from the official registry and from asking its own domain, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.
read 2026-10-30
- Registry namecom.chatwithhal/mcpverified in the MCP registry
The registry name sits under chatwithhal.com. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.
- Stateanswerschecked 2026-10-30
- Tools134
- Server calls itself@chatwithhal/mcp
- Server version1.0.0
- Protocol version2025-06-18
On 2026-10-30 the server answered initialize and tools/list without a sign-in. First answer in 260 ms.
- Its tools do answer customer questions from your help content; have AI draft replies to customer conversations, but not book client appointments straight into your CRM.
- Checked on 3 of the 7 days it takes to judge reliability.
Once connected
- For "have AI draft replies to customer conversations", the likely first call is list_conversations.
- set_typing, update_conversation, create_article_group, update_article_group, create_article change data without a sign-in: anyone with the address can call them.
- Its definitions take about 74708 tokens of context: enable only the tools a task needs.
- Parameters are untyped or undescribed in 58 of 134 tools: check arguments before calling.
Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.
- INITE MCP scoreafter a weeka score needs 7 daily checks: 3 so far
- What an agent can do with it2 of 3 use cases
- Answeredmeasuring3 of the 7 daily checks it takes to print a share
- Median first answer372 ms
- Space in an agent's context≈ 74,708 tokensthe definitions of all its tools (134), which an agent carries on every turn
- Tool definitionsB · 75 of 100
- Typed results0 of 134 toolsdeclared outputSchema: results come typed, read once
- No description an agent can choose by: 6 of 134
- Parameters without a description: in 58 of 134
- Not saying whether it only reads or can destroy: 134 of 134
What an agent can do with it
- can do · answer customer questions from your help content
- cannot · book client appointments straight into your CRM
- can do · have AI draft replies to customer conversations
Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?
Worth a look
- Tools that change data, on a server that answers without a sign-in: set_typing, update_conversation, create_article_group, update_article_group, create_article
A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (25%), doing the product's job (25%), definitions (20%), context (10%), use (10%) and how readily a client connects (10%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →
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…
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…
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…
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…
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…
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…
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…
get_articleGet an article with translations
create_articleCreate an article with an initial translation
update_articleUpdate article properties or upsert a translation
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
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…
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…
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…
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.
The first 60 of 134, as the server listed them.
How to connect
Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:
{
"mcpServers": {
"chatwithhal": {
"type": "http",
"url": "https://api.chatwithhal.com/mcp"
}
}
}Add it
Claude Code, in a terminal
claude mcp add --transport http chatwithhal https://api.chatwithhal.com/mcpclaude.ai, ChatGPT and other clients: add https://api.chatwithhal.com/mcp as a custom connector in the settings.
Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.
Cookies
Before we count this visit
Analytics and ad measurement tell us which pages and which of our ads do their job: Google Analytics and Google Ads, the Meta pixel, Yandex Metrica, and one first-party id of our own. Nothing is stored until you answer, and declining changes nothing about the site.