# io.github.bitterdev/pixelletter-mcp (npm · pixelletter-mcp)

Send physical letters and faxes through the PixelLetter interface, test mode included.

- Trust score: 61/100 (medium)
- Change this week: +37
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `pixelletter-mcp`: 61/100 (this document), [markdown](https://verifymcp.io/servers/bitterdev-pixelletter-mcp/pixelletter-mcp.md), [page](https://verifymcp.io/servers/bitterdev-pixelletter-mcp/pixelletter-mcp)

## Channel facts

- Registry: `npm`
- Package: `pixelletter-mcp`
- Version: `1.0.3`
- 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-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
- **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 (MIT).
  - Actively maintained (last published 6 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 55/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1700 tokens (~283/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - 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 supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: 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 bitterdev-pixelletter-mcp -- npx -y pixelletter-mcp
```

### Codex

```bash
codex mcp add bitterdev-pixelletter-mcp -- npx -y pixelletter-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "bitterdev-pixelletter-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "pixelletter-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add bitterdev-pixelletter-mcp --command npx --arg -y --arg pixelletter-mcp
```

### Hermes

```yaml
mcp_servers:
  bitterdev-pixelletter-mcp:
    command: "npx"
    args: ["-y", "pixelletter-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "bitterdev-pixelletter-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "pixelletter-mcp"
      ]
    }
  }
}
```

## 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-02 (score 61, +30)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Security disclosure: fail → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] License: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: MIT

### 2026-08-01 (score 31, +26)

- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Tool coverage: unverified → 100

### 2026-07-31 (score 5, −1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 6, −50)

- [security regression] Known CVEs: partial → unverified
- [security regression] Provenance: fail → unverified
- [security regression] Install scripts: pass → unverified
- [functional regression] License: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Dependency health: partial → unverified
- [functional regression] Maintenance: pass → unverified
- [functional] First check of Schema quality: unverified
- [functional] Licence: MIT

### 2026-07-28 (score 56, +32)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional] Licence: MIT

### 2026-07-27 (score 24)

First indexed and scored.

## MCP tools (6)

### `send_letter` (~772 tokens)

Send letter

Sends a letter through PixelLetter, either as ready made documents (absolute file paths, PDF preferred) or as plain text plus a recipient address that PixelLetter typesets. Optionally faxes the same document as well. Returns the result code and the transaction id.

Input parameters:

- `additionalServiceCodes` (array): Raw addoption codes for services PixelLetter documents elsewhere or agrees per account. Only use numbers PixelLetter gave you.
- `address` (array): Recipient address, one line per array entry, country included. PixelLetter typesets it. Required when no file is sent.
- `alsoSendFax` (boolean): Send the same document as a fax too. Needs faxNumber. Additional services stay letter only.
- `cashOnDelivery` (object): Bank details for cash on delivery. Setting this block adds additional service 31.
- `colorPrint` (boolean): Colour print instead of black and white (addoption 33). Letters only, and not available through every dispatch centre, see error 038.
- `control` (string): Raw value for the control field of the interface. The only value in public use is NODUPLEX, which the duplex parameter sets for you, so only reach for this when PixelLetter gave you another token.
- `destination` (string): Destination country as a two letter ISO code, for example DE, AT, CH. Mandatory for letters, a wrong code leads to wrong postage.
- `duplex` (boolean): Print on both sides (true, the default of PixelLetter) or on one side only (false, sent as control NODUPLEX). Letters only.
- `faxNumber` (string): Fax number in international format, for example "+49 89 72448483". Only needed with alsoSendFax.
- `files` (array): Absolute paths of the documents to send, for example the PDF written by pdf-letter-mcp. Several files are converted and merged into one letter, in this order. Allowed: .pdf, .doc, .xls, .ppt, .rtf, .…
- `goGreen` (boolean): GoGreen, CO2 neutral postage (addoption 44). Letters only.
- `inlineFiles` (array): Documents passed as base64 instead of a path.
- `location` (string): Dispatch centre: 1 = Munich (DE), 2 = Hausleiten near Vienna (AT), 3 = Hamburg (DE). Default of the API is 1.
- `personalDelivery` (boolean): Eigenhändig, personal delivery (code 29). Only together with registered.
- `registered` (boolean): Einschreiben, registered mail (code 27). Germany only.
- `registeredDropIn` (boolean): Einschreiben Einwurf, drop-in registered mail (code 30). Cannot be combined with the other registered variants.
- `returnAddress` (string): Raw value for the returnaddress field of the interface. Undocumented in the public handbooks.
- `returnReceipt` (boolean): Rückschein, return receipt (code 28). Only together with registered.
- `subject` (string): Subject of the letter.
- `testMode` (boolean, required): Test mode. true runs the order exactly like a real one but PixelLetter never prints, never sends and never charges. false really sends the letter. Always required, so nothing goes out by accident.
- `text` (string): Letter text as plain text, no HTML. Long texts run onto more pages automatically, your sender address is added by PixelLetter. "%Unterschrift%" on its own line inserts the signature stored in your Pi…
- `transaction` (string): Your own transaction id or short note. PixelLetter returns it with the response.

### `send_fax` (~408 tokens)

Send fax

Sends documents or plain text as a fax through PixelLetter, without posting a letter. Additional services such as registered mail do not apply to faxes.

Input parameters:

- `address` (array): Recipient address, one line per array entry, country included. PixelLetter typesets it. Required when no file is sent.
- `control` (string): Raw value for the control field of the interface. The only value in public use is NODUPLEX, which the duplex parameter sets for you, so only reach for this when PixelLetter gave you another token.
- `faxNumber` (string, required): Fax number in international format, for example "+49 89 72448483".
- `files` (array): Absolute paths of the documents to send, for example the PDF written by pdf-letter-mcp. Several files are converted and merged into one letter, in this order. Allowed: .pdf, .doc, .xls, .ppt, .rtf, .…
- `inlineFiles` (array): Documents passed as base64 instead of a path.
- `location` (string): Dispatch centre: 1 = Munich (DE), 2 = Hausleiten near Vienna (AT), 3 = Hamburg (DE). Default of the API is 1.
- `subject` (string): Subject of the letter.
- `testMode` (boolean, required): Test mode. true runs the order exactly like a real one but PixelLetter never prints, never sends and never charges. false really sends the letter. Always required, so nothing goes out by accident.
- `text` (string): Letter text as plain text, no HTML. Long texts run onto more pages automatically, your sender address is added by PixelLetter. "%Unterschrift%" on its own line inserts the signature stored in your Pi…
- `transaction` (string): Your own transaction id or short note. PixelLetter returns it with the response.

### `get_account_info` (~47 tokens)

Get account info and balance

Reads the stored customer data and the current credit of the PixelLetter account. Use it before sending to make sure the balance covers the order, error 021 means the credit is too low.

### `cancel_order` (~70 tokens)

Cancel order

Cancels a submitted order by its PixelLetter order id, which is on the order confirmation e-mail. Only works while the order has not been printed yet, otherwise PixelLetter answers with error 055.

Input parameters:

- `orderId` (string, required): PixelLetter order id from the confirmation e-mail or the customer area.

### `sign_invoice` (~228 tokens)

Sign invoice electronically

Sends documents to the PixelLetter invoice signing service (action 4) and optionally mails the signed PDF to the invoice recipient. The account needs electronic signatures enabled once in the customer area, otherwise PixelLetter answers with error 046.

Input parameters:

- `files` (array): Absolute paths of the documents to send, for example the PDF written by pdf-letter-mcp. Several files are converted and merged into one letter, in this order. Allowed: .pdf, .doc, .xls, .ppt, .rtf, .…
- `inlineFiles` (array): Documents passed as base64 instead of a path.
- `notification` (object): Leave this out and nothing is mailed to the invoice recipient, you only get the signed file yourself.
- `testMode` (boolean, required): Test mode. true signs with an advanced signature only, which is not legally sufficient, and costs nothing. false creates the qualified signature.
- `transaction` (string): Your own transaction id or short note. PixelLetter returns it with the response.

### `get_interface_reference` (~64 tokens)

Get interface reference

Returns what the PixelLetter interface documents: action values, dispatch centres, additional service codes, allowed upload types, limits and the published error codes. Offline lookup, no API call.

Input parameters:

- `errorCode` (string): Look up a single error code, for example "021".

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/bitterdev-pixelletter-mcp/pixelletter-mcp#diagnostics

## Score history

- 2026-08-03: 61
- 2026-08-02: 61
- 2026-08-01: 31
- 2026-07-31: 5
- 2026-07-30: 6
- 2026-07-28: 56
- 2026-07-27: 24

## Links

- npm package: https://www.npmjs.com/package/pixelletter-mcp
- Socket report: https://socket.dev/npm/package/pixelletter-mcp
- Repository: https://github.com/bitterdev/pixelletter-mcp
- Changelog RSS feed: https://verifymcp.io/servers/bitterdev-pixelletter-mcp/pixelletter-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/bitterdev-pixelletter-mcp/pixelletter-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/bitterdev-pixelletter-mcp/pixelletter-mcp
