Skip to main content
Glama
LeoPhoenixT

readNdraft IMAP MCP

by LeoPhoenixT

set_star_batch

Idempotent

Batch update the starred flag for 1-50 email identities at once, applying a single star or unstar state across selected messages.

Instructions

Set one starred state for 1-50 identities.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
starredYes
identitiesYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.11.0
    • changedOutput schema / $defs / BatchFlagChangeOutput / properties / error / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/$defs/SafeErrorOutput"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / $defs / BatchFlagChangeOutput / properties / error / title
      Removed value: -"Error"
    • addedOutput schema / $defs / SafeErrorOutput
      Added value: +{
      +  "properties": {
      +    "code": {
      +      "enum": [
      +        "partial_move",
      +        "permission_denied",
      +        "not_found",
      +        "invalid_request",
      +        "timeout",
      +        "rate_limited",
      +        "draft_busy",
      +        "recovery_required",
      +        "imap_error",
      +        "connection_error",
      +        "broker_error",
      +        "outcome_unknown"
      +      ],
      +      "title": "Code",
      +      "type": "string"
      +    },
      +    "message": {
      +      "title": "Message",
      +      "type": "string"
      +    },
      +    "reason": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "task_rate",
      +            "session_queue_timeout",
      +            "imap_worker_capacity",
      +            "ipc_helper_capacity",
      +            "request_deadline",
      +            "transport_loss"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "Reason"
      +    },
      +    "retry_after_seconds": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "Retry After Seconds"
      +    },
      +    "scope": {
      +      "enum": [
      +        "request",
      +        "item",
      +        "account",
      +        "broker",
      +        "client"
      +      ],
      +      "title": "Scope",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message",
      +    "scope",
      +    "reason",
      +    "retry_after_seconds"
      +  ],
      +  "title": "SafeErrorOutput",
      +  "type": "object"
      +}
  2. First observedv0.1.4

TDQS

B3.4/5.0
Behavior3/5

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

Annotations provide idempotentHint=true and destructiveHint=false, but the description does not add context beyond 'set one starred state.' It doesn't clarify that repeated calls with the same parameters are safe (idempotent), nor what happens if an identity is invalid. For a batch mutation, some behavioral detail is expected, but the annotations cover the core safety profile, so this is adequate yet not rich.

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?

Single sentence, no fluff, distinctly states the operation and the batch size. Perfectly sized; could be longer only if it added critical behavioral context, but for a simple operation it's efficient.

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

Completeness3/5

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

Output schema exists (IdentityOutput) but is not referenced, and the description doesn't mention expected return values or errors. Given the tool's simplicity (only two params, one boolean), it is mostly complete, but it lacks guidance on how to obtain valid identities and what happens if any identity is invalid. With siblings like set_read_state_batch, more differentiation would help.

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 has 0% description coverage, and the description does not elaborate on 'identities' or 'starred.' It only says 'Set one starred state,' which implies the boolean semantics of 'starred' but provides no detail on how identities should be structured (though it's a nested object in the schema). Since the description is the only source and it's minimal, but the schema self-documents parameter names and types, a baseline 3 is appropriate.

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

Purpose4/5

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

Description clearly states the action ('Set one starred state') and resource ('1-50 identities'), making it distinct from batch operations like set_read_state_batch or move_emails_batch. It doesn't explicitly name a sibling, but the verb+resource is specific enough. However, it could mention that it's the batch variant of set_star.

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

Usage Guidelines3/5

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

The description implies batch usage (1-50 identities) and mentions the starred state, but provides no explicit guidance on when to use this versus set_star or set_read_state_batch. It doesn't state exclusions or prerequisites, such as whether identities must come from a prior list call. This left to inference; the limit itself is useful but not enough to fully route an agent.

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