Skip to main content
Glama
resend

Email Sending MCP

by resend

Update Inbox Thread

update-inbox-thread

Purpose: Update one thread in a Resend inbox: mark it read or unread, move it to another folder, or add and remove labels. At least one of read, folder, addLabelIds, or removeLabelIds is required.

Instructions

Purpose: Update one thread in a Resend inbox: mark it read or unread, move it to another folder, or add and remove labels. At least one of read, folder, addLabelIds, or removeLabelIds is required.

NOT for: Creating or deleting labels themselves (use create-inbox-label and remove-inbox-label), or deleting the thread (use remove-inbox-thread).

Returns: The thread's id, subject, folder, labels and read state after the update.

When to use: User asks to archive a thread, mark it read or unread, move it to spam or trash, or tag or untag it with a label. Moving a thread to trash schedules it for deletion in 30 days, the same as remove-inbox-thread. Moving a thread out of trash restores it and clears its deletion deadline. The changes apply in this order: read, folder, added labels, removed labels. They are not atomic: if a label ID is not found, the earlier changes stay applied. Get the thread ID from list-inbox-threads and the label IDs from list-inbox-labels.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
readNoMark every email in the thread as read (true) or unread (false).
folderNoFolder to move the thread to. Note that "sent" is not a valid destination: a thread can only be moved to inbox, archive, spam, or trash.
inboxIdYesInbox ID
threadIdYesThread ID
addLabelIdsNoID of the label to apply to this thread, or an array of up to 10 label IDs. A label ID cannot be both added and removed in the same call. Use list-inbox-labels to find label IDs.
removeLabelIdsNoID of the label to take off this thread, or an array of up to 10 label IDs. The label itself is kept, and stays on every other thread that carries it. A label ID cannot be both added and removed in the same call. Use list-inbox-labels to find label IDs.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.26.1

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give readOnlyHint=false/destructiveHint=false/openWorldHint=false; the description adds far more: the at-least-one-mutation constraint, the exact application order (read, folder, added labels, removed labels), non-atomicity on a missing label ID, and that moving to trash schedules deletion in 30 days while moving out restores the thread. That is precisely the mutation-risk context annotations do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with bolded section headers and logically ordered (Purpose, NOT for, Returns, When to use). Dense but nearly every sentence carries operative detail; the one cost is that the 'When to use' paragraph mixes routing guidance with semantics and non-atomicity warnings, making it longer than strictly needed at the top level.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description steps in by summarizing the return payload (id, subject, folder, labels, read state). Combined with the mutation ordering, non-atomicity, trash/restore semantics, and prerequisite ID sources, an agent has everything needed to invoke this tool correctly and predict consequences.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds a genuine cross-parameter constraint absent from the schema: at least one of read, folder, addLabelIds, or removeLabelIds is required (the schema itself only requires inboxId and threadId). It also restates the ordering dependency among the parameters, though enum and ID-source details are already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (update one thread in a Resend inbox) plus the exact mutation space: read state, folder, labels. It explicitly names the siblings it is not (create-inbox-label, remove-inbox-label, remove-inbox-thread), so an agent can separate it from neighboring inbox tools without opening their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'NOT for' section naming alternatives and a 'When to use' section keyed to user intents (archive, mark read/unread, move to spam/trash, tag/untag). It even routes the agent to list-inbox-threads and list-inbox-labels for the IDs it needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools