Skip to main content
Glama

List sent emails

listSentEmails
Read-onlyIdempotent

List sent emails to audit delivery. Rows carry id, thread_id, created_at, status, from, to, subject and snippet, plus error_code, smtp_response_code or gates when a send did not deliver. Read one with getSentEmail. Result: sent_emails, cursor for the next page (null at the end), and total, total_capped and total_unavailable when set.

Input Schema

NameRequiredDescriptionDefault
fullNoReturn the stored record, with envelope addresses, the request id and every outcome field, instead of the compact view for reading.
limitNoHow many sends this call returns; follow cursor for more.
cursorNoWhere the next page starts: the cursor of the page before.
statusNoFilter to rows in this status. Use "scheduled" to find pending scheduled sends and "canceled" for ones already canceled.
date_toNoOnly rows whose created_at is at or before this; a bare date covers that whole day (UTC).
date_fromNoOnly rows whose created_at is at or after this date or time (UTC unless it has an offset).
request_idNoFilter to the row matching a specific server-issued request_id from a /send-mail response.
idempotency_keyNoFilter to rows with the given client idempotency key.

Output Schema

NameRequiredDescriptionDefault
totalNoMatches, when counted; absent when the count was skipped or ran out of time.
cursorYesPass as cursor for the next page; null at the end.
sent_emailsYesThe sends, newest first.
total_cappedNoTrue when total stopped at its cap and is a lower bound.
total_unavailableNoSet, true, when the count did not fit its time budget, so total is absent.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedOutput schema / properties / sent_emails / items / properties / hold
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Set only when held, until released.",
      +  "properties": {
      +    "reason": {
      +      "description": "Code.",
      +      "type": "string"
      +    },
      +    "since": {
      +      "description": "Since when.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "reason",
      +    "since"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / sent_emails / items / properties / status / description
      Previous value: -"queued, submitted_to_agent, delivered, bounced, deferred, wait_timeout, gate_denied, agent_failed, scheduled, canceled or unknown."New value: +"Delivery state."
    • addedOutput schema / properties / sent_emails / items / properties / status / enum
      Added value: +[
      +  "queued",
      +  "submitted_to_agent",
      +  "agent_failed",
      +  "gate_denied",
      +  "unknown",
      +  "delivered",
      +  "bounced",
      +  "deferred",
      +  "wait_timeout",
      +  "scheduled",
      +  "canceled"
      +]
  2. Changed3 schema fields changed
    • removedOutput schema / properties / sent_emails / items / properties / hold
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Set only when held, until released.",
      -  "properties": {
      -    "reason": {
      -      "description": "Code.",
      -      "type": "string"
      -    },
      -    "since": {
      -      "description": "Since when.",
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    }
      -  },
      -  "required": [
      -    "reason",
      -    "since"
      -  ],
      -  "type": "object"
      -}
    • changedOutput schema / properties / sent_emails / items / properties / status / description
      Previous value: -"Delivery state."New value: +"queued, submitted_to_agent, delivered, bounced, deferred, wait_timeout, gate_denied, agent_failed, scheduled, canceled or unknown."
    • removedOutput schema / properties / sent_emails / items / properties / status / enum
      Removed value: -[
      -  "queued",
      -  "submitted_to_agent",
      -  "agent_failed",
      -  "gate_denied",
      -  "unknown",
      -  "delivered",
      -  "bounced",
      -  "deferred",
      -  "wait_timeout",
      -  "scheduled",
      -  "canceled"
      -]
  3. Changed3 schema fields changed
    • addedOutput schema / properties / sent_emails / items / properties / hold
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Set only when held, until released.",
      +  "properties": {
      +    "reason": {
      +      "description": "Code.",
      +      "type": "string"
      +    },
      +    "since": {
      +      "description": "Since when.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "reason",
      +    "since"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / sent_emails / items / properties / status / description
      Previous value: -"queued, submitted_to_agent, delivered, bounced, deferred, wait_timeout, gate_denied, agent_failed, scheduled, canceled or unknown."New value: +"Delivery state."
    • addedOutput schema / properties / sent_emails / items / properties / status / enum
      Added value: +[
      +  "queued",
      +  "submitted_to_agent",
      +  "agent_failed",
      +  "gate_denied",
      +  "unknown",
      +  "delivered",
      +  "bounced",
      +  "deferred",
      +  "wait_timeout",
      +  "scheduled",
      +  "canceled"
      +]
  4. Changed14 schema fields changed
    • changedInput schema / properties / cursor / description
      Previous value: -"Where the next page starts: the meta.cursor of the page before."New value: +"Where the next page starts: the cursor of the page before."
    • changedInput schema / properties / full / description
      Previous value: -"Return the stored record, with hashes, message ids and signing details, instead of the compact view for reading."New value: +"Return the stored record, with envelope addresses, the request id and every outcome field, instead of the compact view for reading."
    • changedInput schema / properties / limit / description
      Previous value: -"How many sends this call returns; follow meta.cursor for more."New value: +"How many sends this call returns; follow cursor for more."
    • addedOutput schema / additionalProperties
      Added value: +false
    • changedOutput schema / description
      Previous value: -"Envelope; the result is in data.data."New value: +"A page of sent emails, and the cursor for the next."
    • addedOutput schema / properties / cursor
      Added value: +{
      +  "description": "Pass as cursor for the next page; null at the end.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • removedOutput schema / properties / data
      Removed value: -{
      -  "description": "API response: the result in data, or error.",
      -  "properties": {
      -    "data": {
      -      "description": "A page of sent emails.",
      -      "items": {
      -        "description": "One send; full adds stored fields.",
      -        "properties": {
      -          "canceled_at": {
      -            "description": "When canceled.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "created_at": {
      -            "description": "When it was sent or queued.",
      -            "type": "string"
      -          },
      -          "error_code": {
      -            "description": "Why not delivered.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "error_message": {
      -            "description": "Detail of the error.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "from": {
      -            "description": "Sender.",
      -            "type": "string"
      -          },
      -          "from_address": {
      -            "description": "Envelope sender.",
      -            "type": "string"
      -          },
      -          "gates": {
      -            "description": "Rules that refused it: name, reason.",
      -            "type": [
      -              "array",
      -              "null"
      -            ]
      -          },
      -          "id": {
      -            "description": "Sent email id, for getSentEmail.",
      -            "type": "string"
      -          },
      -          "in_reply_to_email_id": {
      -            "description": "Inbound email it answers.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "request_id": {
      -            "description": "For support.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "scheduled_at": {
      -            "description": "When it goes out.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "smtp_response_code": {
      -            "description": "Remote server code.",
      -            "type": [
      -              "number",
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "smtp_response_text": {
      -            "description": "Remote server reply.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "snippet": {
      -            "description": "Start of the body.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "status": {
      -            "description": "Delivery state, such as delivered or bounced.",
      -            "type": "string"
      -          },
      -          "subject": {
      -            "description": "Subject line.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "thread_id": {
      -            "description": "Conversation it belongs to.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "to": {
      -            "description": "Recipients.",
      -            "type": "string"
      -          },
      -          "to_address": {
      -            "description": "Envelope recipient.",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "type": [
      -        "array",
      -        "null"
      -      ]
      -    },
      -    "error": {
      -      "description": "Why the call was refused; absent on success.",
      -      "properties": {
      -        "code": {
      -          "description": "Error code to branch on.",
      -          "type": "string"
      -        },
      -        "message": {
      -          "description": "What went wrong, in words.",
      -          "type": "string"
      -        }
      -      },
      -      "type": [
      -        "object",
      -        "null"
      -      ]
      -    },
      -    "meta": {
      -      "description": "cursor for the next page, and total.",
      -      "type": [
      -        "object",
      -        "null"
      -      ]
      -    },
      -    "success": {
      -      "description": "True when data holds the result.",
      -      "type": "boolean"
      -    }
      -  },
      -  "type": "object"
      -}
    • addedOutput schema / properties / sent_emails
      Added value: +{
      +  "description": "The sends, newest first.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "canceled_at": {
      +        "description": "When a scheduled send was canceled.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "created_at": {
      +        "description": "When it was sent or queued.",
      +        "type": "string"
      +      },
      +      "error_code": {
      +        "description": "Set when it was not delivered: why, as a code.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "error_message": {
      +        "description": "Set when it was not delivered: why, in words.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "from": {
      +        "description": "Sender, as the From header shows it.",
      +        "type": "string"
      +      },
      +      "from_address": {
      +        "description": "full only: envelope sender address.",
      +        "type": "string"
      +      },
      +      "gates": {
      +        "description": "Set when rules refused it: which ones.",
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "message": {
      +              "description": "Why, in words, when given.",
      +              "type": "string"
      +            },
      +            "name": {
      +              "description": "Rule that refused it, such as send_to_known_addresses.",
      +              "type": "string"
      +            },
      +            "reason": {
      +              "description": "Why, as a code, when given.",
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "type": [
      +          "array",
      +          "null"
      +        ]
      +      },
      +      "id": {
      +        "description": "Sent email id, for getSentEmail.",
      +        "type": "string"
      +      },
      +      "in_reply_to_email_id": {
      +        "description": "Set when it answers an inbound email: its id, for getEmail.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "request_id": {
      +        "description": "full only: id of the send request, for support.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "scheduled_at": {
      +        "description": "When a scheduled send goes out.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "smtp_response_code": {
      +        "description": "Remote server reply code, such as 550. Compact rows leave it out once delivered.",
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "smtp_response_text": {
      +        "description": "Remote server reply text. Compact rows leave it out once delivered.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "snippet": {
      +        "description": "Start of the body; null when there is none.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "description": "queued, submitted_to_agent, delivered, bounced, deferred, wait_timeout, gate_denied, agent_failed, scheduled, canceled or unknown.",
      +        "type": "string"
      +      },
      +      "subject": {
      +        "description": "Subject line.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "thread_id": {
      +        "description": "Conversation id; null when it is in none.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "to": {
      +        "description": "Recipients, as the To header shows them.",
      +        "type": "string"
      +      },
      +      "to_address": {
      +        "description": "full only: envelope recipient address.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "thread_id",
      +      "created_at",
      +      "status",
      +      "from",
      +      "to",
      +      "subject",
      +      "snippet"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / status
      Removed value: -{
      -  "description": "HTTP status; 2xx on success.",
      -  "type": "number"
      -}
    • removedOutput schema / properties / tool
      Removed value: -{
      -  "description": "Tool that answered.",
      -  "type": "string"
      -}
    • addedOutput schema / properties / total
      Added value: +{
      +  "description": "Matches, when counted; absent when the count was skipped or ran out of time.",
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / total_capped
      Added value: +{
      +  "description": "True when total stopped at its cap and is a lower bound.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / total_unavailable
      Added value: +{
      +  "description": "Set, true, when the count did not fit its time budget, so total is absent.",
      +  "type": "boolean"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "tool",
      -  "status",
      -  "data"
      -]New value: +[
      +  "sent_emails",
      +  "cursor"
      +]
  5. Changed8 schema fields changed
    • changedOutput schema / properties / data / description
      Previous value: -"API response; result in data."New value: +"API response: the result in data, or error."
    • changedOutput schema / properties / data / properties / error / description
      Previous value: -"Refusal: code, message."New value: +"Why the call was refused; absent on success."
    • addedOutput schema / properties / data / properties / error / properties
      Added value: +{
      +  "code": {
      +    "description": "Error code to branch on.",
      +    "type": "string"
      +  },
      +  "message": {
      +    "description": "What went wrong, in words.",
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / data / properties / error / type
      Added value: +[
      +  "object",
      +  "null"
      +]
    • changedOutput schema / properties / data / properties / success / description
      Previous value: -"Accepted."New value: +"True when data holds the result."
    • changedOutput schema / properties / data / type
      Previous value: -[
      -  "object",
      -  "string",
      -  "null"
      -]New value: +"object"
    • changedOutput schema / properties / status / description
      Previous value: -"HTTP status."New value: +"HTTP status; 2xx on success."
    • addedOutput schema / properties / tool / description
      Added value: +"Tool that answered."
  6. Changed4 schema fields changed
    • changedOutput schema / description
      Previous value: -"A page of sent emails."New value: +"Envelope; the result is in data.data."
    • changedOutput schema / properties / data / description
      Previous value: -"API body."New value: +"API response; result in data."
    • addedOutput schema / properties / data / properties / data / description
      Added value: +"A page of sent emails."
    • changedOutput schema / properties / data / properties / error / description
      Previous value: -"Why refused."New value: +"Refusal: code, message."
  7. Changed1 schema field changed
    • changedInput schema / properties / limit / description
      Previous value: -"Rows per page. Ask for fewer when you only need recent sends."New value: +"How many sends this call returns; follow meta.cursor for more."
  8. Changed18 schema fields changed
    • changedInput schema / properties / cursor / description
      Previous value: -"Pagination cursor from a previous response's `meta.cursor` field."New value: +"Where the next page starts: the meta.cursor of the page before."
    • changedInput schema / properties / date_from / description
      Previous value: -"Earliest created_at to include, as a date or a date-time; times without an offset are UTC."New value: +"Only rows whose created_at is at or after this date or time (UTC unless it has an offset)."
    • changedInput schema / properties / date_to / description
      Previous value: -"Latest created_at to include, as a date or a date-time; times without an offset are UTC."New value: +"Only rows whose created_at is at or before this; a bare date covers that whole day (UTC)."
    • changedInput schema / properties / full / description
      Previous value: -"Set true for the stored record, with hashes, message ids and signing details; the default is a compact view for reading."New value: +"Return the stored record, with hashes, message ids and signing details, instead of the compact view for reading."
    • changedInput schema / properties / limit / description
      Previous value: -"How many to return per page; use meta.cursor for the next page."New value: +"Rows per page. Ask for fewer when you only need recent sends."
    • addedOutput schema / properties / data / properties / data / items / description
      Added value: +"One send; full adds stored fields."
    • addedOutput schema / properties / data / properties / data / items / properties / created_at / description
      Added value: +"When it was sent or queued."
    • addedOutput schema / properties / data / properties / data / items / properties / error_message / description
      Added value: +"Detail of the error."
    • addedOutput schema / properties / data / properties / data / items / properties / from / description
      Added value: +"Sender."
    • addedOutput schema / properties / data / properties / data / items / properties / from_address / description
      Added value: +"Envelope sender."
    • changedOutput schema / properties / data / properties / data / items / properties / gates / description
      Previous value: -"Rules that refused it."New value: +"Rules that refused it: name, reason."
    • addedOutput schema / properties / data / properties / data / items / properties / id / description
      Added value: +"Sent email id, for getSentEmail."
    • changedOutput schema / properties / data / properties / data / items / properties / status / description
      Previous value: -"Delivery status."New value: +"Delivery state, such as delivered or bounced."
    • addedOutput schema / properties / data / properties / data / items / properties / subject / description
      Added value: +"Subject line."
    • addedOutput schema / properties / data / properties / data / items / properties / thread_id / description
      Added value: +"Conversation it belongs to."
    • addedOutput schema / properties / data / properties / data / items / properties / to / description
      Added value: +"Recipients."
    • addedOutput schema / properties / data / properties / data / items / properties / to_address / description
      Added value: +"Envelope recipient."
    • changedOutput schema / properties / data / properties / meta / description
      Previous value: -"Paging cursor."New value: +"cursor for the next page, and total."
  9. Changed20 schema fields changed
    • changedInput schema / properties / date_from / description
      Previous value: -"Earliest created_at to include: a date-time (\"2026-10-01T09:00:00Z\", or with an offset) or a date (\"2026-10-01\", from 00:00 UTC). A time with no offset is read as UTC."New value: +"Earliest created_at to include, as a date or a date-time; times without an offset are UTC."
    • changedInput schema / properties / date_to / description
      Previous value: -"Latest created_at to include: a date-time (\"2026-10-01T09:00:00Z\", or with an offset) or a date (\"2026-10-01\", through the end of that day, UTC). A time with no offset is read as UTC."New value: +"Latest created_at to include, as a date or a date-time; times without an offset are UTC."
    • changedInput schema / properties / full / description
      Previous value: -"Set true for the record as stored. By default the result is a compact view for reading, which leaves out idempotency and content hashes, message ids, signing details and, for a delivered row, the SMTP response."New value: +"Set true for the stored record, with hashes, message ids and signing details; the default is a compact view for reading."
    • changedInput schema / properties / limit / description
      Previous value: -"Page size."New value: +"How many to return per page; use meta.cursor for the next page."
    • addedOutput schema / description
      Added value: +"A page of sent emails."
    • addedOutput schema / properties / data / description
      Added value: +"API body."
    • addedOutput schema / properties / data / properties / data / items / properties / canceled_at / description
      Added value: +"When canceled."
    • addedOutput schema / properties / data / properties / data / items / properties / error_code / description
      Added value: +"Why not delivered."
    • changedOutput schema / properties / data / properties / data / items / properties / gates / description
      Previous value: -"Sending rules that refused it."New value: +"Rules that refused it."
    • changedOutput schema / properties / data / properties / data / items / properties / in_reply_to_email_id / description
      Previous value: -"Inbound email this answers."New value: +"Inbound email it answers."
    • addedOutput schema / properties / data / properties / data / items / properties / request_id / description
      Added value: +"For support."
    • addedOutput schema / properties / data / properties / data / items / properties / scheduled_at / description
      Added value: +"When it goes out."
    • addedOutput schema / properties / data / properties / data / items / properties / smtp_response_code / description
      Added value: +"Remote server code."
    • addedOutput schema / properties / data / properties / data / items / properties / smtp_response_text / description
      Added value: +"Remote server reply."
    • addedOutput schema / properties / data / properties / data / items / properties / snippet / description
      Added value: +"Start of the body."
    • addedOutput schema / properties / data / properties / data / items / properties / status / description
      Added value: +"Delivery status."
    • addedOutput schema / properties / data / properties / error / description
      Added value: +"Why refused."
    • addedOutput schema / properties / data / properties / meta / description
      Added value: +"Paging cursor."
    • addedOutput schema / properties / data / properties / success / description
      Added value: +"Accepted."
    • addedOutput schema / properties / status / description
      Added value: +"HTTP status."
  10. Changed5 schema fields changed
    • changedInput schema / properties / date_from / description
      Previous value: -"Inclusive lower bound on created_at. An ISO 8601 date-time with Z or a UTC offset (\"2026-10-01T09:00:00Z\", \"2026-10-01T09:00:00-04:00\"), or a calendar date (\"2026-10-01\"), which starts at 00:00 UTC. A time with no offset is read as UTC."New value: +"Earliest created_at to include: a date-time (\"2026-10-01T09:00:00Z\", or with an offset) or a date (\"2026-10-01\", from 00:00 UTC). A time with no offset is read as UTC."
    • changedInput schema / properties / date_to / description
      Previous value: -"Inclusive upper bound on created_at. An ISO 8601 date-time with Z or a UTC offset (\"2026-10-01T09:00:00Z\", \"2026-10-01T09:00:00-04:00\"), or a calendar date (\"2026-10-01\"), which runs to the end of that day, UTC. A time with no offset is read as UTC."New value: +"Latest created_at to include: a date-time (\"2026-10-01T09:00:00Z\", or with an offset) or a date (\"2026-10-01\", through the end of that day, UTC). A time with no offset is read as UTC."
    • changedInput schema / properties / limit / description
      Previous value: -"Most sent emails to return in one page."New value: +"Page size."
    • addedOutput schema / properties / data / properties / data / items / properties / gates / description
      Added value: +"Sending rules that refused it."
    • addedOutput schema / properties / data / properties / data / items / properties / in_reply_to_email_id / description
      Added value: +"Inbound email this answers."
  11. Changed5 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of sent emails to return (1 to 100, default 50)."New value: +"Most sent emails to return in one page."
    • removedOutput schema / additionalProperties
      Removed value: -false
    • addedOutput schema / properties / data / properties
      Added value: +{
      +  "data": {
      +    "items": {
      +      "properties": {
      +        "canceled_at": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "created_at": {
      +          "type": "string"
      +        },
      +        "error_code": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "error_message": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "from": {
      +          "type": "string"
      +        },
      +        "from_address": {
      +          "type": "string"
      +        },
      +        "gates": {
      +          "type": [
      +            "array",
      +            "null"
      +          ]
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "in_reply_to_email_id": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "request_id": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "scheduled_at": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "smtp_response_code": {
      +          "type": [
      +            "number",
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "smtp_response_text": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "snippet": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "status": {
      +          "type": "string"
      +        },
      +        "subject": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "thread_id": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "to": {
      +          "type": "string"
      +        },
      +        "to_address": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "type": [
      +      "array",
      +      "null"
      +    ]
      +  },
      +  "error": {},
      +  "meta": {
      +    "type": [
      +      "object",
      +      "null"
      +    ]
      +  },
      +  "success": {
      +    "type": "boolean"
      +  }
      +}
    • addedOutput schema / properties / data / type
      Added value: +[
      +  "object",
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / statusText
      Removed value: -{
      -  "type": "string"
      -}
  12. Changed1 schema field changed
    • changedInput schema / properties / status / description
      Previous value: -"Filter to rows in this status. Use \"scheduled\" to find pending scheduled sends (cancelable via cancelScheduledSend) and \"canceled\" for ones already canceled."New value: +"Filter to rows in this status. Use \"scheduled\" to find pending scheduled sends and \"canceled\" for ones already canceled."
  13. Changed7 schema fields changed
    • changedInput schema / properties / date_from / description
      Previous value: -"Inclusive lower bound on created_at (ISO 8601)."New value: +"Inclusive lower bound on created_at. An ISO 8601 date-time with Z or a UTC offset (\"2026-10-01T09:00:00Z\", \"2026-10-01T09:00:00-04:00\"), or a calendar date (\"2026-10-01\"), which starts at 00:00 UTC. A time with no offset is read as UTC."
    • removedInput schema / properties / date_from / format
      Removed value: -"date-time"
    • changedInput schema / properties / date_to / description
      Previous value: -"Inclusive upper bound on created_at (ISO 8601)."New value: +"Inclusive upper bound on created_at. An ISO 8601 date-time with Z or a UTC offset (\"2026-10-01T09:00:00Z\", \"2026-10-01T09:00:00-04:00\"), or a calendar date (\"2026-10-01\"), which runs to the end of that day, UTC. A time with no offset is read as UTC."
    • removedInput schema / properties / date_to / format
      Removed value: -"date-time"
    • addedInput schema / properties / full
      Added value: +{
      +  "default": false,
      +  "description": "Set true for the record as stored. By default the result is a compact view for reading, which leaves out idempotency and content hashes, message ids, signing details and, for a delivered row, the SMTP response.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of sent emails to return (1–100, default 50)."New value: +"Maximum number of sent emails to return (1 to 100, default 50)."
    • changedInput schema / properties / limit / type
      Previous value: -"number"New value: +"integer"
  14. Changed2 schema fields changed
    • changedInput schema / properties / status / description
      Previous value: -"Filter to rows in this status."New value: +"Filter to rows in this status. Use \"scheduled\" to find pending scheduled sends (cancelable via cancelScheduledSend) and \"canceled\" for ones already canceled."
    • changedInput schema / properties / status / enum
      Previous value: -[
      -  "queued",
      -  "accepted",
      -  "delivered",
      -  "bounced",
      -  "gate_denied",
      -  "failed"
      -]New value: +[
      +  "queued",
      +  "submitted_to_agent",
      +  "agent_failed",
      +  "gate_denied",
      +  "unknown",
      +  "delivered",
      +  "bounced",
      +  "deferred",
      +  "wait_timeout",
      +  "scheduled",
      +  "canceled"
      +]
  15. Changed3 schema fields changed
    • changedInput schema / properties / date_from / description
      Previous value: -"Inclusive lower bound on created_at."New value: +"Inclusive lower bound on created_at (ISO 8601)."
    • changedInput schema / properties / date_to / description
      Previous value: -"Inclusive upper bound on created_at."New value: +"Inclusive upper bound on created_at (ISO 8601)."
    • addedInput schema / properties / limit / description
      Added value: +"Maximum number of sent emails to return (1–100, default 50)."
  16. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed world), yet the description still adds real value: which fields each row carries, that failed sends expose error_code/smtp_response_code/gates, and how pagination terminates (cursor null at the end). It does not discuss permissions or result-size limits, but for a read-only list tool this is solid added 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?

Three tight sentences, front-loaded with purpose then payload then result shape, with zero filler. The middle sentence's dense field enumeration is justified by the audit use case but is the only slightly heavy part.

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

Completeness4/5

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

For a read-only filtered list tool with full schema coverage, output schema and rich annotations, the description supplies enough: purpose, row shape, failure fields, pagination, and the single-record alternative. The redundant result-shape sentence partially duplicates the output schema but does no harm.

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% and each filter is already documented in the schema, so the baseline is 3. The description adds only one semantic detail beyond the schema — that the returned cursor is null on the last page — and says nothing about how full/limit/status interplay in practice, so it does not exceed the schema-meaning bar.

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 ('List sent emails') plus the motivating use case ('to audit delivery'), and explicitly contrasts with the sibling getSentEmail ('Read one with getSentEmail'). An agent can distinguish it from listEmails/searchEmails/getSentEmail without opening a 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 a clear context ('to audit delivery') and a named alternative with the condition that selects it ('Read one with getSentEmail'). It does not state when to prefer listEmails or searchEmails, so the routing guidance is clear but not exhaustive.

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.

Resources