missive
Read email/chat conversations, messages, contacts and teams; draft, send and update threads.
我該用這個嗎
品質與安全性
發現項目(4)
- LOW在 missive_list_conversation_messages 中
- LOW在 missive_list_conversation_comments 中
- LOW在 missive_list_conversation_drafts 中
- LOW在 missive_list_conversation_posts 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"missive": {
"url": "https://missive.usefulapi.io/mcp"
}
}
}遠端端點
https://missive.usefulapi.io/mcpstreamable-http它能做什麼
工具清單
工具(19)
🟢missive_list_conversations(limit, until, inbox, assigned, closed, ...)
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.
輸入結構描述
{
"type": "object",
"properties": {
"limit": {
"description": "Max conversations to return (default 25, max 50).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"until": {
"description": "Unix timestamp cursor — return records older than this (offset-less pagination).",
"type": "number"
},
"inbox": {
"description": "Conversations in your inbox.",
"type": "boolean"
},
"assigned": {
"description": "Conversations assigned to you.",
"type": "boolean"
},
"closed": {
"description": "Closed conversations.",
"type": "boolean"
},
"flagged": {
"description": "Flagged conversations.",
"type": "boolean"
},
"snoozed": {
"description": "Snoozed conversations.",
"type": "boolean"
},
"trashed": {
"description": "Trashed conversations.",
"type": "boolean"
},
"all": {
"description": "All conversations.",
"type": "boolean"
},
"shared_label": {
"description": "Conversations under a shared label id.",
"type": "string"
},
"team_inbox": {
"description": "Conversations in a team's inbox (team id).",
"type": "string"
},
"team_all": {
"description": "All of a team's conversations (team id).",
"type": "string"
},
"organization": {
"description": "Filter to an organization id.",
"type": "string"
},
"email": {
"description": "Filter to conversations involving this email address.",
"type": "string"
},
"contact_organization": {
"description": "Filter to a contact organization id.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_get_conversation(id)
Get a single conversation by id. Missive: GET /conversations/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_list_conversation_messages(id, limit, until)
List the messages (emails) in a conversation. Missive: GET /conversations/{id}/messages.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
},
"limit": {
"description": "Max messages to return (default 10, max 10).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"until": {
"description": "Unix timestamp cursor — return records older than this (offset-less pagination).",
"type": "number"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_get_message(conversation_id, id)
Get a single message, including the full body. Missive: GET /conversations/{conversation_id}/messages/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"conversation_id": {
"type": "string",
"description": "The conversation id the message belongs to."
},
"id": {
"type": "string",
"description": "The message id."
}
},
"required": [
"conversation_id",
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_list_conversation_comments(id, limit, until)
List internal comments (team chat) on a conversation. Missive: GET /conversations/{id}/comments.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
},
"limit": {
"description": "Max records to return.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"until": {
"description": "Unix timestamp cursor — return records older than this (offset-less pagination).",
"type": "number"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_list_conversation_drafts(id, limit, until)
List draft messages on a conversation. Missive: GET /conversations/{id}/drafts.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
},
"limit": {
"description": "Max records to return.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"until": {
"description": "Unix timestamp cursor — return records older than this (offset-less pagination).",
"type": "number"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_list_conversation_posts(id, limit, until)
List posts (integration/app-generated items) on a conversation. Missive: GET /conversations/{id}/posts.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
},
"limit": {
"description": "Max records to return.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"until": {
"description": "Unix timestamp cursor — return records older than this (offset-less pagination).",
"type": "number"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_list_contacts(contact_book, search, order, limit, offset, ...)
List contacts in a contact book. Missive: GET /contacts.
輸入結構描述
{
"type": "object",
"properties": {
"contact_book": {
"type": "string",
"description": "The contact book id to list contacts from (required)."
},
"search": {
"description": "Free-text search over contacts.",
"type": "string"
},
"order": {
"description": "Sort order (default \"last_name\").",
"type": "string"
},
"limit": {
"description": "Max contacts to return (default 50, max 200).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"offset": {
"description": "Number of records to skip (offset pagination).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"modified_since": {
"description": "Unix timestamp — only contacts modified since.",
"type": "number"
},
"include_deleted": {
"description": "Include deleted contacts.",
"type": "boolean"
}
},
"required": [
"contact_book"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_get_contact(id)
Get a single contact by id. Missive: GET /contacts/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_list_contact_books(limit, offset)
List contact books (address books). Missive: GET /contact_books.
輸入結構描述
{
"type": "object",
"properties": {
"limit": {
"description": "Max contact books to return (default 50, max 200).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"offset": {
"description": "Number of records to skip (offset pagination).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_list_contact_groups(contact_book, kind, limit, offset)
List contact groups or organizations within a contact book. Missive: GET /contact_groups.
輸入結構描述
{
"type": "object",
"properties": {
"contact_book": {
"type": "string",
"description": "The contact book id (required)."
},
"kind": {
"type": "string",
"enum": [
"group",
"organization"
],
"description": "Which kind to list: \"group\" or \"organization\"."
},
"limit": {
"description": "Max records to return.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"offset": {
"description": "Number of records to skip (offset pagination).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"contact_book",
"kind"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_list_teams(organization, limit, offset)
List teams in the organization(s). Missive: GET /teams.
輸入結構描述
{
"type": "object",
"properties": {
"organization": {
"description": "Filter to an organization id.",
"type": "string"
},
"limit": {
"description": "Max records to return.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"offset": {
"description": "Number of records to skip (offset pagination).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_list_users(organization, limit, offset)
List users (team members). Missive: GET /users.
輸入結構描述
{
"type": "object",
"properties": {
"organization": {
"description": "Filter to an organization id.",
"type": "string"
},
"limit": {
"description": "Max records to return.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"offset": {
"description": "Number of records to skip (offset pagination).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_list_shared_labels(organization, limit, offset)
List shared labels (team-shared folders/tags). Missive: GET /shared_labels.
輸入結構描述
{
"type": "object",
"properties": {
"organization": {
"description": "Filter to an organization id.",
"type": "string"
},
"limit": {
"description": "Max records to return.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"offset": {
"description": "Number of records to skip (offset pagination).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_list_organizations(limit, offset)
List organizations you belong to. Missive: GET /organizations.
輸入結構描述
{
"type": "object",
"properties": {
"limit": {
"description": "Max records to return.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"offset": {
"description": "Number of records to skip (offset pagination).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢missive_list_responses(organization, limit, offset)
List canned responses / templates. Missive: GET /responses.
輸入結構描述
{
"type": "object",
"properties": {
"organization": {
"description": "Filter to an organization id.",
"type": "string"
},
"limit": {
"description": "Max records to return.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"offset": {
"description": "Number of records to skip (offset pagination).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴missive_create_draft(body, subject, to_fields, cc_fields, bcc_fields, ...)
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.
輸入結構描述
{
"type": "object",
"properties": {
"body": {
"type": "string",
"description": "The message body (HTML) — required."
},
"subject": {
"description": "The subject line.",
"type": "string"
},
"to_fields": {
"description": "Recipients ({address, name?}).",
"type": "array",
"items": {
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Email address."
},
"name": {
"description": "Display name.",
"type": "string"
}
},
"required": [
"address"
],
"description": "An email participant ({address, name?})."
}
},
"cc_fields": {
"description": "Cc recipients.",
"type": "array",
"items": {
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Email address."
},
"name": {
"description": "Display name.",
"type": "string"
}
},
"required": [
"address"
],
"description": "An email participant ({address, name?})."
}
},
"bcc_fields": {
"description": "Bcc recipients.",
"type": "array",
"items": {
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Email address."
},
"name": {
"description": "Display name.",
"type": "string"
}
},
"required": [
"address"
],
"description": "An email participant ({address, name?})."
}
},
"from_field": {
"description": "The sender ({address, name?}).",
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Email address."
},
"name": {
"description": "Display name.",
"type": "string"
}
},
"required": [
"address"
]
},
"conversation": {
"description": "Attach the draft to an existing conversation id.",
"type": "string"
},
"references": {
"description": "Message-ID references (for threading).",
"type": "array",
"items": {
"type": "string"
}
},
"send": {
"description": "If true, SEND the email immediately instead of saving a draft.",
"type": "boolean"
},
"send_at": {
"description": "Unix timestamp to schedule the send.",
"type": "number"
},
"organization": {
"description": "Organization id to send from.",
"type": "string"
},
"add_assignees": {
"description": "User ids to assign to the conversation.",
"type": "array",
"items": {
"type": "string"
}
},
"add_shared_labels": {
"description": "Shared label ids to apply.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"body"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴missive_update_conversation(id, add_assignees, remove_assignees, add_shared_labels, remove_shared_labels, ...)
Update a conversation — assign/unassign users, add/remove shared labels, close/reopen, move to inbox, or set subject/color/team. Missive: PATCH /conversations/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The resource id (a UUID-like string)."
},
"add_assignees": {
"description": "User ids to assign.",
"type": "array",
"items": {
"type": "string"
}
},
"remove_assignees": {
"description": "User ids to unassign.",
"type": "array",
"items": {
"type": "string"
}
},
"add_shared_labels": {
"description": "Shared label ids to add.",
"type": "array",
"items": {
"type": "string"
}
},
"remove_shared_labels": {
"description": "Shared label ids to remove.",
"type": "array",
"items": {
"type": "string"
}
},
"close": {
"description": "Close (archive) the conversation.",
"type": "boolean"
},
"reopen": {
"description": "Reopen the conversation.",
"type": "boolean"
},
"add_to_inbox": {
"description": "Move the conversation back to the inbox.",
"type": "boolean"
},
"subject": {
"description": "Set the conversation subject.",
"type": "string"
},
"color": {
"description": "Set the conversation color.",
"type": "string"
},
"organization": {
"description": "Organization id (context for the update).",
"type": "string"
},
"team": {
"description": "Team id to move the conversation to.",
"type": "string"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴missive_create_contact(contact_book, first_name, last_name, starred, infos, ...)
Create a contact in the given contact book. Missive: POST /contacts.
輸入結構描述
{
"type": "object",
"properties": {
"contact_book": {
"type": "string",
"description": "The contact book id to create the contact in (required)."
},
"first_name": {
"description": "First name.",
"type": "string"
},
"last_name": {
"description": "Last name.",
"type": "string"
},
"starred": {
"description": "Whether the contact is starred.",
"type": "boolean"
},
"infos": {
"description": "Contact info entries (email/phone/etc. objects).",
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"memberships": {
"description": "Group/organization membership objects.",
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
},
"required": [
"contact_book"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}社群
證據