post_webhooks_stripe_by_eventid_retry
Calls POST /webhooks/stripe/{eventId}/retry as the signed-in person · REST reference
Replay a Stripe event through the ledger by id
The one AUTHENTICATED route on this root-mounted router - it re-applies money-moving events, so it is platform staff only, unlike its sibling receivers. There is no local webhook store to replay from (deliveries are processed inline and never persisted), so Stripe's own event log is the source of truth - the event is re-fetched by id and run through exactly the same path as a live delivery. Re-running an already-applied event is a no-op (donations dedupe on the PaymentIntent id, reversals on the event id). Stripe retains events for 30 days; an older id 404s from Stripe and 404s here.
Arguments
| Argument | Type | Description | |
|---|---|---|---|
eventIdpath | string | required | Stripe event id (evt_...). |
Example call
A client sends this over the MCP session; Claude and other agents build it for you. The values are placeholders — the shape is real.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "post_webhooks_stripe_by_eventid_retry",
"arguments": {
"eventId": "string"
}
}
}Result
On success (HTTP 200) the tool returns one text item holding the API's JSON, pretty-printed.
The event was re-fetched and re-applied.
{
"eventId": "string",
"retried": true,
"type": "string"
}Fields
| Field | Type | Description |
|---|---|---|
eventId | string | |
retried | true | |
type | string | Stripe's event type. A type this router does not act on still answers 200 with retried: true - it is logged as ignored, not reported here. |
When it fails
A failed call returns isError: true with the API's message as text. A change the person declines, or lets time out, also comes back this way and nothing changes.
403Authenticated, but the caller holds none of the required permissions.
404Stripe has no such event (they are retained for 30 days).
What the model is shown
This is the tool exactly as the server lists it in tools/list. The description starts with the REST call it makes.
{
"name": "post_webhooks_stripe_by_eventid_retry",
"description": "POST /webhooks/stripe/{eventId}/retry — The one AUTHENTICATED route on this root-mounted router - it re-applies money-moving events, so it is platform staff only, unlike its sibling receivers. There is no local webhook store to replay from (deliveries are processed inline and never persisted), so Stripe's own event log is the source of truth - the event is re-fetched by id and run through exactly the same path as a live delivery. Re-running an already-applied event is a no-op (donations dedupe on the PaymentIntent id, reversals on the event id). Stripe retains events for 30 days; an older id 404s from Stripe and 404s here.\n\nThis changes data. The person is asked to confirm it before it runs, and nothing happens if they decline.",
"inputSchema": {
"type": "object",
"properties": {
"eventId": {
"type": "string",
"description": "Stripe event id (evt_...)."
}
},
"required": [
"eventId"
]
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": false,
"openWorldHint": false
}
}