Skip to main content
Glama

list_webhook_deliveries

Read-onlyIdempotent

Read the latest 50 deliveries and their exact JSON payloads (identifiers, sender line, dates, matched terms; never page text) for one webhook. HTTP 2xx delivered means receipt, not external-agent processing. No signing secrets or receiver response body. Requires webhook.manage. Uses the same bounded control plane and tenant/agent/Live-Sandbox authorization as /api/v1/webhooks/endpoints. Reuse the exact idempotency_key and input after an uncertain mutation. Webhook docs: https://mailbox.bot/docs/webhooks.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
endpoint_idYesWebhook endpoint id (UUID) from list_webhook_endpoints.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / endpoint_id / description
      Added value: +"Webhook endpoint id (UUID) from list_webhook_endpoints."
  2. Changed14 schema fields changed
    • changedOutput schema / properties / result / properties / deliveries / items / properties / event_type / enum
      Previous value: -[
      -  "inbound.received",
      -  "inbound.scan_available",
      -  "inbound.context_ready",
      -  "inbound.rule_matched",
      -  "inbound.action_completed",
      -  "inbound.action_failed",
      -  "mail.submitted",
      -  "mail.ready",
      -  "mail.mailed",
      -  "mail.delivered",
      -  "mail.failed",
      -  "mail.cancelled",
      -  "mail.pending_approval",
      -  "webhook.endpoint_verification",
      -  "webhook.test"
      -]New value: +[
      +  "inbound.received",
      +  "inbound.action.requested",
      +  "inbound.action.completed",
      +  "inbound.pages_ready",
      +  "inbound.keywords_matched",
      +  "webhook.test"
      +]
    • addedOutput schema / properties / result / properties / deliveries / items / properties / item_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "uuid",
      +      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / result / properties / deliveries / items / properties / last_error / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "http_error",
      -      "timeout",
      -      "network_error",
      -      "url_blocked",
      -      "dns_failed",
      -      "dns_timeout",
      -      "verification_failed",
      -      "invalid_response",
      -      "worker_failed",
      -      "lease_expired",
      -      "endpoint_changed",
      -      "endpoint_paused",
      -      "agent_unavailable"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "http_error",
      +      "timeout",
      +      "network_error",
      +      "url_blocked",
      +      "dns_failed",
      +      "dns_timeout",
      +      "invalid_response",
      +      "worker_failed",
      +      "lease_expired",
      +      "endpoint_changed",
      +      "endpoint_paused",
      +      "agent_unavailable"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / result / properties / deliveries / items / properties / payload / properties / action
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "id": {
      +      "format": "uuid",
      +      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +      "type": "string"
      +    },
      +    "state": {
      +      "maxLength": 40,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "type": {
      +      "enum": [
      +        "scan",
      +        "forward",
      +        "discard"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "type",
      +    "state"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / result / properties / deliveries / items / properties / payload / properties / api_url
      Added value: +{
      +  "pattern": "^https:\\/\\/mailbox\\.bot\\/api\\/v1\\/inbound-items\\/[a-f0-9-]{36}$",
      +  "type": "string"
      +}
    • removedOutput schema / properties / result / properties / deliveries / items / properties / payload / properties / data
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "agent_id": {
      -      "anyOf": [
      -        {
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ]
      -    },
      -    "assignment_revision": {
      -      "maximum": 9007199254740991,
      -      "minimum": 0,
      -      "type": "integer"
      -    },
      -    "bundle_id": {
      -      "description": "Immutable captured scan bundle. Must occur with request_id; verify it equals the authorized captured-scan response's scan.bundle_id.",
      -      "format": "uuid",
      -      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -      "type": "string"
      -    },
      -    "challenge": {
      -      "pattern": "^[A-Za-z0-9_-]{32,128}$",
      -      "type": "string"
      -    },
      -    "context_version": {
      -      "pattern": "^[a-f0-9]{64}$",
      -      "type": "string"
      -    },
      -    "item_id": {
      -      "format": "uuid",
      -      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -      "type": "string"
      -    },
      -    "matched_rule_ids": {
      -      "items": {
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      },
      -      "maxItems": 10,
      -      "type": "array"
      -    },
      -    "ocr_status": {
      -      "enum": [
      -        "pending",
      -        "processing",
      -        "ready",
      -        "needs_review",
      -        "failed"
      -      ],
      -      "type": "string"
      -    },
      -    "reference_code": {
      -      "maxLength": 100,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "request_id": {
      -      "description": "Captured sample handling request. Must occur with bundle_id and item_id, only for member_sample/test scan_available, context_ready or rule_matched; never with context_version.",
      -      "format": "uuid",
      -      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -      "type": "string"
      -    },
      -    "resource_url": {
      -      "format": "uri",
      -      "maxLength": 2048,
      -      "type": "string"
      -    },
      -    "source_domain": {
      -      "enum": [
      -        "managed_inbound",
      -        "internal_team",
      -        "member_sample",
      -        "sandbox",
      -        "outbound",
      -        "control"
      -      ],
      -      "type": "string"
      -    }
      -  },
      -  "type": "object"
      -}
    • changedOutput schema / properties / result / properties / deliveries / items / properties / payload / properties / event_type / enum
      Previous value: -[
      -  "inbound.received",
      -  "inbound.scan_available",
      -  "inbound.context_ready",
      -  "inbound.rule_matched",
      -  "inbound.action_completed",
      -  "inbound.action_failed",
      -  "mail.submitted",
      -  "mail.ready",
      -  "mail.mailed",
      -  "mail.delivered",
      -  "mail.failed",
      -  "mail.cancelled",
      -  "mail.pending_approval",
      -  "webhook.endpoint_verification",
      -  "webhook.test"
      -]New value: +[
      +  "inbound.received",
      +  "inbound.action.requested",
      +  "inbound.action.completed",
      +  "inbound.pages_ready",
      +  "inbound.keywords_matched",
      +  "webhook.test"
      +]
    • addedOutput schema / properties / result / properties / deliveries / items / properties / payload / properties / item
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "id": {
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "kind": {
      +          "enum": [
      +            "letter",
      +            "package"
      +          ],
      +          "type": "string"
      +        },
      +        "pages": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "contents": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "envelope": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "envelope",
      +            "contents"
      +          ],
      +          "type": "object"
      +        },
      +        "received_at": {
      +          "format": "date-time",
      +          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      +          "type": "string"
      +        },
      +        "reference": {
      +          "maxLength": 100,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "scanned_at": {
      +          "anyOf": [
      +            {
      +              "format": "date-time",
      +              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "sender": {
      +          "anyOf": [
      +            {
      +              "maxLength": 200,
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "status": {
      +          "maxLength": 40,
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "reference",
      +        "kind",
      +        "sender",
      +        "received_at",
      +        "scanned_at",
      +        "status",
      +        "pages"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / result / properties / deliveries / items / properties / payload / properties / keywords
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "matched_terms": {
      +            "items": {
      +              "maxLength": 80,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "maxItems": 20,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "page_numbers": {
      +            "items": {
      +              "maximum": 100,
      +              "minimum": 1,
      +              "type": "integer"
      +            },
      +            "maxItems": 100,
      +            "type": "array"
      +          },
      +          "rule": {
      +            "maxLength": 80,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "rule_id": {
      +            "format": "uuid",
      +            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +            "type": "string"
      +          },
      +          "where": {
      +            "enum": [
      +              "envelope",
      +              "contents"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "rule_id",
      +          "rule",
      +          "matched_terms",
      +          "where",
      +          "page_numbers"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 10,
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / result / properties / deliveries / items / properties / payload / properties / pages_url
      Added value: +{
      +  "pattern": "^https:\\/\\/mailbox\\.bot\\/api\\/v1\\/inbound-items\\/[a-f0-9-]{36}\\/pages$",
      +  "type": "string"
      +}
    • addedOutput schema / properties / result / properties / deliveries / items / properties / payload / properties / sample
      Added value: +{
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / result / properties / deliveries / items / properties / payload / properties / schema_version / const
      Previous value: -1New value: +2
    • changedOutput schema / properties / result / properties / deliveries / items / properties / payload / required
      Previous value: -[
      -  "schema_version",
      -  "event_id",
      -  "event_type",
      -  "created_at",
      -  "environment",
      -  "data"
      -]New value: +[
      +  "schema_version",
      +  "event_id",
      +  "event_type",
      +  "created_at",
      +  "environment",
      +  "sample",
      +  "item",
      +  "keywords"
      +]
    • changedOutput schema / properties / result / properties / deliveries / items / required
      Previous value: -[
      -  "id",
      -  "endpoint_id",
      -  "endpoint_revision",
      -  "event_id",
      -  "event_type",
      -  "environment",
      -  "status",
      -  "attempts",
      -  "payload",
      -  "created_at",
      -  "next_attempt_at",
      -  "completed_at",
      -  "last_http_status",
      -  "last_error"
      -]New value: +[
      +  "id",
      +  "endpoint_id",
      +  "endpoint_revision",
      +  "event_id",
      +  "event_type",
      +  "environment",
      +  "item_id",
      +  "status",
      +  "attempts",
      +  "payload",
      +  "created_at",
      +  "next_attempt_at",
      +  "completed_at",
      +  "last_http_status",
      +  "last_error"
      +]
  3. Changed2 schema fields changed
    • addedOutput schema / properties / result / properties / deliveries / items / properties / payload / properties / data / properties / bundle_id
      Added value: +{
      +  "description": "Immutable captured scan bundle. Must occur with request_id; verify it equals the authorized captured-scan response's scan.bundle_id.",
      +  "format": "uuid",
      +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +  "type": "string"
      +}
    • addedOutput schema / properties / result / properties / deliveries / items / properties / payload / properties / data / properties / request_id
      Added value: +{
      +  "description": "Captured sample handling request. Must occur with bundle_id and item_id, only for member_sample/test scan_available, context_ready or rule_matched; never with context_version.",
      +  "format": "uuid",
      +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +  "type": "string"
      +}
  4. Added

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations, the description discloses many operational traits: only the latest 50 deliveries, exact payload fields included and excluded, no signing secrets or receiver response body, and that HTTP 2xx means receipt rather than external-agent processing. It also states the required permission and authorization model.

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 key scope is front-loaded and the description is dense with useful constraints. However, the sentence about reusing an idempotency_key after an uncertain mutation is irrelevant to this read-only listing tool and slightly harms focus.

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?

The description covers return content, exclusions, limits, permissions, and authorization context, which is strong for a one-parameter tool with an output schema. The stray idempotency_key guidance is not applicable and prevents a perfect score.

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 sole endpoint_id parameter is already fully documented. The description adds no additional parameter semantics and mentions an idempotency_key that is not actually an input parameter, which is potentially misleading.

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?

The description gives a specific verb and resource: read the latest 50 deliveries and their exact JSON payloads for one webhook. It also scopes what is included and excluded (identifiers, sender line, dates, matched terms; never page text), making it clearly distinguishable from endpoint-listing or replay tools.

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?

It establishes clear context: read deliveries for one webhook, requires webhook.manage, and shares the authorization model of the webhooks endpoints API. It does not explicitly name alternatives such as replay_webhook_delivery or list_webhook_endpoints, and the idempotency_key sentence is confusing for a read-only tool.

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.