---
title: "Team inbox"
description: "Assign threads, mark them done and comment as a team."
url: "https://openemail.uk/docs/mcp/tools/team-inbox"
area: "MCP server"
category: "Tools"
---

# Team inbox

Assign threads, mark them done and comment as a team.

## Team inbox tools

| Tool | What it does |
| --- | --- |
| getThreadTeam | Who has a thread, who marked it done, how many comments it has, who else is replying, and everyone who can see it. |
| assignThread | Give a thread to one person who can see it, who is emailed, or to nobody. |
| markThreadsDone | Archive threads for everyone and record who marked them done. |
| reopenThreads | Move done threads back to the inbox for everyone. |
| listThreadComments | The team comments on a thread, oldest first. The sender never sees them. |
| addThreadComment | Comment on a thread for the team, emailing the people it mentions. |
| updateThreadComment | Change the text and the mentions of a comment you wrote. |
| deleteThreadComment | Delete a comment for good. Its author can, and so can the workspace owner. |

> Only people who can see a thread can be given it or mentioned on it: the workspace owner, members who reach every address, and members who hold its address or its domain. Reading needs `threads:read` and changing needs `threads:write`.

> In the app’s chat, assigning, marking done, reopening and changing comments ask first unless you asked for them.

## Reference

### `getThreadTeam`

Who has an email thread on the team: who it is assigned to, who marked it done, how many comments it has, who else is writing a reply right now, and everyone who can see it, with the ids assignThread and the comment tools take.

- Scopes: `threads:read`.
- The app's assistant runs it without asking.
- Toolkit: `core`.

**Inputs**

- `threadId` (`string`, required, not empty)

