Send transactional emails and manage customer relationships with full audit trails
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.
Try asking Muse: "Send a transactional confirmation email from my verified domain and log the delivery event"
Source: Found in the official MCP Registry (com.commsharbor/commsharbor) · First listed September 24, 2026
Each bar is one check, every 15 minutes. Green means it answered. Last checked 2 h ago.
What Muse can see: It does not ask you to sign in, so it cannot see your accounts. It only sees what Muse sends it from your request.
Before it acts: Read what Muse plans to do before you approve it, and remove the app from Muse when you stop using it.
musedirectory.ai is not part of Meta. More about how Muse handles your information
Not in Muse's Connectors list yet, but Muse can still use it. Copy the request below and paste it into Muse. 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.
https://commsharbor.com/mcpNot in Muse's Connectors list yet. Muse can still use it: its page gives you a request to paste into Muse.
Response time at the last check: 2445ms. Worked in 100% of checks over 30 days.
Screened, no issues found
Screening looks for known threats and hidden instructions at the time of the check, and runs again weekly and whenever the tool list changes. It cannot see the server's code, so only connect what you need and review what Muse asks to do. How screening works.
commsharbor_healthRead deployment health and build. Smoke tests wait for their own commit to appear here instead of racing edge propagation.commsharbor_logoutRevoke the current session. Bootstrap/CSRF must belong to this browser and session. Other product sessions remain active.commsharbor_meRead 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_contextResolve 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_getOpen 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_auditList tenant audit events. Audit records are never rewritten and never carry recipient PII.commsharbor_platform_contextConfirm the caller's platform role. Tenant ownership grants nothing here: platform access is a separate, explicit grant.commsharbor_domainsList 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_createRegister 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_getRead one stored sending-domain resource. This returns what was stored at the last observation. To look again, call `verify`.commsharbor_domain_verifyRefresh 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_smokeSend 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_deliveriesList a domain's deliveries without recipient addresses.commsharbor_delivery_getRead 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_eventsList 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_listLists 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: consentcommsharbor_crm_contacts_createCreates 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_getReads 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_updateUpdates 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_deleteDeletes 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_listLists 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_createCreates 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_getReads one company from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.commsharbor_crm_companies_updateUpdates 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_deleteDeletes one company from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.commsharbor_crm_pipelines_listLists 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_createCreates 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_getReads one pipeline from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.commsharbor_crm_pipelines_updateUpdates 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_deleteDeletes one pipeline from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.commsharbor_crm_deals_listLists 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 unitcommsharbor_crm_deals_createCreates 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_getReads 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_updateUpdates 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_deleteDeletes 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_listLists 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 ancommsharbor_crm_activities_createCreates 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_getReads one activity from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.commsharbor_crm_activities_updateUpdates 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_deleteDeletes one activity from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.https://commsharbor.com/mcpNot 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.
At the last check (September 28, 2026, 07:45 UTC) the endpoint was working, answering in 2445ms. Over the last 7 days it answered 100% of health checks. It is checked every 15 minutes.
It was screened on September 24, 2026 with the result "screened, no issues found". Screening checks the domain against threat feeds and reads the tools for hidden instructions and requests for passwords or card numbers. It cannot see the server's code, so grant only the access you need.
It exposes 40 tools, including commsharbor_health, commsharbor_logout, commsharbor_me, commsharbor_context. For example, you could ask Muse: "Send a transactional confirmation email from my verified domain and log the delivery event"
This listing was added from public sources (Found in the official MCP Registry (com.commsharbor/commsharbor)). If you build CommsHarbor, claim it to correct the details and get your badge.
Paste this on your site or README. It always shows the latest check.
<a href="https://musedirectory.ai/connector/commsharbor"><img src="https://musedirectory.ai/badge/commsharbor.svg" alt="CommsHarbor on musedirectory.ai" width="236" height="40"></a>