# Emma MCP by usefulapi (remote · emma.usefulapi.io)

Read audiences, groups, mailings and campaign results without sending email or changing contacts.

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

## Components

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

## Channel facts

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

## 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-06.

- **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 Emma MCP by usefulapi server?

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

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

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

### Vellum

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-emma": {
      "type": "http",
      "url": "https://emma.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-06 (score 18, 0)

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

### 2026-11-01 (score 18, −49)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Stability: 0.10 → 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 67, +3)

- [security improvement] Authorization: partial → pass
- [functional improvement] MCP protocol: fail → pass
- [functional] New prompt “compare_email_campaign_results”
- [functional] New prompt “inspect_link_clicks_and_recipient_activity”
- [functional] New prompt “review_audience_groups_and_membership”
- [functional] MCP protocol version: 2025-06-18 → 2025-11-25
- [functional] Server version: 1.4.0 → 1.6.0
- [functional] Server version: 1.3.0 → 1.4.0
- [functional] Server version: 1.2.2 → 1.3.0

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

- [functional] Server version: 1.2.1 → 1.2.2
- [functional] Server version: 1.2.0 → 1.2.1

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

- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.1.0 → 1.2.0
- [functional] Server version: 1.0.0 → 1.1.0

### 2026-10-28 (score 63)

First indexed and scored.

## MCP tools (19)

### `emma_list_groups` (~112 tokens)

List the member groups (audience lists) of the Emma account with their active, opted-out and error member counts. Defaults to normal groups; group_types can add test and hidden groups.

Input parameters:

- `group_types` (array): g = group (default), t = test, h = hidden.
- `limit` (integer): Results per page, 1-500 (default 100).
- `start` (integer): Offset of the first result (default 0). Use next_start from the previous reply.

### `emma_get_group` (~46 tokens)

Get one member group with its member counts (active, opted-out, error).

Input parameters:

- `group_id` (integer, required): The group id (member_group_id from emma_list_groups).

### `emma_list_group_members` (~102 tokens)

List the members of one group (email, status, custom fields). Paged: use next_start for more.

Input parameters:

- `group_id` (integer, required): The group id.
- `include_deleted` (boolean): Include archived (deleted) members.
- `limit` (integer): Results per page, 1-500 (default 100).
- `start` (integer): Offset of the first result (default 0). Use next_start from the previous reply.

### `emma_list_members` (~179 tokens)

List the members (contacts) of the whole audience: id, email, status (a active, o opted out, e error), custom fields, bounce count. Paged: use next_start for more. With count_only the reply is just the number of members.

Input parameters:

- `count_only` (boolean): Return only the number of members (count=true) instead of the list.
- `deleted_only` (boolean): Only archived (deleted) members.
- `exclude_fields` (boolean): Return only the base attributes, without custom fields (smaller reply).
- `include_deleted` (boolean): Also include archived (deleted) members.
- `limit` (integer): Results per page, 1-500 (default 100).
- `start` (integer): Offset of the first result (default 0). Use next_start from the previous reply.

### `emma_get_member` (~54 tokens)

Get one member by id, with all custom fields, status, SMS status and bounce count.

Input parameters:

- `include_deleted` (boolean): Find the member even if archived.
- `member_id` (integer, required): The member id.

### `emma_find_member_by_email` (~64 tokens)

Find one member by email address, with all custom fields and status. A 404 means the address is not in the audience.

Input parameters:

- `email` (string, required): The member's email address.
- `include_deleted` (boolean): Find the member even if archived.

### `emma_get_member_groups` (~73 tokens)

List the groups one member belongs to.

Input parameters:

- `limit` (integer): Results per page, 1-500 (default 100).
- `member_id` (integer, required): The member id.
- `start` (integer): Offset of the first result (default 0). Use next_start from the previous reply.

### `emma_get_member_mailings` (~86 tokens)

The mailing history of one member: which mailings they were sent and what they did with them.

Input parameters:

- `limit` (integer): Results per page, 1-500 (default 100).
- `member_id` (integer, required): The member id.
- `start` (integer): Offset of the first result (default 0). Use next_start from the previous reply.

### `emma_list_fields` (~82 tokens)

List the custom member fields of the account (shortcut names, display names, types).

Input parameters:

- `include_deleted` (boolean): Also include deleted fields.
- `limit` (integer): Results per page, 1-500 (default 100).
- `start` (integer): Offset of the first result (default 0). Use next_start from the previous reply.

### `emma_get_import` (~92 tokens)

Status and results of one bulk member import (by import id), or, without an id, the list of all imports of the account.

Input parameters:

- `import_id` (integer): The import id.
- `limit` (integer): Results per page, 1-500 (default 100).
- `start` (integer): Offset of the first result (default 0). Use next_start from the previous reply.

### `emma_list_mailings` (~209 tokens)

List mailings (campaigns): id, name, subject, sender, status (p pending, a paused, i injecting, s sending, x canceled, c complete, w waiting, u unapproved, f failed), type, recipient count, scheduled time. Defaults to standard and test mailings in all statuses, newest first. Paged: use next_start.

