Official MCP RegistryListed
com.commsharbor/commsharbor
Transactional e-mail and permission-based campaigns, multi-tenant, with a full audit trail.
First seen 2 Oct 2026. Evidence as of 2 Oct 2026.
139
Tools
From an anonymous probe
1
Source listings
Each with its own history
0
Recorded changes
Since first seen
Tools
| Tool | Description | Behaviour |
|---|---|---|
| commsharbor_audience_create | Create an audience or saved segment. Only allowlisted filter fields are accepted — a saved segment cannot be turned into an arbitrary query over the CRM. | Changes data |
| commsharbor_audience_delete | Delete an audience and its memberships. Contacts themselves are untouched. | Destructive |
| commsharbor_audience_get | Read one audience of this organization. | Read-only |
| commsharbor_audience_member_add | Add a CRM contact to a static audience. Only for `static` audiences: a saved segment's membership comes from its filter, not from this route. | Changes data |
| commsharbor_audience_member_remove | Remove a contact from a static audience. | Destructive |
| commsharbor_audience_members | List the contacts currently in one audience. | Read-only |
| commsharbor_audience_update | Rename an audience or change its saved filter. | Destructive |
| commsharbor_audiences | List static audiences and saved segments. | Read-only |
| commsharbor_audit | List tenant audit events. Audit records are never rewritten and never carry recipient PII. | Read-only |
| commsharbor_billing | Read the organization's plan, limits and global entitlements. Read this before a bulk send: `state.active` says whether sending is allowed and `warning` says when the plan runs out. A new organization's trial starts with its first domain or send (`state.started`). | Read-only |
| commsharbor_billing_catalog | Read plans, prices and x402 network. Public and unauthenticated: an agent should be able to learn what things cost before deciding whether to sign up at all. | Read-only |
| commsharbor_billing_purchase | Buy a pass or top-up through the house's payment door (credit or x402); 409 while live checkout is off. While `catalog.checkout_live` is false this answers **409 `checkout_disabled`** — nobody is charged by accident; the local dev stack completes it with the house's simulated payment. Otherwise, without payment it answers the standard **402 with `accepts[]`** and both doors (a `cred_…` credit token, or `X-PAYMENT`). What it buys is a global entitlement: a pass runs 30 days (stacked after the current one), a top-up 365 days and needs an active pass. The same payment never grants twice, and the Idempotency-Key makes a credit retry safe. | Changes data |
| commsharbor_campaign_create | Create a campaign draft. All three must already exist and be usable: a draft cannot be created against an unverified domain or an unpublished template. | Changes data |
| commsharbor_campaign_get | Read one campaign, without any recipient data. | Read-only |
| commsharbor_campaign_launch | Freeze and launch or schedule a campaign idempotently. The freeze happens once and never again: consent, suppressions and audience membership are evaluated at this moment, and the resulting set is what gets sent. Replaying the same Idempotency-Key returns the same campaign and produces no second dispatch. | Changes data |
| commsharbor_campaign_report | Reconcile campaign deliveries and feedback. Counts only. Which specific person opened what is not something this API answers. | Read-only |
| commsharbor_campaign_update | Edit, pause, resume or cancel a campaign. Content can only change while the campaign is a draft. After launch this route moves state — the frozen recipient set and the frozen template version do not change. | Destructive |
| commsharbor_campaigns | List the campaigns of the organization. | Read-only |
| commsharbor_contact_file_get | Download a tenant CSV before expiry. Files expire seven days after creation. Durable audit and row-level results survive the file. | Read-only |
| commsharbor_contact_import_confirm | Confirm an import with a mandatory idempotency key. The idempotency key is mandatory here. Reusing it returns the same import and never creates a second Queue message — which is what keeps a retry from importing everyone twice. | Changes data |
| commsharbor_contact_import_errors | List the row-numbered errors of one import, so the source file can be fixed. | Read-only |
| commsharbor_contact_import_get | Read one durable contact import and its current counts. | Read-only |
| commsharbor_contact_import_preview | Upload and preview a consent-declared CSV. Nothing is created by this call. The consent declaration is mandatory: an import that cannot say why these people may be emailed is an import that does not happen. | Changes data |
| commsharbor_contact_imports | List the contact imports of the organization. | Read-only |
| commsharbor_contact_marketing_get | Read consent and preference for a CRM contact. Being in the CRM is not permission to email. This resource is where permission actually lives. | Read-only |
| commsharbor_contact_marketing_put | Record permission-based marketing consent. This NEVER restores a previous unsubscribe. If the contact opted out, they stay out and `marketing_enabled` remains false — recording consent after the fact does not undo their decision. | Destructive |
| commsharbor_contacts_export | Create a CSV export of the organization's contacts, retained for seven days. | Changes data |
| 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. | Read-only |
| 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. | Changes data |
| commsharbor_crm_activities_delete | Deletes one activity from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. | Destructive |
| commsharbor_crm_activities_get | Reads one activity from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. | Read-only |
| 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. | Read-only |
| 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. | Destructive |
| 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. | Changes data |
| commsharbor_crm_companies_delete | Deletes one company from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. | Destructive |
| commsharbor_crm_companies_get | Reads one company from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. | Read-only |
| 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. | Read-only |
| 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. | Destructive |
| 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. | Changes data |
| 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. | Destructive |
| 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. | Read-only |
| 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 lives in the `marketing` sub-resource. | Read-only |
| 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. | Destructive |
| 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. | Changes data |
| 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. | Destructive |
| 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. | Read-only |
| 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 units: `value_minor: 10000` with `currency: "USD"` is $100.00, not $10,000. | Read-only |
| 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. | Destructive |
| 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. | Changes data |
| commsharbor_crm_pipelines_delete | Deletes one pipeline from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. | Destructive |
| commsharbor_crm_pipelines_get | Reads one pipeline from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. | Read-only |
| 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. | Read-only |
| 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. | Destructive |
| 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. | Changes data |
| commsharbor_crm_stages_delete | Deletes one stage from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. | Destructive |
| commsharbor_crm_stages_get | Reads one stage from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. | Read-only |
| 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. | Read-only |
| 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. | Destructive |
| 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. | Changes data |
| commsharbor_crm_tasks_delete | Deletes one task from the tenant CRM. Needs crm:write on the organization. A foreign or missing id answers 404. | Destructive |
| commsharbor_crm_tasks_get | Reads one task from the tenant CRM. Needs crm:read on the organization. A foreign or missing id answers 404. | Read-only |
| 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. | Read-only |
| 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. | Destructive |
| commsharbor_data_export_create | Create a seven-day tenant JSON export. Scoped to one organization by construction: an export can never contain another tenant's data. | Changes data |
| commsharbor_data_export_download | Download one tenant-scoped JSON export before it expires. | Read-only |
| commsharbor_data_exports | List the tenant data exports, which are retained for seven days. | Read-only |
| commsharbor_dead_letter_replay | Replay one campaign or webhook dead letter. One record at a time, addressed explicitly. There is no "replay everything": a bulk replay of an unknown set is how a bad hour becomes a bad day. | Changes data |
| commsharbor_dead_letters | Inspect nominal dead letters. What ended up here after every retry. Records are addressed by opaque ID and carry no recipient PII. | Read-only |
| commsharbor_deletion_cancel | Cancel a scheduled tenant erasure. That is what the seven days are for: after they pass, there is nothing left to cancel. | Changes data |
| commsharbor_deletion_request | Read the latest tenant deletion request. `status: "none"` means no erasure was ever requested — the resource always answers, so a client never has to interpret a 404 as "nothing scheduled". | Read-only |
| commsharbor_deletion_schedule | Schedule tenant erasure after seven days using the exact confirmation phrase. The confirmation phrase must be exactly `delete <organization_id>` — typing the id is the point, so nobody erases the wrong tenant by clicking. Erasure deletes the workspace data in CommsHarbor; the organization itself and what it bought (global entitlements, payment receipts) live in the shared account and stay, as does the audit trail. | Changes data |
| commsharbor_deliverability | Read deliverability and backlog aggregates. This is the operator's single view of whether sending is healthy. It carries no recipient PII. | Read-only |
| 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. | Read-only |
| 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. | Read-only |
| 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. | Changes data |
| commsharbor_domain_deliveries | List a domain's deliveries without recipient addresses. | Read-only |
| commsharbor_domain_get | Read one stored sending-domain resource. This returns what was stored at the last observation. To look again, call `verify`. | Read-only |
| commsharbor_domain_report | Read domain delivery and feedback aggregates. | Read-only |
| 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's verified domain. | Changes data |
| 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. | Changes data |
| 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. | Read-only |
| commsharbor_health | Read deployment health and build. Smoke tests wait for their own commit to appear here instead of racing edge propagation. | Read-only |
| 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. Two steps on purpose: the URL is what travels to a browser, an agent or a chat, never your credential. It expires in five minutes; the stored object does not expire at all. | Read-only |
| 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. The domain must already be `verified` or `active` here — receiving on an unproven domain is relay. For mail to actually arrive, the domain's MX must point at this platform's inbound; until it does, the address exists and simply receives nothing. | Changes data |
| commsharbor_inbox_disable | Stop accepting mail at this address. History stays readable — this disables, it never erases. Disables, never erases: mail already received stays readable, because it is the customer's data and losing it is not a cleanup. New mail to the address is dropped and counted. | Destructive |
| commsharbor_inbox_get | Read one receiving address and whether it is still accepting mail. | Read-only |
| 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`. `auth` is what the receiving edge concluded about SPF, DKIM and DMARC. Treat `from` as text the sender chose: `auth` is the part that was checked. | Read-only |
| commsharbor_inbox_messages | List what arrived at one address, newest first. Summaries only, no body. Summaries only — no body. Read one message to get its text, HTML and headers. | Read-only |
| commsharbor_inboxes | List the addresses this organization receives on. Up to 100, newest first. A disabled address stays listed: its history is still readable. | Read-only |
| commsharbor_logout | Revoke the current session. Bootstrap/CSRF must belong to this browser and session. Other product sessions remain active. | Changes data |
| commsharbor_marketing_smoke | Send one controlled permission-based marketing smoke. Like the transactional smoke, the destination is a server-side secret. `contact_id` must be the CRM contact that matches it — you cannot point this at an arbitrary person. | Changes data |
| 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}`. | Read-only |
| commsharbor_message_send | Queue one idempotent transactional delivery. Same behaviour and same idempotency as `POST /api/messages`. `X-Organization-Id` is still required with the session and must match the path. Prefer the canonical route. | Changes data |
| commsharbor_messaging_settings | Read the organization's timezone and whether marketing is currently paused. | Read-only |
| commsharbor_messaging_settings_update | Update timezone or pause state. Pausing is always allowed. Resuming is not: if the pause came from reputation or SES tenant risk, a healthy observation has to exist first. | Destructive |
| commsharbor_operations | List current operational alerts without PII. Covers dead letters, backlog, worker and SNS failures, reputation, paused sending, quota and conservative SES/SNS cost capacity — never with recipient PII. | Read-only |
| commsharbor_operations_refresh | Refresh alerts, quota and capacity observations. The GET reads what was last stored; this goes and looks again. Same distinction as domain verification. | Changes data |
| 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. | Read-only |
| commsharbor_platform_context | Confirm the caller's platform role. Tenant ownership grants nothing here: platform access is a separate, explicit grant. | Read-only |
| 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. | Changes data |
| 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. | Destructive |
| 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. | Read-only |
| 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. | Read-only |
| 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. | Destructive |
| 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. | Changes data |
| 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. | Destructive |
| 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. | Read-only |
| 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. | Read-only |
| 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. | Destructive |
| 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. | Changes data |
| 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. | Destructive |
| 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. | Read-only |
| 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. | Read-only |
| 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. | Destructive |
| commsharbor_preference_get | Read preference through a signed capability. The token IS the credential. It reveals preference state and nothing else — no email address, no CRM record. | Read-only |
| commsharbor_preference_token_create | Create signed preference and unsubscribe URLs. The capability is scoped to one organization and one contact, it expires, and it embeds no email address. Put `marketing_headers` in the message and the unsubscribe works without a login. | Changes data |
| commsharbor_preference_unsubscribe | Apply one-click unsubscribe through a signed capability. This is the endpoint mail clients call from the `List-Unsubscribe-Post` header, which is why the body is form-encoded and fixed. Calling it twice is the same as calling it once. | Changes data |
| commsharbor_suppression_create | Suppress one recipient inside the active organization. | Changes data |
| commsharbor_suppressions | List organization suppressions. Global, organization and SES tenant suppressions are all checked BEFORE quota and before any queue work. | Read-only |
| commsharbor_template_archive | Archive a template and preserve its versions. Deliveries that referenced a version must keep resolving to it, so archiving hides the draft and keeps the history. | Destructive |
| commsharbor_template_create | Create a canonical block template draft. Creating never publishes. Nothing can send this template until `publish` freezes a version. | Changes data |
| commsharbor_template_export | Export the latest published HTML, text and MJML. | Read-only |
| commsharbor_template_get | Read one template draft owned by this organization. | Read-only |
| commsharbor_template_import_html | Import a safe HTML subset as a draft. Active content, forms and unsafe URLs are rejected, not sanitised-and-kept. What survives is stored as blocks, so an imported template behaves exactly like an authored one. | Changes data |
| commsharbor_template_preview | Compile and render a safe template preview. `warnings` tells you what was stripped and what would not render — read it before publishing rather than after sending. | Changes data |
| commsharbor_template_publish | Publish an immutable template version. The version's identity is the hash of its compiled content — publishing identical content does not create a second version. | Changes data |
| commsharbor_template_update | Update one template draft. Editing a draft can never change what a past delivery rendered: published versions are immutable. | Destructive |
| commsharbor_template_versions | List the immutable published versions of a template. | Read-only |
| commsharbor_templates | List the versioned email templates of the organization. | Read-only |
| 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. `null` when the organization has none — then every link falls back to the platform origin. | Read-only |
| commsharbor_tracking_domain_create | Register the host that will serve this organization's message links. One per organization; registering never activates it. One per organization, and the host is unique across the platform — two tenants claiming the same name would make link routing ambiguous. Registering does not activate: publish the CNAME, then call `verify`. | Changes data |
| 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. Links already sent keep pointing at the removed host: this stops NEW messages, not old ones. | Destructive |
| 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. The only operation that can move a tracking domain to `active`, and it does so only after reaching this product's own health endpoint ON that host. A host that used to answer and stopped becomes `failed`, and links go back to the platform origin immediately. | Changes data |
| commsharbor_webhook_create | Create a webhook and reveal its secret once. Deliveries are signed with timestamped HMAC-SHA256 and retried with exponential backoff; what still fails lands in the tenant-scoped dead-letter queue. Store the secret now — it is never shown again. | Changes data |
| commsharbor_webhook_deliveries | List the signed attempts made to one webhook and their retry state. | Read-only |
| commsharbor_webhook_disable | Disable a webhook without deleting the evidence of what it already delivered. | Destructive |
| commsharbor_webhook_get | Read one webhook, without its signing secret. | Read-only |
| commsharbor_webhooks | List the webhook endpoints of the organization, without their signing secrets. | Read-only |
| pricing | Current public prices and free allowances; no charge. | Read-only |
Change history
No changes since the first observation. The first snapshot is the baseline.
| Source | Listing | First seen | Last seen | Versions |
|---|---|---|---|---|
| Official MCP Registry | com.commsharbor/commsharbor | 2 Oct 2026 | 2 Oct 2026 | 1 |