Skip to main content
Glama

Cooper Email

Get sending health

cooper_get_sending_status
Read-onlyIdempotent

Use this when you need to know whether this account can still send email, or why sending was paused. Read-only; requires auth and message_read. No inputs. The pause is account-wide, so an inbox-scoped key returns the same account status. Returns {object:"sending_status", status, reason, window_days, sent, bounced, complained, bounce_rate, complaint_rate, thresholds, paused_at, evaluated_at, resumes}. status is active, warning, or paused. reason is bounce_rate, complaint_rate, or null. Counts use the same trailing 7-day rules as cooper_get_metrics kind rates: sent is outbound messages, and bounced and complained are messages whose labels include those names. Below 50 sent messages the status is active. Warning starts at a bounce rate of 0.05 or a complaint rate of 0.001 and does not block sends. Sending pauses at a bounce rate of 0.10 with at least 5 bounces, or a complaint rate of 0.005 with at least 3 complaints. Bounce wins when both pause rules match. paused sends return HTTP 403 sending_paused and store nothing. Sending resumes automatically when the trailing 7-day rate falls below the pause threshold. A key without message_read returns 403 permission_denied.

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
sentNoMessages sent in the window.
objectNoObject type name, such as list, message, or thread.
reasonNoWhy the object is in its current state, or null.
statusNoactive or paused.
bouncedNoBounces in the window.
resumesNoHow sending resumes.
paused_atNoISO-8601 time sending paused, or null.
complainedNoComplaints in the window.
thresholdsNoRates that pause sending.
bounce_rateNoBounces divided by sends.
window_daysNoLength of the trailing window in days.
evaluated_atNoISO-8601 time the rates were computed.
complaint_rateNoComplaints divided by sends.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Whether sending is paused for bounces or complaints.",
      +  "properties": {
      +    "bounce_rate": {
      +      "description": "Bounces divided by sends."
      +    },
      +    "bounced": {
      +      "description": "Bounces in the window."
      +    },
      +    "complained": {
      +      "description": "Complaints in the window."
      +    },
      +    "complaint_rate": {
      +      "description": "Complaints divided by sends."
      +    },
      +    "evaluated_at": {
      +      "description": "ISO-8601 time the rates were computed."
      +    },
      +    "object": {
      +      "description": "Object type name, such as list, message, or thread."
      +    },
      +    "paused_at": {
      +      "description": "ISO-8601 time sending paused, or null."
      +    },
      +    "reason": {
      +      "description": "Why the object is in its current state, or null."
      +    },
      +    "resumes": {
      +      "description": "How sending resumes."
      +    },
      +    "sent": {
      +      "description": "Messages sent in the window."
      +    },
      +    "status": {
      +      "description": "active or paused."
      +    },
      +    "thresholds": {
      +      "description": "Rates that pause sending."
      +    },
      +    "window_days": {
      +      "description": "Length of the trailing window in days."
      +    }
      +  },
      +  "type": "object"
      +}
  2. Added

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the read-only, idempotent, and non-destructive annotations, it discloses authentication and message_read requirements, account-wide scope, minimum-volume behavior, exact warning and pause thresholds, nonblocking warnings, tie-breaking, automatic resumption, and permission errors. It also explains that paused sends return HTTP 403 sending_paused and store nothing, giving unusually complete operational context.

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?

The use case and operational constraints are front-loaded, and the dense sentences mostly contain actionable rules. However, it is a long single paragraph, and the read-only statement, no-input statement, and full return-field inventory substantially repeat structured metadata.

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 zero-input read with an output schema, the description covers scope, credentials and errors, status and reason values, counting rules, thresholds, pause effects, and recovery. An agent has enough information to select, invoke, and interpret the tool without guessing important behavior.

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?

There are no parameters, so the empty schema fully covers invocation and the zero-parameter baseline of 4 applies. The statement that there are no inputs confirms this, while the account-wide scope note usefully clarifies that an inbox-scoped key does not act as an inbox filter.

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?

The opening sentence clearly identifies an account-level email sendability check and pause-diagnosis operation, going well beyond the title. It does not explicitly distinguish this health verdict from cooper_get_metrics or another sibling; the later metrics reference explains shared counting rules rather than tool selection.

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?

The description gives two concrete triggers: determining whether the account can still send email and learning why sending was paused. It provides no explicit when-not guidance or direction to use cooper_get_metrics for general reporting, so alternative-based routing remains incomplete.

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.