Version
READ

list_pass_moves

Every hop one purchase's passes made, oldest first, from the project's pass move log — both dates, the reason, who made it and when.

Read one purchase's trail: a date cancelled and the holder rolled forward (window_cancelled), a season date replaced by another (series_date_substituted), or a payment that settled after the date it was for and was bound to the next one (paid_after_window). Each hop names both dates by id and as a person reads them in the plan's zone, who made it (null when the platform did on its own) and when.

The log keeps every hop; the ledger keeps the last

The ledger rewrites a moved pass onto its new date, so it remembers only where a pass is now. The move log is written beside it the moment a pass moves, so a pass moved twice answers two rows here, and an empty list means the purchase's passes never moved.

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

subscription_id*string

UUID of the purchase whose passes' moves to list.

What it returns

{  "data": [    {      "id": "0f9e8d7c-6b5a-4f3e-9d2c-1b0a9f8e7d6c",      "subscription_id": "5b7e2d40-1a86-4c39-97f2-e83d0b16c5a4",      "claim_id": "c1f2e3d4-5a6b-4c7d-8e9f-0a1b2c3d4e5f",      "from_window_id": "9c1f4e27-5a8b-4d63-b2e0-8f7a6c5d4e31",      "from_local_range": "Thu 5 Nov 2026, 15:30 – Fri 6 Nov, 00:00 CST",      "to_window_id": "3d5a8c72-b016-4e94-8fa7-61c209d4e738",      "to_local_range": "Thu 12 Nov 2026, 15:30 – Fri 13 Nov, 00:00 CST",      "reason": "window_cancelled",      "moved_by_user_id": "6a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",      "moved_by_name": "Aaron",      "moved_at": "2026-11-06T09:15:02+00:00"    }  ],  "meta": {    "total": 1  }}
FieldTypeNotes
idstring UUIDThe hop, the move_id that pass.holder_moved and pass_series.leg_substituted carry.
from_window_idstring UUIDThe date left; null for a late payment bound to the next date with nothing to leave.
to_window_idstring UUIDThe date put onto; null when the pass was ended instead.
from_local_rangestringThe date left as a person reads it, in its plan's zone; null when the date is gone. Likewise to_local_range.
reasonstringwindow_cancelled, series_date_substituted or paid_after_window.
moved_by_user_idstring UUIDThe creator or team member whose action made the hop; null when the platform made it.

How it fails

RESOURCE_NOT_FOUND

unknown subscription_id, or a purchase outside the token's scope.

AUTHENTICATION_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks project-subscription:view.

How is this guide?

Last updated on