# io.usefulapi/missive (remote · missive.usefulapi.io)

Read email/chat conversations, messages, contacts and teams; draft, send and update threads.

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

## Components

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

## Channel facts

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

## 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-08-03.

- **Endpoint Security**: 78/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 71/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 1881 tokens (~99/item across 19 items; 19 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **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**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http io-usefulapi-missive https://missive.usefulapi.io/mcp
```

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-missive": {
      "type": "http",
      "url": "https://missive.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-08-03 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 70, +3)

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

### 2026-07-30 (score 67, −2)

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

### 2026-07-29 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 68, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-07-27 (score 68, +56)

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

### 2026-07-26 (score 12)

First indexed and scored.

## MCP tools (19)

### `missive_list_conversations` (~268 tokens)

List conversations

List conversations (email/chat threads). Missive requires EXACTLY ONE mailbox-type filter — one of inbox / assigned / closed / flagged / snoozed / trashed / all / shared_label / team_inbox / team_all / organization. Missive: GET /conversations.

Input parameters:

- `all` (boolean): All conversations.
- `assigned` (boolean): Conversations assigned to you.
- `closed` (boolean): Closed conversations.
- `contact_organization` (string): Filter to a contact organization id.
- `email` (string): Filter to conversations involving this email address.
- `flagged` (boolean): Flagged conversations.
- `inbox` (boolean): Conversations in your inbox.
- `limit` (integer): Max conversations to return (default 25, max 50).
- `organization` (string): Filter to an organization id.
- `shared_label` (string): Conversations under a shared label id.
- `snoozed` (boolean): Snoozed conversations.
- `team_all` (string): All of a team's conversations (team id).
- `team_inbox` (string): Conversations in a team's inbox (team id).
- `trashed` (boolean): Trashed conversations.
- `until` (number): Unix timestamp cursor — return records older than this (offset-less pagination).

### `missive_get_conversation` (~43 tokens)

Get conversation

Get a single conversation by id. Missive: GET /conversations/{id}.

Input parameters:

- `id` (string, required): The resource id (a UUID-like string).

### `missive_list_conversation_messages` (~88 tokens)

List conversation messages

List the messages (emails) in a conversation. Missive: GET /conversations/{id}/messages.

Input parameters:

- `id` (string, required): The resource id (a UUID-like string).
- `limit` (integer): Max messages to return (default 10, max 10).
- `until` (number): Unix timestamp cursor — return records older than this (offset-less pagination).

### `missive_get_message` (~60 tokens)

Get message

Get a single message, including the full body. Missive: GET /conversations/{conversation_id}/messages/{id}.

Input parameters:

- `conversation_id` (string, required): The conversation id the message belongs to.
- `id` (string, required): The message id.

### `missive_list_conversation_comments` (~81 tokens)

List conversation comments

List internal comments (team chat) on a conversation. Missive: GET /conversations/{id}/comments.

Input parameters:

- `id` (string, required): The resource id (a UUID-like string).
- `limit` (integer): Max records to return.
- `until` (number): Unix timestamp cursor — return records older than this (offset-less pagination).

### `missive_list_conversation_drafts` (~79 tokens)

List conversation drafts

List draft messages on a conversation. Missive: GET /conversations/{id}/drafts.

Input parameters:

- `id` (string, required): The resource id (a UUID-like string).
- `limit` (integer): Max records to return.
- `until` (number): Unix timestamp cursor — return records older than this (offset-less pagination).

### `missive_list_conversation_posts` (~82 tokens)

List conversation posts

List posts (integration/app-generated items) on a conversation. Missive: GET /conversations/{id}/posts.

Input parameters:

- `id` (string, required): The resource id (a UUID-like string).
- `limit` (integer): Max records to return.
- `until` (number): Unix timestamp cursor — return records older than this (offset-less pagination).

### `missive_list_contacts` (~128 tokens)

List contacts

List contacts in a contact book. Missive: GET /contacts.

Input parameters:

- `contact_book` (string, required): The contact book id to list contacts from (required).
- `include_deleted` (boolean): Include deleted contacts.
- `limit` (integer): Max contacts to return (default 50, max 200).
- `modified_since` (number): Unix timestamp — only contacts modified since.
- `offset` (integer): Number of records to skip (offset pagination).
- `order` (string): Sort order (default "last_name").
- `search` (string): Free-text search over contacts.

### `missive_get_contact` (~41 tokens)

Get contact

Get a single contact by id. Missive: GET /contacts/{id}.

Input parameters:

- `id` (string, required): The resource id (a UUID-like string).

### `missive_list_contact_books` (~61 tokens)

List contact books

List contact books (address books). Missive: GET /contact_books.

Input parameters:

- `limit` (integer): Max contact books to return (default 50, max 200).
- `offset` (integer): Number of records to skip (offset pagination).

### `missive_list_contact_groups` (~87 tokens)

List contact groups

List contact groups or organizations within a contact book. Missive: GET /contact_groups.

Input parameters:

- `contact_book` (string, required): The contact book id (required).
- `kind` (string, required): Which kind to list: "group" or "organization".
- `limit` (integer): Max records to return.
- `offset` (integer): Number of records to skip (offset pagination).

### `missive_list_teams` (~63 tokens)

List teams

List teams in the organization(s). Missive: GET /teams.

Input parameters:

- `limit` (integer): Max records to return.
- `offset` (integer): Number of records to skip (offset pagination).
- `organization` (string): Filter to an organization id.

### `missive_list_users` (~61 tokens)

List users

List users (team members). Missive: GET /users.

Input parameters:

- `limit` (integer): Max records to return.
- `offset` (integer): Number of records to skip (offset pagination).
- `organization` (string): Filter to an organization id.

### `missive_list_shared_labels` (~68 tokens)

List shared labels

List shared labels (team-shared folders/tags). Missive: GET /shared_labels.

Input parameters:

- `limit` (integer): Max records to return.
- `offset` (integer): Number of records to skip (offset pagination).
- `organization` (string): Filter to an organization id.

### `missive_list_organizations` (~50 tokens)

List organizations

List organizations you belong to. Missive: GET /organizations.

Input parameters:

- `limit` (integer): Max records to return.
- `offset` (integer): Number of records to skip (offset pagination).

### `missive_list_responses` (~62 tokens)

List responses

List canned responses / templates. Missive: GET /responses.

Input parameters:

- `limit` (integer): Max records to return.
- `offset` (integer): Number of records to skip (offset pagination).
- `organization` (string): Filter to an organization id.

### `missive_create_draft` (~241 tokens)

Create draft

Create a draft email/message. WARNING: setting send=true SENDS a real email immediately (send_at schedules it) instead of saving a draft. Attach to an existing thread with `conversation`. Missive: POST /drafts.

Input parameters:

- `add_assignees` (array): User ids to assign to the conversation.
- `add_shared_labels` (array): Shared label ids to apply.
- `bcc_fields` (array): Bcc recipients.
- `body` (string, required): The message body (HTML) — required.
- `cc_fields` (array): Cc recipients.
- `conversation` (string): Attach the draft to an existing conversation id.
- `from_field` (object): The sender ({address, name?}).
- `organization` (string): Organization id to send from.
- `references` (array): Message-ID references (for threading).
- `send` (boolean): If true, SEND the email immediately instead of saving a draft.
- `send_at` (number): Unix timestamp to schedule the send.
- `subject` (string): The subject line.
- `to_fields` (array): Recipients ({address, name?}).

### `missive_update_conversation` (~212 tokens)

Update conversation

Update a conversation — assign/unassign users, add/remove shared labels, close/reopen, move to inbox, or set subject/color/team. Missive: PATCH /conversations/{id}.

Input parameters:

- `add_assignees` (array): User ids to assign.
- `add_shared_labels` (array): Shared label ids to add.
- `add_to_inbox` (boolean): Move the conversation back to the inbox.
- `close` (boolean): Close (archive) the conversation.
- `color` (string): Set the conversation color.
- `id` (string, required): The resource id (a UUID-like string).
- `organization` (string): Organization id (context for the update).
- `remove_assignees` (array): User ids to unassign.
- `remove_shared_labels` (array): Shared label ids to remove.
- `reopen` (boolean): Reopen the conversation.
- `subject` (string): Set the conversation subject.
- `team` (string): Team id to move the conversation to.

### `missive_create_contact` (~106 tokens)

Create contact

Create a contact in the given contact book. Missive: POST /contacts.

Input parameters:

- `contact_book` (string, required): The contact book id to create the contact in (required).
- `first_name` (string): First name.
- `infos` (array): Contact info entries (email/phone/etc. objects).
- `last_name` (string): Last name.
- `memberships` (array): Group/organization membership objects.
- `starred` (boolean): Whether the contact is starred.

## Diagnostics

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

## Score history

- 2026-08-03: 72
- 2026-08-02: 71
- 2026-08-01: 71
- 2026-07-31: 70
- 2026-07-30: 67
- 2026-07-29: 69
- 2026-07-28: 68
- 2026-07-27: 68
- 2026-07-26: 12

## Links

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