NestDaddy

HAL

com.chatwithhal/mcp · v1.0.0

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

Connect Remote server

Terminal
claude mcp add --transport http mcp https://api.chatwithhal.com/mcp --header "Authorization: Bearer <YOUR_API_KEY>"
~/.cursor/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://api.chatwithhal.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "mcp": {
      "type": "http",
      "url": "https://api.chatwithhal.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
Claude Desktop
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_projects

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

  • list_conversations

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

  • 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 broad…

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

  • 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 ar…

  • 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…

  • 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 le…

  • 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,…

  • list_article_groups

    List all article groups

  • create_article_group

    Create a new article group

  • update_article_group

    Update an article group

  • 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…

  • 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 titl…

  • get_article

    Get an article with translations

  • create_article

    Create an article with an initial translation

  • update_article

    Update article properties or upsert a translation

  • delete_contact

    Permanently 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_contacts

    List contacts with optional search

  • get_contact

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

  • create_contact

    Create a new contact

  • update_contact

    Update a contact

  • delete_company

    Permanently 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_stages

    List CRM pipeline stages

  • list_companies

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

  • 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…

  • get_company

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

  • link_contact_to_company

    Link an existing contact to an existing company. The operation is idempotent and both records must belong to the selected project.

  • create_company

    Create a new company

  • update_company

    Update a company

  • 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 diffe…

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

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

  • get_deal

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

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

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

  • set_deal_contact

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

  • remove_deal_contact

    Remove a contact from a deal

  • delete_deal

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

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

  • list_email_templates

    List reusable workflow email templates for a project.

  • get_email_template

    Get a reusable workflow email template.

  • create_email_template

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

  • update_email_template

    Update a reusable workflow email template.

  • delete_email_template

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

  • preview_email_template

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

  • validate_email_template

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

  • send_test_email_template

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

  • send_test_email_campaign

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

  • list_email_suppressions

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

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

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

  • get_email_unsubscribe_status

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

  • list_email_campaigns

    List email campaigns backed by visitor workflows.

  • get_email_campaign

    Get email campaign details.

  • list_event_names

    List tracked lifecycle event names seen in a project.

  • list_custom_properties

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

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

  • update_email_campaign

    Update an email campaign.

  • enable_email_campaign

    Enable an email campaign.

  • disable_email_campaign

    Disable an email campaign.

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

  • list_email_campaign_runs

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

  • get_email_campaign_run

    Get one email campaign run with clicked URLs.

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

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

  • list_email_images

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

  • 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…

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

  • list_broadcasts

    List one-off email broadcasts for a project.

  • 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/ra…

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

  • update_broadcast

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

  • delete_broadcast

    Delete a broadcast. Refused while it is actively sending.

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

  • get_broadcast_audience_fields

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

  • send_test_broadcast_email

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

  • schedule_broadcast

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

  • 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…

  • cancel_broadcast

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

  • list_broadcast_recipients

    List the per-recipient delivery status for a broadcast.

Headers

NameDescription
Authorization
Required, secret
Bearer <key>: an account MCP key or a project MCP key (hal_mk_…), created in HAL under Settings → API.

Details

Endpointhttps://api.chatwithhal.com/mcp (Streamable HTTP)
First published30 Oct 2026
Last updated30 Oct 2026
Registry namecom.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.