# Sarbacane MCP by usefulapi (remote · sarbacane.usefulapi.io)

Read Sarbacane campaigns, stats, lists and blacklists; manage contacts and draft email campaigns.

- Trust score: 18/100 (low)
- Change this week: −46
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `sarbacane.usefulapi.io`: 18/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-sarbacane/sarbacane.md), [page](https://verifymcp.io/servers/io-usefulapi-sarbacane/sarbacane)

## Channel facts

- Endpoint: `https://sarbacane.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.13.3`

## 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-11-05.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the Sarbacane MCP by usefulapi server?

Sarbacane MCP by usefulapi is a hosted endpoint at https://sarbacane.usefulapi.io/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 io-usefulapi-sarbacane 'https://sarbacane.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-sarbacane": {
      "url": "https://sarbacane.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-sarbacane": {
      "type": "http",
      "url": "https://sarbacane.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-sarbacane]
url = "https://sarbacane.usefulapi.io/mcp"
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add io-usefulapi-sarbacane --url 'https://sarbacane.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-sarbacane:
    url: "https://sarbacane.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-sarbacane": {
      "Transport": "http",
      "Url": "https://sarbacane.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-sarbacane -t streamable-http -u 'https://sarbacane.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-sarbacane": {
      "type": "http",
      "url": "https://sarbacane.usefulapi.io/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-11-02 (score 18, −50)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Stability: 0.23 → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Authorization: pass → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-10-31 (score 68, +3)

- [security improvement] Authorization: partial → pass
- [functional improvement] MCP protocol: fail → pass
- [functional] New prompt “add_or_update_contacts_or_record_an_unsubscribe”
- [functional] New prompt “check_how_a_campaign_performed”
- [functional] New prompt “check_your_remaining_credits”
- [functional] New prompt “look_at_contact_lists_and_their_fields”
- [functional] New prompt “prepare_a_draft_email_campaign”
- [functional] New prompt “review_bounces_unsubscribers_and_complaints”
- [functional] MCP protocol version: 2025-06-18 → 2025-11-25
- [functional] Server version: 1.9.0 → 1.11.0
- [functional] Server version: 1.8.0 → 1.9.0
- [functional] Server version: 1.7.2 → 1.8.0

### 2026-10-30 (score 65, +1)

- [functional] Server version: 1.7.1 → 1.7.2
- [functional] Server version: 1.7.0 → 1.7.1

### 2026-10-29 (score 64, 0)

- [functional] Server version: 1.6.0 → 1.7.0
- [functional] Server version: 1.5.0 → 1.6.0

### 2026-10-28 (score 64, +1)

- [functional] Server version: 1.3.0 → 1.5.0

### 2026-10-27 (score 63, 0)

- [functional] Server version: 1.2.0 → 1.3.0

### 2026-10-26 (score 63, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-25 (score 62)

First indexed and scored.

## MCP tools (19)

### `sarbacane_get_credits` (~46 tokens)

Get remaining credits

The account's remaining credits per type (email campaigns, SMS, eye tracking, Sendkit emails) with expiry date and subscription type. GET /v1/credits.

### `sarbacane_list_users` (~94 tokens)

List account users

Users and pending invitations of the Sarbacane account (name, email, role, team). GET /v1/users.

Input parameters:

- `limit` (integer): Maximum items returned, 1-1000 (default 50).
- `offset` (integer): Starting position, from 0 (default 0). Pass the previous reply's next_offset.
- `search` (string): Filter users by name or email.

### `sarbacane_list_lists` (~84 tokens)

List contact lists

All contact lists of the account, with their ids. Use the ids for contacts, fields and campaigns. GET /v1/lists.

Input parameters:

- `limit` (integer): Maximum items returned, 1-1000 (default 50).
- `offset` (integer): Starting position, from 0 (default 0). Pass the previous reply's next_offset.

### `sarbacane_list_list_fields` (~76 tokens)

List a list's custom fields

The custom fields (columns) of a contact list: id, caption and type (STRING, BOOL, INT, DATE). Field ids are the keys used when writing contacts. GET /v1/lists/{listId}/fields.

Input parameters:

- `list_id` (string, required): Contact list id (sarbacane_list_lists).

### `sarbacane_list_contacts` (~186 tokens)

List contacts in a list

Contacts of one list (personal data: email, phone, custom fields). Filter by email, phone, a text search across fields, or the modification date. GET /v1/lists/{listId}/contacts.

Input parameters:

- `email` (string): Only the contact with this email.
- `limit` (integer): Maximum items returned, 1-1000 (default 50).
- `list_id` (string, required): Contact list id.
- `modified_after` (string): Only contacts modified at or after this time.
- `modified_before` (string): Only contacts modified at or before this time.
- `offset` (integer): Starting position, from 0 (default 0). Pass the previous reply's next_offset.
- `phone` (string): Only the contact with this phone number.
- `search` (string): Text to look for in the contact's fields.

### `sarbacane_create_contact` (~121 tokens)

Add a contact to a list

WRITE: add a contact to a contact list. Give an email, a phone number or both, and optional custom field values. Adds a new record; use sarbacane_upsert_contact to update an existing contact. POST /v1/lists/{listId}/contacts.

Input parameters:

- `email` (string)
- `fields` (object): Custom field values as { <custom field id>: value }. Get the ids from sarbacane_list_list_fields.
- `list_id` (string, required): Contact list id.
- `phone` (string)

### `sarbacane_upsert_contact` (~108 tokens)

Add or update a contact

WRITE: add a contact to a list, or update it when the same email/phone pair already exists (custom field values are overwritten). POST /v1/lists/{listId}/contacts/upsert.

Input parameters:

- `email` (string)
- `fields` (object): Custom field values as { <custom field id>: value }. Get the ids from sarbacane_list_list_fields.
- `list_id` (string, required): Contact list id.
- `phone` (string)

### `sarbacane_list_blacklists` (~81 tokens)

List blacklists

All blacklists (suppression lists) of the account, with their ids. GET /v1/blacklists.

Input parameters:

- `limit` (integer): Maximum items returned, 1-1000 (default 50).
- `offset` (integer): Starting position, from 0 (default 0). Pass the previous reply's next_offset.

### `sarbacane_list_blacklist_entries` (~202 tokens)

List blacklist entries

Entries of a blacklist by kind: bounces (invalid addresses), unsubscribers or complaints (personal data: email, phone). Filter by email, phone or modification date. GET /v1/blacklists/{blacklistId}/{bounces|unsubscribers|complaints}.

Input parameters:

- `blacklist_id` (string, required): Blacklist id (sarbacane_list_blacklists).
- `email` (string): Only this email.
- `kind` (string, required): Which entries: bounces, unsubscribers or complaints.
- `limit` (integer): Maximum items returned, 1-1000 (default 50).
- `modified_after` (string): Only entries modified at or after this time.
- `modified_before` (string): Only entries modified at or before this time.
- `offset` (integer): Starting position, from 0 (default 0). Pass the previous reply's next_offset.
- `phone` (string): Only this phone number.

### `sarbacane_add_unsubscriber` (~83 tokens)

Add an unsubscribed contact to a blacklist

WRITE: record an email and/or phone as unsubscribed in a blacklist, so campaigns using that blacklist skip it. Cannot be undone with these tools. POST /v1/blacklists/{blacklistId}/unsubscribers.

Input parameters:

- `blacklist_id` (string, required): Blacklist id.
- `email` (string)
- `phone` (string)

### `sarbacane_list_campaigns` (~122 tokens)

List campaigns

Campaigns of the account (id, name, kind, created/edited, recipient count). Filter by state or a text in the name or subject. GET /v1/campaigns.

Input parameters:

- `limit` (integer): Maximum items returned, 1-1000 (default 50).
- `offset` (integer): Starting position, from 0 (default 0). Pass the previous reply's next_offset.
- `search` (string): Text in the campaign name or subject.
- `state` (string): Only campaigns in this state.

### `sarbacane_get_campaign` (~57 tokens)

Get campaign details

One campaign: state, kind, blacklists, send ids, sent date. The send id is needed to see content. GET /v1/campaigns/{campaignId}.

Input parameters:

- `campaign_id` (string, required): Campaign id.

### `sarbacane_get_campaign_report` (~60 tokens)

Get campaign statistics

Statistics of a campaign per send: delivered count, opens, openers, clicks, clickers, unsubscribers, devices and operating systems. GET /v1/reports/{campaignId}.

Input parameters:

- `campaign_id` (string, required): Campaign id.

### `sarbacane_list_campaign_recipients` (~97 tokens)

List a campaign's recipients

Recipients attached to a campaign (personal data: email, phone). GET /v1/campaigns/{campaignId}/recipients.

Input parameters:

- `campaign_id` (string, required): Campaign id.
- `limit` (integer): Maximum items returned, 1-1000 (default 50).
- `offset` (integer): Starting position, from 0 (default 0). Pass the previous reply's next_offset.

### `sarbacane_list_webhooks` (~35 tokens)

List webhooks

Webhook subscriptions of the account: url, display name and subscribed event kinds. GET /v1/webhooks.

### `sarbacane_create_email_campaign` (~164 tokens)

Create an email campaign (draft)

WRITE: create a new email campaign as a DRAFT. It is never sent by these tools: add content (sarbacane_set_campaign_content or sarbacane_import_campaign_template) and a contact list (sarbacane_set_campaign_list), then send it from Sarbacane. POST /v1/campaigns/email.

Input parameters:

- `alias_from` (string, required): Sender name.
- `alias_reply_to` (string, required): Reply-to name.
- `email_from` (string, required): Sender email address (must be a sender allowed on the account).
- `email_reply_to` (string, required): Reply-to email address.
- `name` (string, required): Campaign name (internal).
- `preheader` (string): Preheader text.
- `subject` (string, required): Email subject.

### `sarbacane_set_campaign_content` (~137 tokens)

Set a draft campaign's content

WRITE: set the HTML (and optional plain-text) content of an email campaign's send, replacing what was there. Without send_id the campaign's only send is used (an A/B test campaign has several: pass one). POST /v1/campaigns/{campaignId}/send/{sendId}/content.

Input parameters:

- `campaign_id` (string, required): Campaign id.
- `html` (string, required): The HTML body of the email.
- `send_id` (string): Send id from sarbacane_get_campaign (campaign.sends). Optional when the campaign has one send.
- `text` (string): Plain-text alternative.

### `sarbacane_import_campaign_template` (~67 tokens)

Import a template into a draft campaign

WRITE: load a saved template's content into an email campaign, replacing its content. POST /v1/campaigns/{campaignId}/content.

Input parameters:

- `campaign_id` (string, required): Campaign id.
- `template_id` (string, required): Template id (from Sarbacane).

### `sarbacane_set_campaign_list` (~74 tokens)

Attach a contact list to a draft campaign

WRITE: import a contact list's contacts as the recipients of a campaign. It does not send the campaign. POST /v1/campaigns/{campaignId}/list.

Input parameters:

- `campaign_id` (string, required): Campaign id.
- `list_id` (string, required): Contact list id (sarbacane_list_lists).

## Diagnostics

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

## Score history

- 2026-11-05: 18
- 2026-11-04: 18
- 2026-11-03: 18
- 2026-11-02: 18
- 2026-11-01: 68
- 2026-10-31: 68
- 2026-10-30: 65
- 2026-10-29: 64
- 2026-10-28: 64
- 2026-10-27: 63
- 2026-10-26: 63
- 2026-10-25: 62

## Common questions

### What is the Sarbacane MCP by usefulapi server?

Sarbacane MCP by usefulapi is listed in the public MCP registry as io.usefulapi/sarbacane. Read Sarbacane campaigns, stats, lists and blacklists; manage contacts and draft email campaigns. This page covers its hosted endpoint (https://sarbacane.usefulapi.io/mcp).

### Is the Sarbacane MCP by usefulapi server safe to use?

Sarbacane MCP by usefulapi scores 18 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 Sarbacane MCP by usefulapi server expose?

Sarbacane MCP by usefulapi exposes 19 tools: sarbacane_get_credits, sarbacane_list_users, sarbacane_list_lists, sarbacane_list_list_fields, sarbacane_list_contacts, and 14 more. Their descriptions and schemas cost roughly 1,894 tokens of context every time the server is loaded.

### Does the Sarbacane MCP by usefulapi server require authentication?

Its publisher declares no required credentials for Sarbacane MCP by usefulapi. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

### Is the Sarbacane MCP by usefulapi server still maintained?

Sarbacane MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the Sarbacane MCP by usefulapi server?

VerifyMCP ran 4 checks on Sarbacane MCP by usefulapi, covering TLS certificate, HSTS header, DNSSEC and Transport. 7 items could not be completed, a gap on our side rather than a finding about Sarbacane MCP by usefulapi: Authorization, HTTPS, Schema quality, Stability and 3 more. 5 categories score 0 for that reason, because we only credit what we can confirm. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://sarbacane.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/sarbacane/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-sarbacane/sarbacane.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-sarbacane/sarbacane/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/io-usefulapi-sarbacane/sarbacane.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-sarbacane/sarbacane
