Read email/chat conversations, messages, contacts and teams; draft, send and update threads.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a contact in the given contact book. Missive: POST /contacts.
The contact book id to create the contact in (required).
Contact info entries (email/phone/etc. objects).
Whether the contact is starred.
Last name.
First name.
Group/organization membership objects.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Create a contact in the given contact book. Missive: POST /contacts.
| Argument | Type | Description |
|---|---|---|
| infos | array | Contact info entries (email/phone/etc. objects). |
| starred | boolean | Whether the contact is starred. |
| last_name | string | Last name. |
| first_name | string | First name. |
| memberships | array | Group/organization membership objects. |
| contact_book* | string | The contact book id to create the contact in (required). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_book"
],
"properties": {
"infos": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description": "Contact info entries (email/phone/etc. objects)."
},
"starred": {
"type": "boolean",
"description": "Whether the contact is starred."
},
"last_name": {
"type": "string",
"description": "Last name."
},
"first_name": {
"type": "string",
"description": "First name."
},
"memberships": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description": "Group/organization membership objects."
},
"contact_book": {
"type": "string",
"description": "The contact book id to create the contact in (required)."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| body* | string | The message body (HTML) — required. |
| 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. |
| cc_fields | array | Cc recipients. |
| to_fields | array | Recipients ({address, name?}). |
| bcc_fields | array | Bcc recipients. |
| from_field | object | The sender ({address, name?}). |
| references | array | Message-ID references (for threading). |
Get a single contact by id. Missive: GET /contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The resource id (a UUID-like string). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
}
}
}Get a single conversation by id. Missive: GET /conversations/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The resource id (a UUID-like string). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
}
}
}Get a single message, including the full body. Missive: GET /conversations/{conversation_id}/messages/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The message id. |
| conversation_id* | string | The conversation id the message belongs to. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"conversation_id",
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The message id."
},
"conversation_id": {
"type": "string",
"description": "The conversation id the message belongs to."
}
}
}List contact books (address books). Missive: GET /contact_books.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max contact books to return (default 50, max 200). |
| offset | integer | Number of records to skip (offset pagination). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max contact books to return (default 50, max 200)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records to skip (offset pagination)."
}
}
}List contact groups or organizations within a contact book. Missive: GET /contact_groups.
| Argument | Type | Description |
|---|---|---|
| kind* | string | Which kind to list: "group" or "organization". |
| limit | integer | Max records to return. |
| offset | integer | Number of records to skip (offset pagination). |
| contact_book* | string | The contact book id (required). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_book",
"kind"
],
"properties": {
"kind": {
"enum": [
"group",
"organization"
],
"type": "string",
"description": "Which kind to list: \"group\" or \"organization\"."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max records to return."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records to skip (offset pagination)."
},
"contact_book": {
"type": "string",
"description": "The contact book id (required)."
}
}
}List contacts in a contact book. Missive: GET /contacts.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max contacts to return (default 50, max 200). |
| order | string | Sort order (default "last_name"). |
| offset | integer | Number of records to skip (offset pagination). |
| search | string | Free-text search over contacts. |
| contact_book* | string | The contact book id to list contacts from (required). |
| modified_since | number | Unix timestamp — only contacts modified since. |
| include_deleted | boolean | Include deleted contacts. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_book"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max contacts to return (default 50, max 200)."
},
"order": {
"type": "string",
"description": "Sort order (default \"last_name\")."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records to skip (offset pagination)."
},
"search": {
"type": "string",
"description": "Free-text search over contacts."
},
"contact_book": {
"type": "string",
"description": "The contact book id to list contacts from (required)."
},
"modified_since": {
"type": "number",
"description": "Unix timestamp — only contacts modified since."
},
"include_deleted": {
"type": "boolean",
"description": "Include deleted contacts."
}
}
}List internal comments (team chat) on a conversation. Missive: GET /conversations/{id}/comments.
| Argument | Type | Description |
|---|---|---|
| id* | string | 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). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max records to return."
},
"until": {
"type": "number",
"description": "Unix timestamp cursor — return records older than this (offset-less pagination)."
}
}
}List draft messages on a conversation. Missive: GET /conversations/{id}/drafts.
| Argument | Type | Description |
|---|---|---|
| id* | string | 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). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max records to return."
},
"until": {
"type": "number",
"description": "Unix timestamp cursor — return records older than this (offset-less pagination)."
}
}
}List the messages (emails) in a conversation. Missive: GET /conversations/{id}/messages.
| Argument | Type | Description |
|---|---|---|
| id* | string | 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). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max messages to return (default 10, max 10)."
},
"until": {
"type": "number",
"description": "Unix timestamp cursor — return records older than this (offset-less pagination)."
}
}
}List posts (integration/app-generated items) on a conversation. Missive: GET /conversations/{id}/posts.
| Argument | Type | Description |
|---|---|---|
| id* | string | 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). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max records to return."
},
"until": {
"type": "number",
"description": "Unix timestamp cursor — return records older than this (offset-less pagination)."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| all | boolean | All conversations. |
| string | Filter to conversations involving this email address. | |
| inbox | boolean | Conversations in your inbox. |
| limit | integer | Max conversations to return (default 25, max 50). |
| until | number | Unix timestamp cursor — return records older than this (offset-less pagination). |
| closed | boolean | Closed conversations. |
| flagged | boolean | Flagged conversations. |
| snoozed | boolean | Snoozed conversations. |
| trashed | boolean | Trashed conversations. |
List organizations you belong to. Missive: GET /organizations.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max records to return. |
| offset | integer | Number of records to skip (offset pagination). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max records to return."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records to skip (offset pagination)."
}
}
}List canned responses / templates. Missive: GET /responses.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max records to return. |
| offset | integer | Number of records to skip (offset pagination). |
| organization | string | Filter to an organization id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max records to return."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records to skip (offset pagination)."
},
"organization": {
"type": "string",
"description": "Filter to an organization id."
}
}
}List shared labels (team-shared folders/tags). Missive: GET /shared_labels.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max records to return. |
| offset | integer | Number of records to skip (offset pagination). |
| organization | string | Filter to an organization id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max records to return."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records to skip (offset pagination)."
},
"organization": {
"type": "string",
"description": "Filter to an organization id."
}
}
}List teams in the organization(s). Missive: GET /teams.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max records to return. |
| offset | integer | Number of records to skip (offset pagination). |
| organization | string | Filter to an organization id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max records to return."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records to skip (offset pagination)."
},
"organization": {
"type": "string",
"description": "Filter to an organization id."
}
}
}List users (team members). Missive: GET /users.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max records to return. |
| offset | integer | Number of records to skip (offset pagination). |
| organization | string | Filter to an organization id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max records to return."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records to skip (offset pagination)."
},
"organization": {
"type": "string",
"description": "Filter to an organization id."
}
}
}Update a conversation — assign/unassign users, add/remove shared labels, close/reopen, move to inbox, or set subject/color/team. Missive: PATCH /conversations/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The resource id (a UUID-like string). |
| team | string | Team id to move the conversation to. |
| close | boolean | Close (archive) the conversation. |
| color | string | Set the conversation color. |
| reopen | boolean | Reopen the conversation. |
| subject | string | Set the conversation subject. |
| add_to_inbox | boolean | Move the conversation back to the inbox. |
| organization | string | Organization id (context for the update). |
| add_assignees | array | User ids to assign. |
| conversation |
| string |
| Attach the draft to an existing conversation id. |
| organization | string | Organization id to send from. |
| add_assignees | array | User ids to assign to the conversation. |
| add_shared_labels | array | Shared label ids to apply. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"body"
],
"properties": {
"body": {
"type": "string",
"description": "The message body (HTML) — required."
},
"send": {
"type": "boolean",
"description": "If true, SEND the email immediately instead of saving a draft."
},
"send_at": {
"type": "number",
"description": "Unix timestamp to schedule the send."
},
"subject": {
"type": "string",
"description": "The subject line."
},
"cc_fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"address"
],
"properties": {
"name": {
"type": "string",
"description": "Display name."
},
"address": {
"type": "string",
"description": "Email address."
}
},
"description": "An email participant ({address, name?})."
},
"description": "Cc recipients."
},
"to_fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"address"
],
"properties": {
"name": {
"type": "string",
"description": "Display name."
},
"address": {
"type": "string",
"description": "Email address."
}
},
"description": "An email participant ({address, name?})."
},
"description": "Recipients ({address, name?})."
},
"bcc_fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"address"
],
"properties": {
"name": {
"type": "string",
"description": "Display name."
},
"address": {
"type": "string",
"description": "Email address."
}
},
"description": "An email participant ({address, name?})."
},
"description": "Bcc recipients."
},
"from_field": {
"type": "object",
"required": [
"address"
],
"properties": {
"name": {
"type": "string",
"description": "Display name."
},
"address": {
"type": "string",
"description": "Email address."
}
},
"description": "The sender ({address, name?})."
},
"references": {
"type": "array",
"items": {
"type": "string"
},
"description": "Message-ID references (for threading)."
},
"conversation": {
"type": "string",
"description": "Attach the draft to an existing conversation id."
},
"organization": {
"type": "string",
"description": "Organization id to send from."
},
"add_assignees": {
"type": "array",
"items": {
"type": "string"
},
"description": "User ids to assign to the conversation."
},
"add_shared_labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Shared label ids to apply."
}
}
}| assigned | boolean | Conversations assigned to you. |
| team_all | string | All of a team's conversations (team id). |
| team_inbox | string | Conversations in a team's inbox (team id). |
| organization | string | Filter to an organization id. |
| shared_label | string | Conversations under a shared label id. |
| contact_organization | string | Filter to a contact organization id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"all": {
"type": "boolean",
"description": "All conversations."
},
"email": {
"type": "string",
"description": "Filter to conversations involving this email address."
},
"inbox": {
"type": "boolean",
"description": "Conversations in your inbox."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max conversations to return (default 25, max 50)."
},
"until": {
"type": "number",
"description": "Unix timestamp cursor — return records older than this (offset-less pagination)."
},
"closed": {
"type": "boolean",
"description": "Closed conversations."
},
"flagged": {
"type": "boolean",
"description": "Flagged conversations."
},
"snoozed": {
"type": "boolean",
"description": "Snoozed conversations."
},
"trashed": {
"type": "boolean",
"description": "Trashed conversations."
},
"assigned": {
"type": "boolean",
"description": "Conversations assigned to you."
},
"team_all": {
"type": "string",
"description": "All of a team's conversations (team id)."
},
"team_inbox": {
"type": "string",
"description": "Conversations in a team's inbox (team id)."
},
"organization": {
"type": "string",
"description": "Filter to an organization id."
},
"shared_label": {
"type": "string",
"description": "Conversations under a shared label id."
},
"contact_organization": {
"type": "string",
"description": "Filter to a contact organization id."
}
}
}| remove_assignees |
| array |
| User ids to unassign. |
| add_shared_labels | array | Shared label ids to add. |
| remove_shared_labels | array | Shared label ids to remove. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
},
"team": {
"type": "string",
"description": "Team id to move the conversation to."
},
"close": {
"type": "boolean",
"description": "Close (archive) the conversation."
},
"color": {
"type": "string",
"description": "Set the conversation color."
},
"reopen": {
"type": "boolean",
"description": "Reopen the conversation."
},
"subject": {
"type": "string",
"description": "Set the conversation subject."
},
"add_to_inbox": {
"type": "boolean",
"description": "Move the conversation back to the inbox."
},
"organization": {
"type": "string",
"description": "Organization id (context for the update)."
},
"add_assignees": {
"type": "array",
"items": {
"type": "string"
},
"description": "User ids to assign."
},
"remove_assignees": {
"type": "array",
"items": {
"type": "string"
},
"description": "User ids to unassign."
},
"add_shared_labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Shared label ids to add."
},
"remove_shared_labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Shared label ids to remove."
}
}
}