# Mailprotector (oci · ghcr.io/wyre-technology/mailprotector-mcp:v1.0.1)

MCP server for Mailprotector — customers, domains, users, quarantine, allow/block rules for MSPs.

- Trust score: 39/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-22

## Components

- oci · `ghcr.io/wyre-technology/mailprotector-mcp:v1.0.1`: 39/100 (this document), [markdown](https://verifymcp.io/servers/wyre-technology-mailprotector-mcp/ghcr-io-wyre-technology-mailprotector-mcp-v1-0-1.md), [page](https://verifymcp.io/servers/wyre-technology-mailprotector-mcp/ghcr-io-wyre-technology-mailprotector-mcp-v1-0-1)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/wyre-technology/mailprotector-mcp:v1.0.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, 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-08-22.

- **Supply Chain Security**: 0/100
  - Malware scan not yet available for this package.
  - Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 1 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 76/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 1921 tokens (~87/item across 22 items; 22 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **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.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

**Unverified: 2 categories.** Categories scored 0 because we could not verify them: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add wyre-technology-mailprotector-mcp -- docker run --rm -i ghcr.io/wyre-technology/mailprotector-mcp:v1.0.1
```

### Codex

```bash
codex mcp add wyre-technology-mailprotector-mcp -- docker run --rm -i ghcr.io/wyre-technology/mailprotector-mcp:v1.0.1
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "wyre-technology-mailprotector-mcp": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/wyre-technology/mailprotector-mcp:v1.0.1"
      ],
      "enabled": true
    }
  }
}
```

### Hermes

```yaml
mcp_servers:
  wyre-technology-mailprotector-mcp:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/wyre-technology/mailprotector-mcp:v1.0.1"]
