# com.commsharbor/commsharbor (remote · commsharbor.com)

Transactional e-mail and permission-based campaigns, multi-tenant, with a full audit trail.

- Trust score: 60/100 (medium)
- Change this week: +2
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- remote · `commsharbor.com`: 60/100 (this document), [markdown](https://verifymcp.io/servers/com-commsharbor-commsharbor/commsharbor.md), [page](https://verifymcp.io/servers/com-commsharbor-commsharbor/commsharbor)

## Channel facts

- Endpoint: `https://commsharbor.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 150 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS check failed: the endpoint is reachable over plaintext HTTP.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 9564 tokens (~63/item across 150 items; 150 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 48/100
  - Stability check failed: schema churn in the 15 days we've observed: 3 tool removals, 0 breaking changes, 0 auth/transport breaks, 12 additions.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 18 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "commsharbor_logout" implies "revoke" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 151 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 20/100
  - Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28.

## Install

### How do I install the com.commsharbor/commsharbor MCP server?

com.commsharbor/commsharbor is a hosted endpoint at https://commsharbor.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-commsharbor-commsharbor 'https://commsharbor.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-commsharbor-commsharbor": {
      "url": "https://commsharbor.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-commsharbor-commsharbor": {
      "type": "http",
      "url": "https://commsharbor.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-commsharbor-commsharbor]
url = "https://commsharbor.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-commsharbor-commsharbor": {
      "type": "remote",
      "url": "https://commsharbor.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-commsharbor-commsharbor --url 'https://commsharbor.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-commsharbor-commsharbor:
    url: "https://commsharbor.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-commsharbor-commsharbor": {
      "Transport": "http",
      "Url": "https://commsharbor.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-commsharbor-commsharbor -t streamable-http -u 'https://commsharbor.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-commsharbor-commsharbor": {
      "type": "http",
      "url": "https://commsharbor.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-20 (score 60, 0)

- [functional] Server version: ffd12ea8 → edeb64b6

### 2026-09-18 (score 60, +1)

- [functional] Server version: 9e6f0641 → ffd12ea8

### 2026-09-17 (score 59, 0)

- [functional] Server version: 539ff827 → 9e6f0641

### 2026-09-16 (score 59, +1)

- [functional] Server version: 0e2415e9 → 539ff827

### 2026-09-15 (score 58, 0)

- [security regression] Stability: 0.30 → fail
- [security regression] Tool “commsharbor_auth_start” was removed
- [security regression] Tool “commsharbor_auth_verify” was removed
- [security regression] Tool “commsharbor_profile_update” was removed
- [functional] Server version: 6977eb54 → 0e2415e9

### 2026-09-14 (score 58, 0)

- [functional] Server version: 18652f28 → 6977eb54
- [functional] New tool “pricing”

### 2026-09-13 (score 58, +1)

- [functional] Server version: 7c65b44e → 18652f28

### 2026-09-12 (score 57, 0)

- [functional] Server version: 3caecb8f → 7c65b44e

## MCP tools (150)

### `commsharbor_health` (~17 tokens)

Read deployment health and build.

### `commsharbor_logout` (~17 tokens)

Revoke the current session.

### `commsharbor_me` (~18 tokens)

Read the current profile and memberships.

### `commsharbor_organizations` (~15 tokens)

List memberships.

### `commsharbor_organization_create` (~39 tokens)

Create the verified owner's single trial.

Input parameters:

- `name` (string, required): Organization name
- `sending_domain` (string, required): Sending domain

### `commsharbor_context` (~17 tokens)

Resolve the active organization identity.

### `commsharbor_organization_get` (~28 tokens)

Read an organization.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_organization_update` (~37 tokens)

Update an organization.

Input parameters:

- `name` (string, required): Organization name
- `organization_id` (string, required): Active organization ID

### `commsharbor_members` (~26 tokens)

List organization members.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_member_role` (~50 tokens)

Change a non-owner member role.

Input parameters:

- `organization_id` (string, required): Active organization ID
- `role` (string, required): New role
- `user_id` (string, required): Member user ID

### `commsharbor_invitations` (~27 tokens)

List invitations.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_invitation_create` (~53 tokens)

Invite a member and reveal the acceptance token once.

Input parameters:

- `email` (string, required): Invitee email
- `organization_id` (string, required): Active organization ID
- `role` (string, required): Member role

### `commsharbor_invitation_accept` (~26 tokens)

Accept an invitation.

Input parameters:

- `token` (string, required): Invitation token

### `commsharbor_api_keys` (~29 tokens)

List API keys without secrets.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_api_key_create` (~73 tokens)

Create a scoped API key and reveal it once.

Input parameters:

- `name` (string, required): Credential name
- `organization_id` (string, required): Active organization ID
- `scopes` (array, required): What the key may do, e.g. `organization:read`, `crm:write`, `messages:send`.

### `commsharbor_api_key_revoke` (~43 tokens)

Revoke an API key.

Input parameters:

- `api_key_id` (string, required): API key ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_audit` (~38 tokens)

List tenant audit events.

Input parameters:

- `cursor` (string): Opaque cursor
- `organization_id` (string, required): Active organization ID

### `commsharbor_platform_context` (~19 tokens)

Confirm the caller's platform role.

### `commsharbor_domains` (~31 tokens)

List sending domains with their last observed state.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_domain_create` (~43 tokens)

Register the organization's exact sending domain and queue SES provisioning.

Input parameters:

- `domain` (string, required): Sending domain
- `organization_id` (string, required): Active organization ID

### `commsharbor_domain_get` (~41 tokens)

Read one stored sending-domain resource.

Input parameters:

- `domain_id` (string, required): Sending domain ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_domain_verify` (~44 tokens)

Refresh domain readiness from real SES and DNS observations.

Input parameters:

- `domain_id` (string, required): Sending domain ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_domain_smoke` (~52 tokens)

Send one controlled smoke to the server-side recipient secret; never accepts a recipient argument.

Input parameters:

- `domain_id` (string, required): Sending domain ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_domain_deliveries` (~45 tokens)

List a domain's deliveries without recipient addresses.

Input parameters:

- `domain_id` (string, required): Sending domain ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_delivery_get` (~45 tokens)

Read one delivery and its SES MessageId without recipient data.

Input parameters:

- `delivery_id` (string, required): Delivery ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_delivery_events` (~42 tokens)

List normalized SES feedback events for one delivery.

Input parameters:

- `delivery_id` (string, required): Delivery ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_crm_contacts_list` (~126 tokens)

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.

Input parameters:

- `company_id` (string): company_id
- `cursor` (string): Opaque cursor returned by the previous page
- `limit` (integer): Page size from 1 to 100
- `organization_id` (string, required): organization_id
- `q` (string): q

### `commsharbor_crm_contacts_create` (~84 tokens)

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.

Input parameters:

- `company_id` (string): company id
- `email` (string, required): email
- `first_name` (string, required): first name
- `organization_id` (string, required): organization_id

### `commsharbor_crm_contacts_get` (~59 tokens)

Reads one contact from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.

Input parameters:

- `contact_id` (string, required): contact_id
- `organization_id` (string, required): organization_id

### `commsharbor_crm_contacts_update` (~94 tokens)

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.

Input parameters:

- `company_id` (string): company id
- `contact_id` (string, required): contact_id
- `email` (string): email
- `first_name` (string): first name
- `organization_id` (string, required): organization_id

### `commsharbor_crm_contacts_delete` (~59 tokens)

Deletes one contact from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.

Input parameters:

- `contact_id` (string, required): contact_id
- `organization_id` (string, required): organization_id

### `commsharbor_crm_companies_list` (~120 tokens)

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.

Input parameters:

- `cursor` (string): Opaque cursor returned by the previous page
- `limit` (integer): Page size from 1 to 100
- `organization_id` (string, required): organization_id
- `q` (string): q

### `commsharbor_crm_companies_create` (~78 tokens)

Creates a company in the tenant CRM. Required: name. Needs crm:write on the organization. Returns the created resource with its absolute url.

Input parameters:

- `domain` (string): domain
- `name` (string, required): name
- `organization_id` (string, required): organization_id
- `website` (string): website

### `commsharbor_crm_companies_get` (~60 tokens)

Reads one company from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.

Input parameters:

- `company_id` (string, required): company_id
- `organization_id` (string, required): organization_id

### `commsharbor_crm_companies_update` (~91 tokens)

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.

Input parameters:

- `company_id` (string, required): company_id
- `domain` (string): domain
- `name` (string): name
- `organization_id` (string, required): organization_id
- `website` (string): website

### `commsharbor_crm_companies_delete` (~60 tokens)

Deletes one company from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.

Input parameters:

- `company_id` (string, required): company_id
- `organization_id` (string, required): organization_id

### `commsharbor_crm_pipelines_list` (~117 tokens)

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.

Input parameters:

- `cursor` (string): Opaque cursor returned by the previous page
- `limit` (integer): Page size from 1 to 100
- `organization_id` (string, required): organization_id
- `q` (string): q

### `commsharbor_crm_pipelines_create` (~79 tokens)

Creates a pipeline in the tenant CRM. Required: name. Needs crm:write on the organization. Returns the created resource with its absolute url.

Input parameters:

- `name` (string, required): name
- `organization_id` (string, required): organization_id
- `stages` (array): Stage names to create with the pipeline, in order.

### `commsharbor_crm_pipelines_get` (~60 tokens)

Reads one pipeline from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.

Input parameters:

- `organization_id` (string, required): organization_id
- `pipeline_id` (string, required): pipeline_id

### `commsharbor_crm_pipelines_update` (~92 tokens)

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.

Input parameters:

- `name` (string): name
- `organization_id` (string, required): organization_id
- `pipeline_id` (string, required): pipeline_id
- `stages` (array): Stage names to create with the pipeline, in order.

### `commsharbor_crm_pipelines_delete` (~60 tokens)

Deletes one pipeline from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.

Input parameters:

- `organization_id` (string, required): organization_id
- `pipeline_id` (string, required): pipeline_id

### `commsharbor_crm_deals_list` (~150 tokens)

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.

Input parameters:

- `cursor` (string): Opaque cursor returned by the previous page
- `limit` (integer): Page size from 1 to 100
- `organization_id` (string, required): organization_id
- `pipeline_id` (string): pipeline_id
- `q` (string): q
- `stage_id` (string): stage_id
- `status` (string): status

### `commsharbor_crm_deals_create` (~106 tokens)

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.

Input parameters:

- `currency` (string): currency
- `organization_id` (string, required): organization_id
- `pipeline_id` (string, required): pipeline id
- `stage_id` (string, required): stage id
- `title` (string, required): title
- `value_minor` (integer): value_minor

### `commsharbor_crm_deals_get` (~60 tokens)

Reads one deal from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.

Input parameters:

- `deal_id` (string, required): deal_id
- `organization_id` (string, required): organization_id

### `commsharbor_crm_deals_update` (~113 tokens)

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.

Input parameters:

- `currency` (string): currency
- `deal_id` (string, required): deal_id
- `organization_id` (string, required): organization_id
- `pipeline_id` (string): pipeline id
- `stage_id` (string): stage id
- `title` (string): title
- `value_minor` (integer): value_minor

### `commsharbor_crm_deals_delete` (~60 tokens)

Deletes one deal from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.

Input parameters:

- `deal_id` (string, required): deal_id
- `organization_id` (string, required): organization_id

### `commsharbor_crm_activities_list` (~170 tokens)

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 absolute url.

Input parameters:

- `activity_type` (string): activity_type
- `company_id` (string): company_id
- `contact_id` (string): contact_id
- `cursor` (string): Opaque cursor returned by the previous page
- `deal_id` (string): deal_id
- `limit` (integer): Page size from 1 to 100
- `organization_id` (string, required): organization_id
- `q` (string): q

### `commsharbor_crm_activities_create` (~82 tokens)

Creates a activity in the tenant CRM. Required: note. Needs crm:write on the organization. Returns the created resource with its absolute url.

Input parameters:

- `activity_type` (string): activity type
- `deal_id` (string): deal id
- `note` (string, required): note
- `organization_id` (string, required): organization_id

### `commsharbor_crm_activities_get` (~60 tokens)

Reads one activity from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.

Input parameters:

- `activity_id` (string, required): activity_id
- `organization_id` (string, required): organization_id

### `commsharbor_crm_activities_update` (~95 tokens)

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.

Input parameters:

- `activity_id` (string, required): activity_id
- `activity_type` (string): activity type
- `deal_id` (string): deal id
- `note` (string): note
- `organization_id` (string, required): organization_id

### `commsharbor_crm_activities_delete` (~60 tokens)

Deletes one activity from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.

Input parameters:

- `activity_id` (string, required): activity_id
- `organization_id` (string, required): organization_id

### `commsharbor_crm_tasks_list` (~172 tokens)

Lists tasks in the tenant CRM — work someone still has to do in the tenant CRM. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, status, deal_id, contact_id, assignee_user_id. Needs crm:read on the organization. Every item carries an absolute url.

Input parameters:

- `assignee_user_id` (string): assignee_user_id
- `contact_id` (string): contact_id
- `cursor` (string): Opaque cursor returned by the previous page
- `deal_id` (string): deal_id
- `limit` (integer): Page size from 1 to 100
- `organization_id` (string, required): organization_id
- `q` (string): q
- `status` (string): status

### `commsharbor_crm_tasks_create` (~79 tokens)

Creates a task in the tenant CRM. Required: title. Needs crm:write on the organization. Returns the created resource with its absolute url.

Input parameters:

- `deal_id` (string): deal id
- `organization_id` (string, required): organization_id
- `status` (string): status
- `title` (string, required): title

### `commsharbor_crm_tasks_get` (~59 tokens)

Reads one task from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.

Input parameters:

- `organization_id` (string, required): organization_id
- `task_id` (string, required): task_id

### `commsharbor_crm_tasks_update` (~92 tokens)

Updates one task in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.

Input parameters:

- `deal_id` (string): deal id
- `organization_id` (string, required): organization_id
- `status` (string): status
- `task_id` (string, required): task_id
- `title` (string): title

### `commsharbor_crm_tasks_delete` (~59 tokens)

Deletes one task from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.

Input parameters:

- `organization_id` (string, required): organization_id
- `task_id` (string, required): task_id

### `commsharbor_crm_stages_list` (~119 tokens)

Lists stages in the tenant CRM — one step of a pipeline, addressed under the pipeline it belongs to. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Needs crm:read on the organization. Every item carries an absolute url.

Input parameters:

- `cursor` (string): Opaque cursor returned by the previous page
- `limit` (integer): Page size from 1 to 100
- `organization_id` (string, required): organization_id
- `pipeline_id` (string, required): pipeline_id

### `commsharbor_crm_stages_create` (~88 tokens)

Creates a stage in the tenant CRM. Required: name. Needs crm:write on the organization. Returns the created resource with its absolute url.

Input parameters:

- `name` (string, required): name
- `organization_id` (string, required): organization_id
- `pipeline_id` (string, required): pipeline_id
- `position` (integer): position
- `probability` (integer): probability

### `commsharbor_crm_stages_get` (~70 tokens)

Reads one stage from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404.

Input parameters:

- `organization_id` (string, required): organization_id
- `pipeline_id` (string, required): pipeline_id
- `stage_id` (string, required): stage_id

### `commsharbor_crm_stages_update` (~101 tokens)

Updates one stage in the tenant CRM; only the fields you send change. Needs crm:write on the organization. A foreign or missing id answers 404.

Input parameters:

- `name` (string): name
- `organization_id` (string, required): organization_id
- `pipeline_id` (string, required): pipeline_id
- `position` (integer): position
- `probability` (integer): probability
- `stage_id` (string, required): stage_id

### `commsharbor_crm_stages_delete` (~70 tokens)

Deletes one stage from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404.

Input parameters:

- `organization_id` (string, required): organization_id
- `pipeline_id` (string, required): pipeline_id
- `stage_id` (string, required): stage_id

### `commsharbor_platform_crm_leads_list` (~132 tokens)

Lists leads in the platform CRM — a prospective ORGANIZATION in our own funnel — platform CRM is not tenant data. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, stage. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Every item carries an absolute url.

Input parameters:

- `cursor` (string): Opaque cursor returned by the previous page
- `limit` (integer): Page size from 1 to 100
- `q` (string): q
- `stage` (string): stage

### `commsharbor_platform_crm_leads_create` (~107 tokens)

Creates a lead in the platform CRM. Required: email, name. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Returns the created resource with its absolute url.

Input parameters:

- `company_name` (string): company name
- `email` (string, required): email
- `name` (string, required): name
- `organization_id` (string): organization id
- `source` (string): source
- `stage` (string): stage

### `commsharbor_platform_crm_leads_get` (~59 tokens)

Reads one lead from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.

Input parameters:

- `lead_id` (string, required): lead_id

### `commsharbor_platform_crm_leads_update` (~118 tokens)

Updates one lead in the platform CRM; only the fields you send change. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.

Input parameters:

- `company_name` (string): company name
- `email` (string): email
- `lead_id` (string, required): lead_id
- `name` (string): name
- `organization_id` (string): organization id
- `source` (string): source
- `stage` (string): stage

### `commsharbor_platform_crm_leads_delete` (~59 tokens)

Deletes one lead from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.

Input parameters:

- `lead_id` (string, required): lead_id

### `commsharbor_platform_crm_tasks_list` (~165 tokens)

Lists tasks in the platform CRM — work on a platform lead — about a prospective tenant, not about a tenant's customer. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q, status, lead_id, assignee_user_id. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Every item carries an absolute url.

Input parameters:

- `assignee_user_id` (string): assignee_user_id
- `cursor` (string): Opaque cursor returned by the previous page
- `lead_id` (string): lead_id
- `limit` (integer): Page size from 1 to 100
- `q` (string): q
- `status` (string): status

### `commsharbor_platform_crm_tasks_create` (~80 tokens)

Creates a task in the platform CRM. Required: title. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Returns the created resource with its absolute url.

Input parameters:

- `due_at` (string): due at
- `lead_id` (string): lead id
- `title` (string, required): title

### `commsharbor_platform_crm_tasks_get` (~58 tokens)

Reads one task from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.

Input parameters:

- `task_id` (string, required): task_id

### `commsharbor_platform_crm_tasks_update` (~93 tokens)

Updates one task in the platform CRM; only the fields you send change. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.

Input parameters:

- `due_at` (string): due at
- `lead_id` (string): lead id
- `task_id` (string, required): task_id
- `title` (string): title

### `commsharbor_platform_crm_tasks_delete` (~58 tokens)

Deletes one task from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.

Input parameters:

- `task_id` (string, required): task_id

### `commsharbor_platform_crm_activities_list` (~123 tokens)

Lists activities in the platform CRM — our note about a prospective tenant. Cursor-paginated: limit 1-100, opaque cursor from the previous page. Filters: q. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Every item carries an absolute url.

Input parameters:

- `cursor` (string): Opaque cursor returned by the previous page
- `lead_id` (string, required): lead_id
- `limit` (integer): Page size from 1 to 100
- `q` (string): q

### `commsharbor_platform_crm_activities_create` (~81 tokens)

Creates a activity in the platform CRM. Required: note. Needs a human session with the platform_admin grant; tenant ownership does not qualify. Returns the created resource with its absolute url.

Input parameters:

- `activity_type` (string): activity type
- `lead_id` (string, required): lead_id
- `note` (string, required): note

### `commsharbor_platform_crm_activities_get` (~69 tokens)

Reads one activity from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.

Input parameters:

- `activity_id` (string, required): activity_id
- `lead_id` (string, required): lead_id

### `commsharbor_platform_crm_activities_update` (~94 tokens)

Updates one activity in the platform CRM; only the fields you send change. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.

Input parameters:

- `activity_id` (string, required): activity_id
- `activity_type` (string): activity type
- `lead_id` (string, required): lead_id
- `note` (string): note

### `commsharbor_platform_crm_activities_delete` (~69 tokens)

Deletes one activity from the platform CRM. Needs a human session with the platform_admin grant; tenant ownership does not qualify. A foreign or missing id answers 404.

Input parameters:

- `activity_id` (string, required): activity_id
- `lead_id` (string, required): lead_id

### `commsharbor_contact_marketing_get` (~45 tokens)

Read consent and preference for a CRM contact.

Input parameters:

- `contact_id` (string, required): CRM contact ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_contact_marketing_put` (~76 tokens)

Record permission-based marketing consent.

Input parameters:

- `basis` (string, required): explicit or documented_relationship
- `captured_at` (string, required): ISO-8601 capture time
- `contact_id` (string, required): CRM contact ID
- `organization_id` (string, required): Active organization ID
- `source` (string, required): Consent source

### `commsharbor_preference_token_create` (~43 tokens)

Create signed preference and unsubscribe URLs.

Input parameters:

- `contact_id` (string, required): CRM contact ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_preference_get` (~30 tokens)

Read preference through a signed capability.

Input parameters:

- `token` (string, required): Signed preference token

### `commsharbor_preference_unsubscribe` (~33 tokens)

Apply one-click unsubscribe through a signed capability.

Input parameters:

- `token` (string, required): Signed preference token

### `commsharbor_marketing_smoke` (~74 tokens)

Send one controlled permission-based marketing smoke.

Input parameters:

- `contact_id` (string, required): CRM contact matching the server-side QA recipient
- `domain_id` (string, required): Active sending domain ID
- `idempotency_key` (string, required): Unique send key
- `organization_id` (string, required): Active organization ID

### `commsharbor_contact_imports` (~52 tokens)

List contact imports.

Input parameters:

- `cursor` (string): Opaque pagination cursor
- `limit` (integer): Page size, maximum 100
- `organization_id` (string, required): Active organization ID

### `commsharbor_contact_import_preview` (~110 tokens)

Upload and preview a consent-declared CSV.

Input parameters:

- `basis` (string, required): Consent basis
- `captured_at` (string, required): ISO-8601 capture time
- `csv` (string, required): CSV, maximum 5 MB and 10,000 rows
- `mapping` (object, required): Which CSV column feeds which contact field, e.g. `{ "email": "Email" }`.
- `organization_id` (string, required): Active organization ID
- `source` (string, required): Consent source

### `commsharbor_contact_import_get` (~40 tokens)

Read one contact import.

Input parameters:

- `import_id` (string, required): Contact import ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_contact_import_confirm` (~59 tokens)

Confirm an import with a mandatory idempotency key.

Input parameters:

- `idempotency_key` (string, required): Unique confirmation key
- `import_id` (string, required): Contact import ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_contact_import_errors` (~66 tokens)

List deterministic row-level import errors.

Input parameters:

- `cursor` (string): Opaque pagination cursor
- `import_id` (string, required): Contact import ID
- `limit` (integer): Page size, maximum 100
- `organization_id` (string, required): Active organization ID

### `commsharbor_contact_file_get` (~42 tokens)

Download a tenant CSV before expiry.

Input parameters:

- `file_id` (string, required): Contact file ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_contacts_export` (~32 tokens)

Create a safe seven-day contact CSV export.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_suppressions` (~53 tokens)

List organization suppressions.

Input parameters:

- `cursor` (string): Opaque pagination cursor
- `limit` (integer): Page size, maximum 100
- `organization_id` (string, required): Active organization ID

### `commsharbor_suppression_create` (~54 tokens)

Suppress a recipient in one organization.

Input parameters:

- `contact_id` (string): Optional CRM contact ID
- `email` (string, required): Recipient email
- `organization_id` (string, required): Active organization ID

### `commsharbor_audiences` (~54 tokens)

List audiences and saved segments.

Input parameters:

- `cursor` (string): Opaque pagination cursor
- `limit` (integer): Page size, maximum 100
- `organization_id` (string, required): Active organization ID

### `commsharbor_audience_create` (~71 tokens)

Create an audience or saved segment.

Input parameters:

- `filter` (object): The saved filter, for `saved_segment`. Allowlisted fields only.
- `kind` (string, required): static or saved_segment
- `name` (string, required): Audience name
- `organization_id` (string, required): Active organization ID

### `commsharbor_audience_get` (~38 tokens)

Read one audience.

Input parameters:

- `audience_id` (string, required): Audience ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_audience_update` (~62 tokens)

Update an audience.

Input parameters:

- `audience_id` (string, required): Audience ID
- `filter` (object): New saved filter. Allowlisted fields only.
- `name` (string): Audience name
- `organization_id` (string, required): Active organization ID

### `commsharbor_audience_delete` (~38 tokens)

Delete an audience.

Input parameters:

- `audience_id` (string, required): Audience ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_audience_members` (~62 tokens)

List audience contacts.

Input parameters:

- `audience_id` (string, required): Audience ID
- `cursor` (string): Opaque pagination cursor
- `limit` (integer): Page size, maximum 100
- `organization_id` (string, required): Active organization ID

### `commsharbor_audience_member_add` (~55 tokens)

Add a CRM contact to a static audience.

Input parameters:

- `audience_id` (string, required): Audience ID
- `contact_id` (string, required): CRM contact ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_audience_member_remove` (~55 tokens)

Remove a CRM contact from a static audience.

Input parameters:

- `audience_id` (string, required): Audience ID
- `contact_id` (string, required): CRM contact ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_templates` (~52 tokens)

List email templates.

Input parameters:

- `cursor` (string): Opaque cursor
- `limit` (integer): Page size, from 1 to 100.
- `organization_id` (string, required): Active organization ID

### `commsharbor_template_create` (~128 tokens)

Create a canonical block template draft.

Input parameters:

- `blocks` (array, required): Canonical content blocks. This is the stored form — HTML is converted into it, never kept raw.
- `message_type` (string, required): What the template may be used for. A marketing campaign will not accept a transactional template.
- `name` (string, required): Template name
- `organization_id` (string, required): Active organization ID
- `subject` (string, required): Subject with declared {{variables}}
- `variables` (array, required): Typed variables the template declares: `name`, `type` and whether it is `required`.

### `commsharbor_template_get` (~37 tokens)

Read one template.

Input parameters:

- `organization_id` (string, required): Active organization ID
- `template_id` (string, required): Template ID

### `commsharbor_template_update` (~136 tokens)

Update one template draft.

Input parameters:

- `blocks` (array): Canonical content blocks. This is the stored form — HTML is converted into it, never kept raw.
- `message_type` (string): What the template may be used for. A marketing campaign will not accept a transactional template.
- `name` (string): Template name
- `organization_id` (string, required): Active organization ID
- `subject` (string): Subject with declared {{variables}}
- `template_id` (string, required): Template ID
- `variables` (array): Typed variables the template declares: `name`, `type` and whether it is `required`.

### `commsharbor_template_archive` (~41 tokens)

Archive a template and preserve its versions.

Input parameters:

- `organization_id` (string, required): Active organization ID
- `template_id` (string, required): Template ID

### `commsharbor_template_publish` (~39 tokens)

Publish an immutable template version.

Input parameters:

- `organization_id` (string, required): Active organization ID
- `template_id` (string, required): Template ID

### `commsharbor_template_versions` (~37 tokens)

List immutable versions.

Input parameters:

- `organization_id` (string, required): Active organization ID
- `template_id` (string, required): Template ID

### `commsharbor_template_preview` (~146 tokens)

Compile and render a safe template preview.

Input parameters:

- `blocks` (array, required): Canonical content blocks. This is the stored form — HTML is converted into it, never kept raw.
- `message_type` (string): What the template may be used for. A marketing campaign will not accept a transactional template.
- `name` (string): Template name
- `organization_id` (string, required): Active organization ID
- `subject` (string, required): Subject with declared {{variables}}
- `values` (object): Values to substitute into the declared variables for this preview.
- `variables` (array, required): Typed variables the template declares: `name`, `type` and whether it is `required`.

### `commsharbor_template_export` (~44 tokens)

Export the latest published HTML, text and MJML.

Input parameters:

- `organization_id` (string, required): Active organization ID
- `template_id` (string, required): Template ID

### `commsharbor_template_import_html` (~85 tokens)

Import a safe HTML subset as a draft.

Input parameters:

- `html` (string, required): Safe HTML subset
- `message_type` (string, required): What it may be used for.
- `name` (string, required): Template name
- `organization_id` (string, required): Active organization ID
- `subject` (string, required): Subject with declared {{variables}}
- `variables` (array)

### `commsharbor_message_send` (~134 tokens)

Queue one idempotent transactional delivery.

Input parameters:

- `domain_id` (string, required): Active sending domain ID
- `idempotency_key` (string, required): Unique logical message key
- `organization_id` (string, required): Active organization ID
- `reply_to` (string): Optional reply-to email
- `template_id` (string, required): Published template ID
- `template_version` (integer): Published version to use. Without it, the latest published version is used — pin it when the content must not drift.
- `to` (string, required): Recipient email
- `variables` (object, required): Values for the template's declared variables.

### `commsharbor_campaigns` (~26 tokens)

List campaigns.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_campaign_create` (~86 tokens)

Create a campaign draft.

Input parameters:

- `audience_id` (string, required): Audience ID
- `domain_id` (string, required): Active sending domain ID
- `name` (string, required): Campaign name
- `organization_id` (string, required): Active organization ID
- `template_id` (string, required): Published marketing template ID
- `template_version` (integer): Published version to freeze into the campaign.

### `commsharbor_campaign_get` (~37 tokens)

Read a campaign.

Input parameters:

- `campaign_id` (string, required): Campaign ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_campaign_update` (~113 tokens)

Edit, pause, resume or cancel a campaign.

Input parameters:

- `audience_id` (string): Audience ID
- `campaign_id` (string, required): Campaign ID
- `domain_id` (string): Active sending domain ID
- `name` (string): Campaign name
- `organization_id` (string, required): Active organization ID
- `status` (string): paused, running or canceled
- `template_id` (string): Published marketing template ID
- `template_version` (integer): Published version to freeze into the campaign.

### `commsharbor_campaign_launch` (~73 tokens)

Freeze and launch or schedule a campaign idempotently.

Input parameters:

- `campaign_id` (string, required): Campaign ID
- `idempotency_key` (string, required): Stable launch key
- `organization_id` (string, required): Active organization ID
- `scheduled_for` (string): Optional ISO-8601 instant with offset

### `commsharbor_campaign_report` (~40 tokens)

Reconcile campaign deliveries and feedback.

Input parameters:

- `campaign_id` (string, required): Campaign ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_messaging_settings` (~30 tokens)

Read timezone and marketing state.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_messaging_settings_update` (~52 tokens)

Update timezone or pause state.

Input parameters:

- `marketing_state` (string): active or paused
- `organization_id` (string, required): Active organization ID
- `timezone` (string): IANA timezone

### `commsharbor_deliverability` (~31 tokens)

Read deliverability and backlog aggregates.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_domain_report` (~41 tokens)

Read domain delivery and feedback aggregates.

Input parameters:

- `domain_id` (string, required): Sending domain ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_webhooks` (~29 tokens)

List webhook endpoints without secrets.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_webhook_create` (~125 tokens)

Create a webhook and reveal its secret once.

Input parameters:

- `event_types` (array, required): Which events to deliver. Delivery feedback: `Delivery`, `DeliveryDelay`, `Bounce`, `Complaint`, `Reject`, `RenderingFailure`, `Open`, `Click`. Campaigns: `campaign.completed`, `campaign.paused`. Inbo…
- `organization_id` (string, required): Active organization ID
- `url` (string, required): Public HTTPS URL

### `commsharbor_webhook_get` (~43 tokens)

Read a webhook without its secret.

Input parameters:

- `organization_id` (string, required): Active organization ID
- `webhook_id` (string, required): Webhook endpoint ID

### `commsharbor_webhook_disable` (~40 tokens)

Disable a webhook.

Input parameters:

- `organization_id` (string, required): Active organization ID
- `webhook_id` (string, required): Webhook endpoint ID

### `commsharbor_webhook_deliveries` (~44 tokens)

List webhook retries and outcomes.

Input parameters:

- `organization_id` (string, required): Active organization ID
- `webhook_id` (string, required): Webhook endpoint ID

### `commsharbor_dead_letters` (~28 tokens)

Inspect nominal dead letters.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_dead_letter_replay` (~45 tokens)

Replay one campaign or webhook dead letter.

Input parameters:

- `organization_id` (string, required): Active organization ID
- `record_id` (string, required): Dead-letter record ID

### `commsharbor_billing_catalog` (~22 tokens)

Read plans, prices and x402 network.

### `commsharbor_billing` (~31 tokens)

Read tenant entitlements and available sends.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_billing_purchase` (~66 tokens)

Request a pass or top-up and receive the x402 challenge when payment is required.

Input parameters:

- `action` (string, required): Which purchase to request.
- `idempotency_key` (string, required): Stable logical purchase key
- `organization_id` (string, required): Active organization ID

### `commsharbor_operations` (~30 tokens)

List current operational alerts without PII.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_operations_refresh` (~31 tokens)

Refresh alerts, quota and capacity observations.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_data_exports` (~28 tokens)

List tenant JSON exports.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_data_export_create` (~32 tokens)

Create a seven-day tenant JSON export.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_data_export_download` (~41 tokens)

Download a tenant JSON export.

Input parameters:

- `export_id` (string, required): Tenant export ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_deletion_request` (~31 tokens)

Read the latest tenant deletion request.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_deletion_schedule` (~51 tokens)

Schedule tenant erasure after seven days using the exact confirmation phrase.

Input parameters:

- `confirmation` (string, required): Exact phrase: delete <organization_id>
- `organization_id` (string, required): Active organization ID

### `commsharbor_deletion_cancel` (~43 tokens)

Cancel a scheduled tenant erasure.

Input parameters:

- `organization_id` (string, required): Active organization ID
- `request_id` (string, required): Deletion request ID

### `commsharbor_tracking_domain` (~57 tokens)

Read the organization's tracking domain, the CNAME it needs and whether the platform actually answers on it. Null when there is none: links then use the shared platform origin.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_tracking_domain_create` (~60 tokens)

Register the host that will serve this organization's message links. One per organization; registering never activates it.

Input parameters:

- `domain` (string, required): Tracking host, e.g. links.example.com
- `organization_id` (string, required): Active organization ID

### `commsharbor_tracking_domain_verify` (~58 tokens)

Probe the host now and store what was seen. The ONLY way to reach `active`, and only after reaching this product on that host — DNS resolving is not enough.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_tracking_domain_remove` (~48 tokens)

Remove the tracking domain; NEW messages go back to the platform origin. Links already sent keep pointing at the removed host.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_inboxes` (~31 tokens)

List the addresses this organization receives on.

Input parameters:

- `organization_id` (string, required): Active organization ID

### `commsharbor_inbox_create` (~78 tokens)

Create a receiving address on a verified sending domain. Fails with 422 when the domain is not verified: receiving on an unproven domain is relay.

Input parameters:

- `domain` (string, required): Verified domain
- `local_part` (string, required): What comes before the @
- `organization_id` (string, required): Active organization ID

### `commsharbor_inbox_get` (~39 tokens)

Read one receiving address.

Input parameters:

- `inbox_id` (string, required): Inbox ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_inbox_disable` (~53 tokens)

Stop accepting mail at this address. History stays readable — this disables, it never erases.

Input parameters:

- `inbox_id` (string, required): Inbox ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_inbox_messages` (~76 tokens)

List what arrived at one address, newest first. Summaries only, no body.

Input parameters:

- `cursor` (string): Opaque cursor
- `inbox_id` (string, required): Inbox ID
- `limit` (string): Page size, 1 to 100
- `organization_id` (string, required): Active organization ID

### `commsharbor_inbox_message` (~89 tokens)

Read one message: body, chosen headers and `auth`. `from` is text the sender chose; `auth` is the SPF/DKIM/DMARC verdict the receiving edge reached. Decide on `auth`.

Input parameters:

- `inbox_id` (string, required): Inbox ID
- `message_id` (string, required): Inbox message ID
- `organization_id` (string, required): Active organization ID

### `commsharbor_inbox_attachment` (~85 tokens)

Get a five-minute signed URL for one attachment, by its index in the message. The URL expires; the stored file does not.

Input parameters:

- `inbox_id` (string, required): Inbox ID
- `index` (string, required): Attachment index, from the message
- `message_id` (string, required): Inbox message ID
- `organization_id` (string, required): Active organization ID

### `pricing` (~17 tokens)

Current public prices and free allowances; no charge.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-commsharbor-commsharbor/commsharbor#diagnostics

## Score history

- 2026-09-20: 60
- 2026-09-19: 60
- 2026-09-18: 60
- 2026-09-17: 59
- 2026-09-16: 59
- 2026-09-15: 58
- 2026-09-14: 58
- 2026-09-13: 58
- 2026-09-12: 57
- 2026-09-11: 57
- 2026-09-10: 56
- 2026-09-09: 56
- 2026-09-08: 55
- 2026-09-07: 54
- 2026-09-06: 53
- 2026-09-05: 52

## Common questions

### What is the com.commsharbor/commsharbor MCP server?

com.commsharbor/commsharbor is an MCP server listed in the public MCP registry as com.commsharbor/commsharbor. Transactional e-mail and permission-based campaigns, multi-tenant, with a full audit trail. This page covers its hosted endpoint (https://commsharbor.com/mcp).

### Is the com.commsharbor/commsharbor MCP server safe to use?

com.commsharbor/commsharbor scores 60 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the com.commsharbor/commsharbor MCP server expose?

com.commsharbor/commsharbor exposes 150 tools: commsharbor_health, commsharbor_logout, commsharbor_me, commsharbor_organizations, commsharbor_organization_create, and 145 more. Their descriptions and schemas cost roughly 9,487 tokens of context every time the server is loaded.

### Does the com.commsharbor/commsharbor MCP server require authentication?

No. We connected to com.commsharbor/commsharbor without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the com.commsharbor/commsharbor MCP server still maintained?

com.commsharbor/commsharbor is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://commsharbor.com/mcp
- Website: https://commsharbor.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-commsharbor-commsharbor/commsharbor.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-commsharbor-commsharbor/commsharbor.json
- HTML version of this page: https://verifymcp.io/servers/com-commsharbor-commsharbor/commsharbor
