# CommsHarbor Muse connector

From musedirectory.ai, the independent directory of Meta Muse connectors. Not affiliated with Meta.

## CommsHarbor

Send transactional emails and manage customer relationships with full audit trails

- Record: https://musedirectory.ai/connector/commsharbor
- Category: Marketing & Ads
- Developer: CommsHarbor (https://commsharbor.com)
- Muse status: Extra setup. Not in Muse's Connectors list yet. Muse can still use it: its page gives you a request to paste into Muse.
- Health: Working, 600ms, checked 2026-09-28T10:01:33Z
- Endpoint: https://commsharbor.com/mcp
- Auth: No account needed; Pricing: unknown
- Screening: Screened, no issues found (2026-09-24T12:15:54Z)
- Source: Found in the official MCP Registry (com.commsharbor/commsharbor) https://registry.modelcontextprotocol.io/v0/servers?search=com.commsharbor%2Fcommsharbor

Transactional email platform with permission-based campaigns, multi-tenant CRM for contacts, companies, pipelines and deals, domain verification, and complete audit logging. Integrates with AWS SES for delivery.

Example request: "Send a transactional confirmation email from my verified domain and log the delivery event"

How to connect: Not in Muse's Connectors list yet, but Muse can still use it. Paste this into Muse: "Use CommsHarbor to help me. It is a free service with an MCP server at https://commsharbor.com/mcp. It does not need an API key. Ask me before you share anything with it." Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.

Tools:
- commsharbor_health: Read deployment health and build. Smoke tests wait for their own commit to appear here instead of racing edge propagation.
- commsharbor_logout: Revoke the current session. Bootstrap/CSRF must belong to this browser and session. Other product sessions remain active.
- commsharbor_me: Read the current account profile and platform role. `user.id` is the shared-account ID. Organizations are not listed here: they live in the shared account, which does not list them inside products yet — open a workspace by its ID with `GET /api/organizations/{organization_id}`.
- commsharbor_context: Resolve the active organization identity. Read this before a write when you are not certain which tenant is active. Guessing is how data lands in the wrong organization. An organization API key answers `kind: api_key` with its scopes.
- commsharbor_organization_get: Open an organization by id: name, your role and the CommsHarbor plan. This is how a workspace is opened. Name and role come from the shared account (null with an organization API key, which carries neither); the plan is the organization's global entitlement in CommsHarbor.
- commsharbor_audit: List tenant audit events. Audit records are never rewritten and never carry recipient PII.
- commsharbor_platform_context: Confirm the caller's platform role. Tenant ownership grants nothing here: platform access is a separate, explicit grant.
- commsharbor_domains: List sending domains with their last observed state. `status` is what was last OBSERVED at SES and DNS. It does not become `active` because provisioning was requested.
- commsharbor_domain_create: Register the organization's exact sending domain and queue SES provisioning. Asking twice does not provision twice. Publish the returned DKIM records, then call `verify` to have the state observed.
- commsharbor_domain_get: Read one stored sending-domain resource. This returns what was stored at the last observation. To look again, call `verify`.
- commsharbor_domain_verify: Refresh domain readiness from real SES and DNS observations. This is the ONLY operation that can move a domain to `active`, and only because it actually looked.
- commsharbor_domain_smoke: Send one controlled smoke to the server-side recipient secret; never accepts a recipient argument. The request never accepts a recipient: the destination is a server-side secret. That is what keeps this from becoming a way to send mail to arbitrary addresses through someone else'
- commsharbor_domain_deliveries: List a domain's deliveries without recipient addresses.
- commsharbor_delivery_get: Read one delivery and its SES MessageId without recipient data. `ses_message_id` is what correlates this record with AWS when you need to chase a message there.
- commsharbor_delivery_events: List normalized SES feedback events for one delivery. Open and Click are ADDITIVE: they are recorded alongside delivery state and never overwrite it.
- commsharbor_crm_contacts_list: Lists contacts in the tenant CRM — a person in the tenant CRM. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, company_id. Needs crm:read on the organization. Every item carries an absolute url. Being in the CRM is not permission to email: consent
- commsharbor_crm_contacts_create: Creates a contact in the tenant CRM. Required: email, first_name. Needs crm:write on the organization. Returns the created resource with its absolute url. Being in the CRM is not permission to email: consent lives in the `marketing` sub-resource.
- commsharbor_crm_contacts_get: Reads one contact from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. Being in the CRM is not permission to email: consent lives in the `marketing` sub-resource.
- commsharbor_crm_contacts_update: Updates one contact in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404. Being in the CRM is not permission to email: consent lives in the `marketing` sub-resource.
- commsharbor_crm_contacts_delete: Deletes one contact from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. Being in the CRM is not permission to email: consent lives in the `marketing` sub-resource.
- commsharbor_crm_companies_list: Lists companies in the tenant CRM — an organization in the tenant CRM — a customer of the customer. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q. Needs crm:read on the organization. Every item carries an absolute url.
- commsharbor_crm_companies_create: Creates a company in the tenant CRM. Required: name. Needs crm:write on the organization. Returns the created resource with its absolute url.
- commsharbor_crm_companies_get: Reads one company from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.
- commsharbor_crm_companies_update: Updates one company in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.
- commsharbor_crm_companies_delete: Deletes one company from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.
- commsharbor_crm_pipelines_list: Lists pipelines in the tenant CRM — a named sequence of stages that deals move through. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q. Needs crm:read on the organization. Every item carries an absolute url.
- commsharbor_crm_pipelines_create: Creates a pipeline in the tenant CRM. Required: name. Needs crm:write on the organization. Returns the created resource with its absolute url.
- commsharbor_crm_pipelines_get: Reads one pipeline from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.
- commsharbor_crm_pipelines_update: Updates one pipeline in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.
- commsharbor_crm_pipelines_delete: Deletes one pipeline from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.
- commsharbor_crm_deals_list: Lists deals in the tenant CRM — an opportunity moving through a pipeline. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, pipeline_id, stage_id, status. Needs crm:read on the organization. Every item carries an absolute url. Money is in minor unit
- commsharbor_crm_deals_create: Creates a deal in the tenant CRM. Required: title, pipeline_id, stage_id. Needs crm:write on the organization. Returns the created resource with its absolute url. Money is in minor units: `value_minor: 10000` with `currency: "USD"` is $100.00, not $10,000.
- commsharbor_crm_deals_get: Reads one deal from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. Money is in minor units: `value_minor: 10000` with `currency: "USD"` is $100.00, not $10,000.
- commsharbor_crm_deals_update: Updates one deal in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404. Money is in minor units: `value_minor: 10000` with `currency: "USD"` is $100.00, not $10,000.
- commsharbor_crm_deals_delete: Deletes one deal from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. Money is in minor units: `value_minor: 10000` with `currency: "USD"` is $100.00, not $10,000.
- commsharbor_crm_activities_list: Lists activities in the tenant CRM — something that happened with a contact, company or deal. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, deal_id, contact_id, company_id, activity_type. Needs crm:read on the organization. Every item carries an
- commsharbor_crm_activities_create: Creates a activity in the tenant CRM. Required: note. Needs crm:write on the organization. Returns the created resource with its absolute url.
- commsharbor_crm_activities_get: Reads one activity from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.
- commsharbor_crm_activities_update: Updates one activity in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.
- commsharbor_crm_activities_delete: Deletes one activity from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.

Screening checks:
- MCP handshake: pass (Answered in 702ms)
- Domain against threat feeds (Cloudflare security DNS): pass (commsharbor.com not flagged)
- Published packages against the OSV malicious-package database: n/a (No npm or PyPI package published)
- Hidden instructions or invisible characters in tool text: pass (120 tools read, nothing found)
- Inputs asking for passwords, card numbers or seed phrases: pass (None found)
- Domain and redirects: pass (No redirects off the domain)
- AI review of purpose and tool behavior: pass (No concerns)
