Skip to main content
Glama

Cooper Email

List inboxes

cooper_list_inboxes
Read-onlyIdempotent

Use this when you need to know which inboxes exist on the signed-in account, for example to pick an inbox_id before sending or reading mail, or to tell the user their address. Read-only; requires auth. Inputs: status (optional; active or paused; omit to list every inbox), q (optional case-insensitive substring of email, username, or display_name; prefix matches come first), label (optional exact label), limit (optional; default 100, maximum 500), page_token (optional cursor). Returns {data:[{id, username, email, display_name, created_at, require_sender_auth, labels, expires_at, status, paused_at, metadata, client_id}], next_page_token}. A limit outside 1 to 500 returns HTTP 400 invalid_limit. A bad page_token returns HTTP 400 invalid_page_token. An unknown status returns 400 invalid_status.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qNoOptional case-insensitive substring of email, username, or display_name. Prefix matches are listed first. % and _ match those characters.
labelNoOptional exact label. Only inboxes that carry this label are returned.
limitNoPage size. Default 100. Maximum 500. Outside 1 to 500 returns invalid_limit.
statusNoOptional filter. active or paused. Omit to list every inbox.
page_tokenNoCursor from next_page_token. A bad token returns invalid_page_token.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / label
      Added value: +{
      +  "description": "Optional exact label. Only inboxes that carry this label are returned.",
      +  "type": "string"
      +}
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "Page size. Default 100. Maximum 500. Outside 1 to 500 returns invalid_limit.",
      +  "type": "number"
      +}
    • addedInput schema / properties / page_token
      Added value: +{
      +  "description": "Cursor from next_page_token. A bad token returns invalid_page_token.",
      +  "type": "string"
      +}
    • addedInput schema / properties / q
      Added value: +{
      +  "description": "Optional case-insensitive substring of email, username, or display_name. Prefix matches are listed first. % and _ match those characters.",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / status
      Added value: +{
      +  "description": "Optional filter. active or paused. Omit to list every inbox.",
      +  "enum": [
      +    "active",
      +    "paused"
      +  ],
      +  "type": "string"
      +}
  3. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent, but the description adds auth requirement, the exact error surface (400 invalid_limit, invalid_page_token, invalid_status with their triggering conditions), and the full return envelope with next_page_token. That is meaningful behavior disclosure well beyond the structured hints.

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?

A single dense paragraph but front-loaded with the use case, then safety, then inputs, then return shape, then error codes — a sensible order. It is long and duplicates several schema lines, so it is efficient rather than maximally tight.

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 carries return-value disclosure itself, and it does: field list inside data plus next_page_token, plus pagination and error semantics. Nothing an agent needs to call and page through this tool is missing.

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 description coverage is 100%, so the baseline is 3: the description largely restates schema text (status active/paused, limit default 100 max 500, page_token cursor, q substring/prefix ordering). It adds only the framing that omitting status lists every inbox, matching what the schema already says.

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 (list inboxes) scoped to the signed-in account, and goes further by naming the concrete downstream reason to call it (picking an inbox_id before send/read). An agent can distinguish this from get_inbox and create_inbox without opening any schema.

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?

Gives explicit triggering contexts ('when you need to know which inboxes exist... to pick an inbox_id before sending or reading mail, or to tell the user their address'), which is strong positive guidance. It does not explicitly name the alternative (cooper_get_inbox) or the condition that would select it over listing, so it stops short of full when-not routing.

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.