```

### Other

```json
{
  "mcpServers": {
    "wyre-technology-mailprotector-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/wyre-technology/mailprotector-mcp:v1.0.1"
      ]
    }
  }
}
```

## 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-08-20 (score 39)

First indexed and scored.

## MCP tools (22)

### `mailprotector_status` (~34 tokens)

Verify Mailprotector credentials and report connection info for the bound reseller (GET /resellers/{resellerId}).

### `mailprotector_list_categories` (~56 tokens)

List the Mailprotector tool categories reachable through mailprotector_execute_tool (resellers, customers, domains, user_groups, users, managers, configuration, statements, email_routing, user_syncs, notifications, results).

### `mailprotector_list_category_tools` (~57 tokens)

List the tools in one Mailprotector category: names, descriptions, input schemas, and destructive-action annotations. Use before mailprotector_execute_tool.

Input parameters:

- `category` (string, required): Category name from mailprotector_list_categories.

### `mailprotector_execute_tool` (~107 tokens)

Execute a routed Mailprotector operation by category + tool name with the arguments described by mailprotector_list_category_tools. Some routed tools are destructive (marked ⚠ in their descriptions) and are individually confirmation-gated.

Input parameters:

- `args` (object): Arguments for the routed tool (per its input schema).
- `category` (string, required): Category name from mailprotector_list_categories.
- `tool` (string, required): Tool name within the category, from mailprotector_list_category_tools.

### `mailprotector_customers_list` (~103 tokens)

List customer accounts under a reseller (defaults to the bound reseller).

Input parameters:

- `filters` (object): Arbitrary field filters passed straight to the query string (e.g. {"first_name": "Bob"} or {"name": "example.com"}).
- `page` (number): 1-based page number. Message lists cap at 50 results per page.
- `reseller_id` (number): Reseller id. Defaults to the reseller bound by the credentials.

### `mailprotector_customers_get` (~29 tokens)

Get a customer account by id.

Input parameters:

- `customer_id` (number, required): Customer id.

### `mailprotector_customers_create` (~70 tokens)

Create a customer account under a reseller (defaults to the bound reseller).

Input parameters:

- `data` (object): Additional fields to include in the request body.
- `name` (string, required): Customer name.
- `reseller_id` (number): Reseller id. Defaults to the reseller bound by the credentials.

### `mailprotector_domains_list` (~128 tokens)

List domains under a reseller or customer.

Input parameters:

- `filters` (object): Arbitrary field filters passed straight to the query string (e.g. {"first_name": "Bob"} or {"name": "example.com"}).
- `page` (number): 1-based page number. Message lists cap at 50 results per page.
- `scope` (string, required): Entity scope for this operation (reseller | customer).
- `scope_id` (number): Id of the entity at the chosen scope. Optional when scope is "reseller" — defaults to the reseller bound by the credentials.

### `mailprotector_domains_get` (~27 tokens)

Get a domain by id.

Input parameters:

- `domain_id` (number, required): Domain id.

### `mailprotector_domains_create` (~61 tokens)

Create a domain under a customer.

Input parameters:

- `customer_id` (number, required): Owning customer id.
- `data` (object): Additional fields to include in the request body.
- `name` (string, required): Domain name (e.g. "example.com").

### `mailprotector_users_list` (~140 tokens)

List mail users under a reseller, customer, domain, or user group.

Input parameters:

- `filters` (object): Arbitrary field filters passed straight to the query string (e.g. {"first_name": "Bob"} or {"name": "example.com"}).
- `page` (number): 1-based page number. Message lists cap at 50 results per page.
- `scope` (string, required): Entity scope for this operation (reseller | customer | domain | user_group).
- `scope_id` (number): Id of the entity at the chosen scope. Optional when scope is "reseller" — defaults to the reseller bound by the credentials.

### `mailprotector_users_get` (~28 tokens)

Get a mail user by id.

Input parameters:

- `user_id` (number, required): User id.

### `mailprotector_users_find_by_address` (~37 tokens)

Look up a mail user by any of their email addresses.

Input parameters:

- `address` (string, required): Email address to look up.

### `mailprotector_user_groups_list` (~91 tokens)

List user groups (service containers) within a domain.

Input parameters:

- `domain_id` (number, required): Domain id.
- `filters` (object): Arbitrary field filters passed straight to the query string (e.g. {"first_name": "Bob"} or {"name": "example.com"}).
- `page` (number): 1-based page number. Message lists cap at 50 results per page.

### `mailprotector_messages_list` (~153 tokens)

List quarantined messages at any scope (max 50 per page). Defaults to the bound reseller when scope is "reseller".

Input parameters:

- `filters` (object): Arbitrary field filters passed straight to the query string (e.g. {"first_name": "Bob"} or {"name": "example.com"}).
- `page` (number): 1-based page number. Message lists cap at 50 results per page.
- `scope` (string, required): Entity scope for this operation (reseller | customer | domain | user_group | user).
- `scope_id` (number): Id of the entity at the chosen scope. Optional when scope is "reseller" — defaults to the reseller bound by the credentials.

### `mailprotector_messages_release` (~82 tokens)

⚠ HIGH-IMPACT. Releases (delivers) a single quarantined message to its recipients. Confirm with the user before invoking.

Input parameters:

- `include_original_recipients` (boolean): Also deliver to the original recipients.
- `message_id` (number, required): Quarantined message id.
- `recipients` (string): Comma-separated additional recipient addresses.

### `mailprotector_messages_release_many` (~146 tokens)

⚠ HIGH-IMPACT. Releases (delivers) several quarantined messages at a scope in one call. Confirm with the user before invoking.

Input parameters:

- `ids` (array, required): Ids of the quarantined messages to release.
- `include_original_recipients` (boolean): Also deliver to the original recipients.
- `recipients` (string): Comma-separated additional recipient addresses.
- `scope` (string, required): Entity scope for this operation (reseller | customer | domain | user_group | user).
- `scope_id` (number): Id of the entity at the chosen scope. Optional when scope is "reseller" — defaults to the reseller bound by the credentials.

### `mailprotector_allow_block_rules_list` (~137 tokens)

List allow/block rules at any scope.

Input parameters:

- `filters` (object): Arbitrary field filters passed straight to the query string (e.g. {"first_name": "Bob"} or {"name": "example.com"}).
- `page` (number): 1-based page number. Message lists cap at 50 results per page.
- `scope` (string, required): Entity scope for this operation (reseller | customer | domain | user_group | user).
- `scope_id` (number): Id of the entity at the chosen scope. Optional when scope is "reseller" — defaults to the reseller bound by the credentials.

### `mailprotector_allow_block_rules_create` (~139 tokens)

⚠ HIGH-IMPACT. Creates an allow or block rule at a scope — changes mail filtering for every mailbox under that scope. Confirm with the user before invoking.

Input parameters:

- `rule_type` (string, required): Rule type.
- `scope` (string, required): Entity scope for this operation (reseller | customer | domain | user_group | user).
- `scope_id` (number): Id of the entity at the chosen scope. Optional when scope is "reseller" — defaults to the reseller bound by the credentials.
- `value` (string, required): Address, domain, or IP the rule matches (e.g. "spam.example.com").

### `mailprotector_allow_block_rules_delete` (~59 tokens)

⚠ DESTRUCTIVE — IRREVERSIBLE. Permanently deletes an allow/block rule by id. This action cannot be undone. Confirm with the user before invoking.

Input parameters:

- `rule_id` (number, required): Allow/block rule id.

### `mailprotector_logs_list` (~154 tokens)

List message-log entries at any scope. Result codes in results_data can be explained via the results category (mailprotector_execute_tool).

Input parameters:

- `filters` (object): Arbitrary field filters passed straight to the query string (e.g. {"first_name": "Bob"} or {"name": "example.com"}).
- `page` (number): 1-based page number. Message lists cap at 50 results per page.
- `scope` (string, required): Entity scope for this operation (reseller | customer | domain | user_group | user).
- `scope_id` (number): Id of the entity at the chosen scope. Optional when scope is "reseller" — defaults to the reseller bound by the credentials.

### `mailprotector_configuration_get` (~83 tokens)

Get the configuration document for a reseller, customer, domain, or user group.

Input parameters:

- `scope` (string, required): Entity scope for this operation (reseller | customer | domain | user_group).
- `scope_id` (number): Id of the entity at the chosen scope. Optional when scope is "reseller" — defaults to the reseller bound by the credentials.

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/wyre-technology-mailprotector-mcp/ghcr-io-wyre-technology-mailprotector-mcp-v1-0-1#diagnostics

## Score history

- 2026-08-22: 39
- 2026-08-21: 39
- 2026-08-20: 39

## Links

- Repository: https://github.com/wyre-technology/mailprotector-mcp
- Changelog RSS feed: https://verifymcp.io/servers/wyre-technology-mailprotector-mcp/ghcr-io-wyre-technology-mailprotector-mcp-v1-0-1.xml
- Changelog JSON feed: https://verifymcp.io/servers/wyre-technology-mailprotector-mcp/ghcr-io-wyre-technology-mailprotector-mcp-v1-0-1.json
- HTML version of this page: https://verifymcp.io/servers/wyre-technology-mailprotector-mcp/ghcr-io-wyre-technology-mailprotector-mcp-v1-0-1
