Skip to main content
Glama

Cooper Email

Release a thread assignment

cooper_unassign_thread
Idempotent

Use this when the assignee is done with a thread, or a worker should release its claim. Requires auth. Same permission as updating thread labels. Inputs: inbox_id (required; inbox id, username, or email), thread_id (required), assignee (optional). When assignee is set, the row is removed only if it is assigned to that handle or the claim has expired. An active claim or a plain assignment held by someone else returns HTTP 409 thread_claimed with assignee and claimed_until. Returns {assignment:null, released:true|false}. released is false when nothing is assigned. That call is idempotent and does not emit an event. A successful release emits thread.unassigned. Unknown thread returns HTTP 404 thread_not_found. Another account's inbox returns inbox_not_found. A bad assignee returns invalid_assignee.

Input Schema

NameRequiredDescriptionDefault
assigneeNoWhen set, release only if the thread is assigned to this handle, or the claim has expired.
inbox_idYesInbox id (inb_…), username, or full email address owned by this key
thread_idYesThread id (thr_…) to release

Output Schema

NameRequiredDescriptionDefault
releasedNoFalse when nothing was assigned.
assignmentNoAlways null after release.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "The release result.",
      +  "properties": {
      +    "assignment": {
      +      "description": "Always null after release."
      +    },
      +    "released": {
      +      "description": "False when nothing was assigned."
      +    }
      +  },
      +  "type": "object"
      +}
  2. Added

TDQS

A4.4/5.0
Behavior5/5

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

Goes well past the annotations, disclosing auth and permission requirements, the conditional delete semantics when assignee is set, the 409 thread_claimed conflict with assignee/claimed_until, idempotency and the absence of an event on a no-op, and the thread.unassigned event on success. It also enumerates the 404/not_found and invalid_assignee failure modes.

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-loads the trigger condition, then inputs, then behavior and error cases in a logical order with no filler sentences. It is dense but nearly every clause carries operational meaning; a small amount of compression via lists would help readability.

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?

For a mutating release tool with auth and conflict semantics, the description covers preconditions, conditional behavior, idempotency, side effects, and error responses. Even though an output schema exists, the explicit released:true|false note removes ambiguity about what success means.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all three parameters, and the description mostly restates them (inbox id/username/email, required/optional flags). The one addition beyond the schema is the interaction between assignee and the 409 claim-check, which is useful but marginal against a fully documented schema. Baseline 3 is appropriate.

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 and resource ('release a thread assignment') and opens with the exact situation that triggers it, so an agent can immediately contrast it with cooper_assign_thread. The scope is unambiguous, including the conditional-release nuance.

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

Usage Guidelines4/5

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

Explicitly gives the when-to-use conditions: 'when the assignee is done with a thread, or a worker should release its claim.' It doesn't name cooper_assign_thread as the inverse alternative, but the context is clear enough that an agent won't confuse the two.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.