commsharbor
Transactional e-mail and permission-based campaigns, multi-tenant, with a full audit trail.
What it can do
What data it sees
Do you need an account
No: the server works without sign-in
Transactional e-mail and permission-based campaigns, multi-tenant, with a full audit trail.
How to connect
How to connect commsharbor to Claude
The server address to paste into Claude settings:
https://commsharbor.com/mcp
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect commsharbor to ChatGPT
The server address to paste into ChatGPT settings:
https://commsharbor.com/mcp
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect commsharbor to Cursor
The server address to paste into Cursor settings:
https://commsharbor.com/mcp
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (150)
Raw names from tools/list. Only developers need these.
| commsharbor_health | Read deployment health and build. |
| commsharbor_logout | Revoke the current session. |
| commsharbor_me | Read the current profile and memberships. |
| commsharbor_organizations | List memberships. |
| commsharbor_organization_create | Create the verified owner's single trial. |
| commsharbor_context | Resolve the active organization identity. |
| commsharbor_organization_get | Read an organization. |
| commsharbor_organization_update | Update an organization. |
| commsharbor_members | List organization members. |
| commsharbor_member_role | Change a non-owner member role. |
| commsharbor_invitations | List invitations. |
| commsharbor_invitation_create | Invite a member and reveal the acceptance token once. |
| commsharbor_invitation_accept | Accept an invitation. |
| commsharbor_api_keys | List API keys without secrets. |
| commsharbor_api_key_create | Create a scoped API key and reveal it once. |
| commsharbor_api_key_revoke | Revoke an API key. |
| commsharbor_audit | List tenant audit events. |
| commsharbor_platform_context | Confirm the caller's platform role. |
| commsharbor_domains | List sending domains with their last observed state. |
| commsharbor_domain_create | Register the organization's exact sending domain and queue SES provisioning. |
| commsharbor_domain_get | Read one stored sending-domain resource. |
| commsharbor_domain_verify | Refresh domain readiness from real SES and DNS observations. |
| commsharbor_domain_smoke | Send one controlled smoke to the server-side recipient secret; never accepts a recipient argument. |
| commsharbor_domain_deliveries | List a domain's deliveries without recipient addresses. |
| commsharbor_delivery_get | Read one delivery and its SES MessageId without recipient data. |
| commsharbor_delivery_events | List normalized SES feedback events for one delivery. |
| 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. |
| 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. |
| commsharbor_crm_contacts_get | Reads one contact from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. |
| 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. |
| commsharbor_crm_contacts_delete | Deletes one contact from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. |
| 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. |
| 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. |
| commsharbor_crm_deals_get | Reads one deal from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. |
| 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. |
| commsharbor_crm_deals_delete | Deletes one deal from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. |
| 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 absolute url. |
| 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. |
| commsharbor_crm_tasks_list | 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. |
| commsharbor_crm_tasks_create | Creates a task in the tenant CRM. Required: title. Needs crm:write on the organization. Returns the created resource with its absolute url. |
| commsharbor_crm_tasks_get | Reads one task from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. |
| commsharbor_crm_tasks_update | 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. |
| commsharbor_crm_tasks_delete | Deletes one task from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. |
| commsharbor_crm_stages_list | 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. |
| commsharbor_crm_stages_create | Creates a stage in the tenant CRM. Required: name. Needs crm:write on the organization. Returns the created resource with its absolute url. |
| commsharbor_crm_stages_get | Reads one stage from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. |
| commsharbor_crm_stages_update | 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. |
| commsharbor_crm_stages_delete | Deletes one stage from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. |
| commsharbor_platform_crm_leads_list | 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. |
| commsharbor_platform_crm_leads_create | 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. |
| commsharbor_platform_crm_leads_get | 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. |
| commsharbor_platform_crm_leads_update | 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. |
| commsharbor_platform_crm_leads_delete | 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. |
| commsharbor_platform_crm_tasks_list | 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. |
| commsharbor_platform_crm_tasks_create | 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. |
| commsharbor_platform_crm_tasks_get | 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. |
| commsharbor_platform_crm_tasks_update | 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. |
| commsharbor_platform_crm_tasks_delete | 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. |
| commsharbor_platform_crm_activities_list | 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. |
| commsharbor_platform_crm_activities_create | 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. |
| commsharbor_platform_crm_activities_get | 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. |
| commsharbor_platform_crm_activities_update | 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. |
| commsharbor_platform_crm_activities_delete | 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. |
| commsharbor_contact_marketing_get | Read consent and preference for a CRM contact. |
| commsharbor_contact_marketing_put | Record permission-based marketing consent. |
| commsharbor_preference_token_create | Create signed preference and unsubscribe URLs. |
| commsharbor_preference_get | Read preference through a signed capability. |
| commsharbor_preference_unsubscribe | Apply one-click unsubscribe through a signed capability. |
| commsharbor_marketing_smoke | Send one controlled permission-based marketing smoke. |
| commsharbor_contact_imports | List contact imports. |
| commsharbor_contact_import_preview | Upload and preview a consent-declared CSV. |
| commsharbor_contact_import_get | Read one contact import. |
| commsharbor_contact_import_confirm | Confirm an import with a mandatory idempotency key. |
| commsharbor_contact_import_errors | List deterministic row-level import errors. |
| commsharbor_contact_file_get | Download a tenant CSV before expiry. |
| commsharbor_contacts_export | Create a safe seven-day contact CSV export. |
| commsharbor_suppressions | List organization suppressions. |
| commsharbor_suppression_create | Suppress a recipient in one organization. |
| commsharbor_audiences | List audiences and saved segments. |
| commsharbor_audience_create | Create an audience or saved segment. |
| commsharbor_audience_get | Read one audience. |
| commsharbor_audience_update | Update an audience. |
| commsharbor_audience_delete | Delete an audience. |
| commsharbor_audience_members | List audience contacts. |
| commsharbor_audience_member_add | Add a CRM contact to a static audience. |
| commsharbor_audience_member_remove | Remove a CRM contact from a static audience. |
| commsharbor_templates | List email templates. |
| commsharbor_template_create | Create a canonical block template draft. |
| commsharbor_template_get | Read one template. |
| commsharbor_template_update | Update one template draft. |
| commsharbor_template_archive | Archive a template and preserve its versions. |
| commsharbor_template_publish | Publish an immutable template version. |
| commsharbor_template_versions | List immutable versions. |
| commsharbor_template_preview | Compile and render a safe template preview. |
| commsharbor_template_export | Export the latest published HTML, text and MJML. |
| commsharbor_template_import_html | Import a safe HTML subset as a draft. |
| commsharbor_message_send | Queue one idempotent transactional delivery. |
| commsharbor_campaigns | List campaigns. |
| commsharbor_campaign_create | Create a campaign draft. |
| commsharbor_campaign_get | Read a campaign. |
| commsharbor_campaign_update | Edit, pause, resume or cancel a campaign. |
| commsharbor_campaign_launch | Freeze and launch or schedule a campaign idempotently. |
| commsharbor_campaign_report | Reconcile campaign deliveries and feedback. |
| commsharbor_messaging_settings | Read timezone and marketing state. |
| commsharbor_messaging_settings_update | Update timezone or pause state. |
| commsharbor_deliverability | Read deliverability and backlog aggregates. |
| commsharbor_domain_report | Read domain delivery and feedback aggregates. |
| commsharbor_webhooks | List webhook endpoints without secrets. |
| commsharbor_webhook_create | Create a webhook and reveal its secret once. |
| commsharbor_webhook_get | Read a webhook without its secret. |
| commsharbor_webhook_disable | Disable a webhook. |
| commsharbor_webhook_deliveries | List webhook retries and outcomes. |
| commsharbor_dead_letters | Inspect nominal dead letters. |
| commsharbor_dead_letter_replay | Replay one campaign or webhook dead letter. |
| commsharbor_billing_catalog | Read plans, prices and x402 network. |
| commsharbor_billing | Read tenant entitlements and available sends. |
| commsharbor_billing_purchase | Request a pass or top-up and receive the x402 challenge when payment is required. |
| commsharbor_operations | List current operational alerts without PII. |
| commsharbor_operations_refresh | Refresh alerts, quota and capacity observations. |
| commsharbor_data_exports | List tenant JSON exports. |
| commsharbor_data_export_create | Create a seven-day tenant JSON export. |
| commsharbor_data_export_download | Download a tenant JSON export. |
| commsharbor_deletion_request | Read the latest tenant deletion request. |
| commsharbor_deletion_schedule | Schedule tenant erasure after seven days using the exact confirmation phrase. |
| commsharbor_deletion_cancel | Cancel a scheduled tenant erasure. |
| commsharbor_tracking_domain | 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. |
| commsharbor_tracking_domain_create | Register the host that will serve this organization's message links. One per organization; registering never activates it. |
| commsharbor_tracking_domain_verify | 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. |
| commsharbor_tracking_domain_remove | Remove the tracking domain; NEW messages go back to the platform origin. Links already sent keep pointing at the removed host. |
| commsharbor_inboxes | List the addresses this organization receives on. |
| commsharbor_inbox_create | 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. |
| commsharbor_inbox_get | Read one receiving address. |
| commsharbor_inbox_disable | Stop accepting mail at this address. History stays readable — this disables, it never erases. |
| commsharbor_inbox_messages | List what arrived at one address, newest first. Summaries only, no body. |
| commsharbor_inbox_message | 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`. |
| commsharbor_inbox_attachment | Get a five-minute signed URL for one attachment, by its index in the message. The URL expires; the stored file does not. |
| pricing | Current public prices and free allowances; no charge. |