MCP tools
Triage actions
Change mail: trash, spam, archive, label, and star. Take the lease first.
Call these with tools/call on https://getinboxtriage.com/mcp. See the MCP overview for sign-in and the request format.
trash_message
Tool
Moves one message to Trash. Not a permanent delete.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
inboxId |
string | Required | Inbox id from list_inboxes. |
messageId |
string | Required | Message id from list_messages, search_mailbox, or show_inbox. |
confirmed |
boolean | Optional | Only needed when the sender is on the VIP list: pass true after the human agrees in chat. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trash_message",
"arguments": {
"inboxId": "inbox_lx2k9a1b",
"messageId": "18f3a2b4c5d6e7f8"
}
}
}
mark_as_spam
Tool
Moves one message to Spam or Junk.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
inboxId |
string | Required | Inbox id from list_inboxes. |
messageId |
string | Required | Message id from list_messages, search_mailbox, or show_inbox. |
confirmed |
boolean | Optional | Required when the sender is on the VIP list: pass true only after the human agrees in chat. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mark_as_spam",
"arguments": {
"inboxId": "inbox_lx2k9a1b",
"messageId": "18f3a2b4c5d6e7f8"
}
}
}
archive_messages
Tool
Archives Gmail messages. Always needs confirmed: true after the person agrees. Up to 25 per call.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
inboxId |
string | Required | Inbox id from list_inboxes. |
messageIds |
string[] | Required | Message ids. Up to 25. |
confirmed |
true | Required | Must be literal true. Confirms the human approved the archive in chat |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "archive_messages",
"arguments": {
"inboxId": "inbox_lx2k9a1b",
"messageIds": [
"18f3a2b4c5d6e7f8"
],
"confirmed": true
}
}
}
act_on_messages
Tool
Archives, trashes, marks as spam, stars, or labels messages on any inbox type, by row ids from show_inbox or by sender. VIP mail is skipped in bulk and needs the person's confirmation one at a time. Every change returns an undoId.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
action |
enum | Required | What to do to the messages. One of: archive, trash, spam, star, unstar, label. |
items |
object[] | Optional | Rows to act on, from show_inbox: inboxId and messageId. |
sender |
object | Optional | Instead of items: every message from this sender still in the inbox |
labelIds |
string[] | Optional | For action "label": Gmail label ids from list_labels |
vipConfirmed |
boolean | Optional | true only after the person agreed in chat to act on this one VIP message |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "act_on_messages",
"arguments": {
"action": "archive",
"items": [
{
"inboxId": "inbox_lx2k9a1b",
"messageId": "18f3a2b4c5d6e7f8"
}
]
}
}
}
apply_labels
Tool
Adds Gmail labels. More than one message needs confirmed: true. Up to 25 per call.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
inboxId |
string | Required | Inbox id from list_inboxes. |
messageIds |
string[] | Required | Explicit Gmail message ids only |
labelIds |
string[] | Required | Explicit Gmail label ids (from list_labels) |
confirmed |
true | Optional | Required true when messageIds.length > 1. Confirms the human approved the bulk label apply in chat |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "apply_labels",
"arguments": {
"inboxId": "inbox_lx2k9a1b",
"messageIds": [
"18f3a2b4c5d6e7f8"
],
"labelIds": [
"Label_12"
]
}
}
}
remove_labels
Tool
Removes Gmail labels. Same limits as apply_labels.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
inboxId |
string | Required | Inbox id from list_inboxes. |
messageIds |
string[] | Required | Message ids. Up to 25. |
labelIds |
string[] | Required | Gmail label ids from list_labels. |
confirmed |
true | Optional | Required true when messageIds.length > 1 |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "remove_labels",
"arguments": {
"inboxId": "inbox_lx2k9a1b",
"messageIds": [
"18f3a2b4c5d6e7f8"
],
"labelIds": [
"Label_12"
]
}
}
}
star_messages
Tool
Stars or unstars Gmail messages. Same limits as apply_labels.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
inboxId |
string | Required | Inbox id from list_inboxes. |
messageIds |
string[] | Required | Message ids. Up to 25. |
starred |
boolean | Required | true to star, false to unstar |
confirmed |
true | Optional | Required true when messageIds.length > 1 |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "star_messages",
"arguments": {
"inboxId": "inbox_lx2k9a1b",
"messageIds": [
"18f3a2b4c5d6e7f8"
],
"starred": true
}
}
}
begin_triage
Tool
Takes the per-inbox lease before a pass that changes mail.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
inboxId |
string | Required | Inbox id from list_inboxes. |
agentLabel |
string | Required | Short human-readable label identifying this agent/session, e.g. "claude-desktop" or "nightly-cron". Required. |
force |
boolean | Optional | true to skip the cadence soft-check. Pass it only after the human explicitly asks to triage now. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "begin_triage",
"arguments": {
"inboxId": "inbox_lx2k9a1b",
"agentLabel": "nightly-cleanup"
}
}
}
heartbeat_triage
Tool
Extends the lease. Call it about every 2 minutes.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
inboxId |
string | Required | Inbox id from list_inboxes. |
agentLabel |
string | Required | The same stable name you began the pass with. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "heartbeat_triage",
"arguments": {
"inboxId": "inbox_lx2k9a1b",
"agentLabel": "nightly-cleanup"
}
}
}
end_triage
Tool
Releases the lease and records a summary.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
inboxId |
string | Required | Inbox id from list_inboxes. |
agentLabel |
string | Required | The same stable name you began the pass with. |
summary |
string | Optional | Short human-readable summary of what this pass did, e.g. "archived 12 promos, left 2 VIP emails for review". |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "end_triage",
"arguments": {
"inboxId": "inbox_lx2k9a1b",
"agentLabel": "nightly-cleanup"
}
}
}
get_triage_activity
Tool
Last pass and current lease for one inbox or all.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
inboxId |
string | Optional | Inbox id from list_inboxes. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_triage_activity",
"arguments": {}
}
}