Input parameters:

- `include_archived` (boolean): Include archived mailings.
- `is_scheduled` (boolean): Only mailings that have a scheduled send time.
- `limit` (integer): Results per page, 1-500 (default 100).
- `mailing_statuses` (array): Only these statuses (default: all).
- `mailing_types` (array): m standard (default with t), t test, r trigger/automated, s subject-line split test, c content split test.
- `start` (integer): Offset of the first result (default 0). Use next_start from the previous reply.

### `emma_get_mailing` (~91 tokens)

Get one mailing in full: content (HTML and plain text), recipients (groups, searches, segments), links, schedule, status.

Input parameters:

- `include_segment_names` (boolean): Add the names of the recipient segments.
- `include_subscription_names` (boolean): Add the names of the recipient subscriptions.
- `mailing_id` (integer, required): The mailing id (mailing_id from emma_list_mailings).

### `emma_list_mailing_members` (~88 tokens)

List the individual members a mailing was sent to (not groups or searches). Paged: use next_start.

Input parameters:

- `limit` (integer): Results per page, 1-500 (default 100).
- `mailing_id` (integer, required): The mailing id.
- `start` (integer): Offset of the first result (default 0). Use next_start from the previous reply.

### `emma_get_response_summary` (~98 tokens)

Month-by-month response statistics for the whole account: mailings, sent, delivered, bounced, opened, clicked, forwarded, opt-outs, sign-ups (test mailings excluded).

Input parameters:

- `include_deleted` (boolean): Include archived mailings.
- `range` (string): Date range YYYY-MM-DD~YYYY-MM-DD, for example 2026-01-01~2026-06-30; one side may be empty.

### `emma_get_mailing_response` (~53 tokens)

Response summary of one mailing: recipients, sent, delivered, bounced, opened, clicked (unique and total), forwarded, opt-outs, sign-ups.

Input parameters:

- `mailing_id` (integer, required): The mailing id.

### `emma_list_mailing_links` (~78 tokens)

The links of one mailing with their unique and total clicks.

Input parameters:

- `limit` (integer): Results per page, 1-500 (default 100).
- `mailing_id` (integer, required): The mailing id.
- `start` (integer): Offset of the first result (default 0). Use next_start from the previous reply.

### `emma_list_mailing_activity` (~219 tokens)

Who did what with one mailing: members it was sent to (sends), still in the queue (in_progress), delivered or bounced (deliveries), opened (opens), clicked (clicks), forwarded, opted out (optouts) or signed up (signups). Each row has the member's email and timestamp. Paged: use next_start.

Input parameters:

- `delivery_type` (string): Only for kind=deliveries: filter by delivery outcome (default all).
- `kind` (string, required): Which activity to list.
- `limit` (integer): Results per page, 1-500 (default 100).
- `link_id` (integer): Only for kind=clicks: limit to one link (link_id from emma_list_mailing_links).
- `mailing_id` (integer, required): The mailing id.
- `member_id` (integer): Only for kind=clicks: limit to one member.
- `start` (integer): Offset of the first result (default 0). Use next_start from the previous reply.

### `emma_list_searches` (~82 tokens)

List the saved searches (dynamic segments) of the account, with their criteria.

Input parameters:

- `include_deleted` (boolean): Also include deleted searches.
- `limit` (integer): Results per page, 1-500 (default 100).
- `start` (integer): Offset of the first result (default 0). Use next_start from the previous reply.

### `emma_get_search_members` (~89 tokens)

The members that currently match a saved search. Paged: use next_start.

Input parameters:

- `limit` (integer): Results per page, 1-500 (default 100).
- `search_id` (integer, required): The saved search id (from emma_list_searches).
- `start` (integer): Offset of the first result (default 0). Use next_start from the previous reply.

## Diagnostics

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

## Score history

- 2026-11-06: 18
- 2026-11-05: 18
- 2026-11-04: 18
- 2026-11-03: 18
- 2026-11-02: 18
- 2026-11-01: 18
- 2026-10-31: 67
- 2026-10-30: 64
- 2026-10-29: 63
- 2026-10-28: 63

## Common questions

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

Emma MCP by usefulapi is listed in the public MCP registry as io.usefulapi/emma. Read audiences, groups, mailings and campaign results without sending email or changing contacts. This page covers its hosted endpoint (https://emma.usefulapi.io/mcp).

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

Emma 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 Emma MCP by usefulapi server expose?

Emma MCP by usefulapi exposes 19 tools: emma_list_groups, emma_get_group, emma_list_group_members, emma_list_members, emma_get_member, and 14 more. Their descriptions and schemas cost roughly 1,897 tokens of context every time the server is loaded.

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

Its publisher declares no required credentials for Emma 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 Emma MCP by usefulapi server still maintained?

Emma MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 6 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 Emma MCP by usefulapi server?

VerifyMCP ran 4 checks on Emma 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 Emma 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://emma.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/emma/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-emma/emma.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-emma/emma/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/io-usefulapi-emma/emma.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-emma/emma