Also available in: API [`GET /threads/{id}/team`](https://openemail.uk/docs/api/reference/team-inbox#get-threads-id-team); TypeScript [`nextmail.threads.getTeam()`](https://openemail.uk/docs/sdk/reference/threads#getTeam); Python [`threads.get_team()`](https://openemail.uk/docs/python/reference/threads#getTeam); Ruby [`threads.get_team`](https://openemail.uk/docs/ruby/reference/threads#getTeam); PHP [`threads->getTeam`](https://openemail.uk/docs/php/reference/threads#getTeam); Go [`Threads.GetTeam`](https://openemail.uk/docs/go/reference/threads#getTeam); Java [`threads().getTeam`](https://openemail.uk/docs/java/reference/threads#getTeam); C# [`Threads.GetTeamAsync`](https://openemail.uk/docs/csharp/reference/threads#getTeam).

### `assignThread`

Give an email thread to one person on the team, who is emailed unless it is the caller. assigneeId has to be somebody getThreadTeam lists as able to see it. null unassigns it.

- Scopes: `threads:write`.
- The app's assistant asks first unless you asked for it.
- Toolkit: `core`.

**Inputs**

- `threadId` (`string`, required, not empty)
- `assigneeId` (`string`, required, nullable, 1 to 128 characters)

Also available in: API [`DELETE /threads/{id}/assignee`](https://openemail.uk/docs/api/reference/team-inbox#delete-threads-id-assignee), [`PUT /threads/{id}/assignee`](https://openemail.uk/docs/api/reference/team-inbox#put-threads-id-assignee); TypeScript [`nextmail.threads.unassign()`](https://openemail.uk/docs/sdk/reference/threads#unassign), [`nextmail.threads.assign()`](https://openemail.uk/docs/sdk/reference/threads#assign); Python [`threads.unassign()`](https://openemail.uk/docs/python/reference/threads#unassign), [`threads.assign()`](https://openemail.uk/docs/python/reference/threads#assign); Ruby [`threads.unassign`](https://openemail.uk/docs/ruby/reference/threads#unassign), [`threads.assign`](https://openemail.uk/docs/ruby/reference/threads#assign); PHP [`threads->unassign`](https://openemail.uk/docs/php/reference/threads#unassign), [`threads->assign`](https://openemail.uk/docs/php/reference/threads#assign); Go [`Threads.Unassign`](https://openemail.uk/docs/go/reference/threads#unassign), [`Threads.Assign`](https://openemail.uk/docs/go/reference/threads#assign); Java [`threads().unassign`](https://openemail.uk/docs/java/reference/threads#unassign), [`threads().assign`](https://openemail.uk/docs/java/reference/threads#assign); C# [`Threads.UnassignAsync`](https://openemail.uk/docs/csharp/reference/threads#unassign), [`Threads.AssignAsync`](https://openemail.uk/docs/csharp/reference/threads#assign).

### `markThreadsDone`

Mark email threads done for the whole team: each moves to the archive for everyone and records who did it. A new reply brings a thread back. reopenThreads undoes it.

- Scopes: `threads:write`.
- The app's assistant asks first unless you asked for it.
- Toolkit: `core`.

**Inputs**

- `threadIds` (`string[]`, required, 1 to 1000 items)

Also available in: API [`POST /threads/{id}/done`](https://openemail.uk/docs/api/reference/team-inbox#post-threads-id-done); TypeScript [`nextmail.threads.markDone()`](https://openemail.uk/docs/sdk/reference/threads#markDone); Python [`threads.mark_done()`](https://openemail.uk/docs/python/reference/threads#markDone); Ruby [`threads.mark_done`](https://openemail.uk/docs/ruby/reference/threads#markDone); PHP [`threads->markDone`](https://openemail.uk/docs/php/reference/threads#markDone); Go [`Threads.MarkDone`](https://openemail.uk/docs/go/reference/threads#markDone); Java [`threads().markDone`](https://openemail.uk/docs/java/reference/threads#markDone); C# [`Threads.MarkDoneAsync`](https://openemail.uk/docs/csharp/reference/threads#markDone).

### `reopenThreads`

Move done email threads back to the inbox for the whole team.

- Scopes: `threads:write`.
- The app's assistant asks first unless you asked for it.
- Toolkit: `core`.

**Inputs**

- `threadIds` (`string[]`, required, 1 to 1000 items)

Also available in: API [`POST /threads/{id}/reopen`](https://openemail.uk/docs/api/reference/team-inbox#post-threads-id-reopen); TypeScript [`nextmail.threads.reopen()`](https://openemail.uk/docs/sdk/reference/threads#reopen); Python [`threads.reopen()`](https://openemail.uk/docs/python/reference/threads#reopen); Ruby [`threads.reopen`](https://openemail.uk/docs/ruby/reference/threads#reopen); PHP [`threads->reopen`](https://openemail.uk/docs/php/reference/threads#reopen); Go [`Threads.Reopen`](https://openemail.uk/docs/go/reference/threads#reopen); Java [`threads().reopen`](https://openemail.uk/docs/java/reference/threads#reopen); C# [`Threads.ReopenAsync`](https://openemail.uk/docs/csharp/reference/threads#reopen).

### `listThreadComments`

The team comments on an email thread, oldest first, each with the id the other comment tools take. The sender never sees them.

- Scopes: `threads:read`.
- The app's assistant runs it without asking.
- Toolkit: `core`.

**Inputs**

- `threadId` (`string`, required, not empty)

Also available in: API [`GET /threads/{id}/comments`](https://openemail.uk/docs/api/reference/team-inbox#get-threads-id-comments); TypeScript [`nextmail.threads.listComments()`](https://openemail.uk/docs/sdk/reference/threads#listComments); Python [`threads.list_comments()`](https://openemail.uk/docs/python/reference/threads#listComments); Ruby [`threads.list_comments`](https://openemail.uk/docs/ruby/reference/threads#listComments); PHP [`threads->listComments`](https://openemail.uk/docs/php/reference/threads#listComments); Go [`Threads.ListComments`](https://openemail.uk/docs/go/reference/threads#listComments); Java [`threads().listComments`](https://openemail.uk/docs/java/reference/threads#listComments); C# [`Threads.ListCommentsAsync`](https://openemail.uk/docs/csharp/reference/threads#listComments).

### `addThreadComment`

Comment on an email thread for the team. The sender never sees it. mentions are the ids of people to email about it, each one somebody getThreadTeam lists.

- Scopes: `threads:write`.
- The app's assistant asks first unless you asked for it.
- Toolkit: `core`.

**Inputs**

- `threadId` (`string`, required, not empty)
- `body` (`string`, required, 1 to 10000 characters)
- `mentions` (`string[]`, up to 20 items)

Also available in: API [`POST /threads/{id}/comments`](https://openemail.uk/docs/api/reference/team-inbox#post-threads-id-comments); TypeScript [`nextmail.threads.createComment()`](https://openemail.uk/docs/sdk/reference/threads#createComment); Python [`threads.create_comment()`](https://openemail.uk/docs/python/reference/threads#createComment); Ruby [`threads.create_comment`](https://openemail.uk/docs/ruby/reference/threads#createComment); PHP [`threads->createComment`](https://openemail.uk/docs/php/reference/threads#createComment); Go [`Threads.CreateComment`](https://openemail.uk/docs/go/reference/threads#createComment); Java [`threads().createComment`](https://openemail.uk/docs/java/reference/threads#createComment); C# [`Threads.CreateCommentAsync`](https://openemail.uk/docs/csharp/reference/threads#createComment).

### `updateThreadComment`

Change the text and mentions of a comment the caller wrote. Anybody newly mentioned is emailed. Take the comment id from listThreadComments.

- Scopes: `threads:write`.
- The app's assistant asks first unless you asked for it.
- Toolkit: `core`.

**Inputs**

- `threadId` (`string`, required, not empty)
- `commentId` (`string`, required, not empty)
- `body` (`string`, required, 1 to 10000 characters)
- `mentions` (`string[]`, up to 20 items)

Also available in: API [`PATCH /threads/{id}/comments/{commentId}`](https://openemail.uk/docs/api/reference/team-inbox#patch-threads-id-comments-commentid); TypeScript [`nextmail.threads.updateComment()`](https://openemail.uk/docs/sdk/reference/threads#updateComment); Python [`threads.update_comment()`](https://openemail.uk/docs/python/reference/threads#updateComment); Ruby [`threads.update_comment`](https://openemail.uk/docs/ruby/reference/threads#updateComment); PHP [`threads->updateComment`](https://openemail.uk/docs/php/reference/threads#updateComment); Go [`Threads.UpdateComment`](https://openemail.uk/docs/go/reference/threads#updateComment); Java [`threads().updateComment`](https://openemail.uk/docs/java/reference/threads#updateComment); C# [`Threads.UpdateCommentAsync`](https://openemail.uk/docs/csharp/reference/threads#updateComment).

### `deleteThreadComment`

Delete a comment from a thread for good. Its author can, and so can the workspace owner.

- Scopes: `threads:write`.
- The app's assistant asks first unless you asked for it.
- Toolkit: `core`.

**Inputs**

- `threadId` (`string`, required, not empty)
- `commentId` (`string`, required, not empty)

Also available in: API [`DELETE /threads/{id}/comments/{commentId}`](https://openemail.uk/docs/api/reference/team-inbox#delete-threads-id-comments-commentid); TypeScript [`nextmail.threads.deleteComment()`](https://openemail.uk/docs/sdk/reference/threads#deleteComment); Python [`threads.delete_comment()`](https://openemail.uk/docs/python/reference/threads#deleteComment); Ruby [`threads.delete_comment`](https://openemail.uk/docs/ruby/reference/threads#deleteComment); PHP [`threads->deleteComment`](https://openemail.uk/docs/php/reference/threads#deleteComment); Go [`Threads.DeleteComment`](https://openemail.uk/docs/go/reference/threads#deleteComment); Java [`threads().deleteComment`](https://openemail.uk/docs/java/reference/threads#deleteComment); C# [`Threads.DeleteCommentAsync`](https://openemail.uk/docs/csharp/reference/threads#deleteComment).
