Version
READ

list_checkouts

List the checkouts a project's members started on the portal or in a bot — the member, the plan, the rail, when it stalled and what became of it. Read-only. Paginated, narrowed to the stalled or the recovered ones, one plan or one member.

Read the checkout ledger behind Lead nurture's stalled-checkout trigger: every checkout a member started on the portal or in a bot, newest first, with the member, the plan they were buying, the rail (provider) and where they started (surface), the order reference the rail was given, when it started, when the hourly sweep counted it as stalled (stalled_at, once the project's checkout window passed with no settled charge) and when a charge finished it (completed_at with payment_id), summed up as outcome. enrollment_id names the stalled-checkout sequence passage the stall opened.

Read-only. Never mutates anything.

Four outcomes, three stamps

open while nothing has settled and the sweep has not counted it; stalled once the project's checkout window passed with no settled charge; recovered when a charge settled after that; completed when a charge settled before it could stall, or the sweep closed it quietly because the member already held a live membership. An access code redemption or a free trial start is not a checkout and never appears here.

The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.

The REST endpoint and this tool share one action, so validation, permissions and events are identical.

Annotations

Read-only

It reads and never changes anything.

Arguments

project_id*string

UUID of the project whose checkouts to list.

stalledbooleanoptional

Optional: true for the checkouts the hourly sweep counted as stalled, false for the ones it never did.

recoveredbooleanoptional

Optional: true for the stalled checkouts a charge finished after all, false for the stalled ones still open.

plan_idstringoptional

Optional: UUID of one plan, to keep the checkouts of that plan.

member_idstringoptional

Optional: UUID of one member, to keep their checkouts.

limitintegeroptional

Maximum rows to return per page (1..100).

min1max100
pageintegeroptional

1-indexed page number.

min1

What it returns

{  "data": [    {      "id": "5c6d7e8f-9a0b-4c1d-8e2f-3a4b5c6d7e8f",      "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",      "member": { "id": "a7b8c9d0-e1f2-4a3b-8c4d-5e6f7a8b9c0d", "name": "Ada Lovelace" },      "plan": { "id": "2e4f6a8c-1b3d-4e5f-8a9b-0c1d2e3f4a5b", "name": "Inner Circle" },      "provider": "stripe",      "surface": "portal",      "reference": "cs_test_a1B2c3D4",      "method_id": "6f7a8b9c-0d1e-4f2a-9b3c-4d5e6f7a8b9c",      "outcome": "recovered",      "started_at": "2026-10-12T09:00:00+00:00",      "stalled_at": "2026-10-12T10:00:00+00:00",      "completed_at": "2026-10-12T15:30:00+00:00",      "payment_id": "c3d4e5f6-a7b8-4c9d-8e0f-1a2b3c4d5e6f",      "enrollment_id": "d4e5f6a7-b8c9-4d0e-8f1a-2b3c4d5e6f7a"    }  ],  "meta": { "page": 1, "limit": 25, "total": 1, "has_more": false }}

stalled and recovered are booleans (recovered reads among the stalled rows, so stalled: true, recovered: false is the stalled checkouts still open); plan_id and member_id keep one plan or one member. A member is counted as stalled at most once a day however many checkouts they started: the older open ones are stamped stalled without a second checkout.stalled or a second passage.

How it fails

VALIDATION_FAILED

a stalled or recovered that is not a boolean, a plan_id or member_id that is not a UUID, or limit outside 1..100.

RESOURCE_NOT_FOUND

unknown project_id, or the project is outside the token's scope.

AUTHENTICATION_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks project-subscription:view-any.

How is this guide?

Last updated on