Skip to main content
Glama

Cooper Email

Get idempotency key

cooper_get_idempotency_key
Read-onlyIdempotent

Use this to see whether an Idempotency-Key is in progress, done, or unknown. Read-only; requires auth and message_read. Inputs: key (required; the Idempotency-Key value). Returns {key, state, endpoint, inbox_id, message_id, created_at, expires_at, unknown_since?, last_error?}. state is in_progress, done, or unknown. unknown means an earlier send may or may not have been delivered. A missing key is HTTP 404 idempotency_key_not_found. An inbox-scoped key only sees a row for its inbox.

Input Schema

NameRequiredDescriptionDefault
keyYesIdempotency-Key value, 1 to 256 characters of letters, digits, and - . _ ~.

Output Schema

NameRequiredDescriptionDefault
keyNoThe Idempotency-Key value.
stateNoin_progress, done, or unknown.
endpointNoEndpoint the key was used on.
inbox_idNoInbox id (inb_…) this object belongs to. Null when it applies to every inbox.
releasedNoTrue when the key was released for reuse.
created_atNoISO-8601 time the object was created.
expires_atNoISO-8601 time the object expires, or null for no expiry.
last_errorNoLast error seen for this key, when any.
message_idNoMessage id (msg_…) this result refers to.
unknown_sinceNoISO-8601 time the outcome became unknown, when it did.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "The idempotency key and its state.",
      +  "properties": {
      +    "created_at": {
      +      "description": "ISO-8601 time the object was created."
      +    },
      +    "endpoint": {
      +      "description": "Endpoint the key was used on."
      +    },
      +    "expires_at": {
      +      "description": "ISO-8601 time the object expires, or null for no expiry."
      +    },
      +    "inbox_id": {
      +      "description": "Inbox id (inb_…) this object belongs to. Null when it applies to every inbox."
      +    },
      +    "key": {
      +      "description": "The Idempotency-Key value."
      +    },
      +    "last_error": {
      +      "description": "Last error seen for this key, when any."
      +    },
      +    "message_id": {
      +      "description": "Message id (msg_…) this result refers to."
      +    },
      +    "released": {
      +      "description": "True when the key was released for reuse."
      +    },
      +    "state": {
      +      "description": "in_progress, done, or unknown."
      +    },
      +    "unknown_since": {
      +      "description": "ISO-8601 time the outcome became unknown, when it did."
      +    }
      +  },
      +  "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 beyond the annotations (readOnlyHint, idempotentHint, openWorldHint=false) by disclosing the auth/scope requirement ('requires auth and message_read'), the specific error path ('HTTP 404 idempotency_key_not_found' for a missing key), and the scoping subtlety that 'an inbox-scoped key only sees a row for its inbox.' It also explains the semantically ambiguous 'unknown' state, which the annotations cannot express.

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-loaded with purpose, then inputs, then return shape, then states, then error and scoping edge cases — a well-ordered spec-style layout. Slight redundancy: the three states are listed in the opening sentence and then re-enumerated in 'state is in_progress, done, or unknown,' which duplicates rather than adds.

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 single-parameter read tool with an output schema, the description is complete: purpose, required scope, return fields (though the output schema carries those), error semantics, and the inbox-scoping caveat that could otherwise cause an agent to misinterpret a 404 or a missing row. Nothing needed to call it correctly is absent.

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 single parameter's format (1-256 chars, allowed character set) is already fully documented in the schema. The description only restates 'key (required; the Idempotency-Key value)' and adds the mild extra that keys can be inbox-scoped, which affects which row is visible; that is a marginal gain over the schema baseline.

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 ('see whether an Idempotency-Key is in progress, done, or unknown') and enumerates the exact states it returns, so an agent knows precisely what question this tool answers. It is distinguishable from the mutating siblings cooper_resolve_idempotency_key and cooper_release_idempotency_key by being framed purely as a status read.

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?

Clear context for use is given: checking whether an earlier send is in flight, completed, or of unknown delivery status, plus the caveat that 'unknown means an earlier send may or may not have been delivered.' What's missing is explicit routing to alternatives (resolve/release) or a when-not-to-use condition, so the agent must infer that this tool only reads and never mutates the key.

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.