Cards in terminal states (lost, stolen, expired, cancelled)
Explains why lost, stolen, expired or cancelled cards never appear in the card list, and how to read one specific card.
77/100ยท๐ MonthlyยทIntermediateControllerFinance Analyst
CardsCompliancelist_cards
๐ฏ Skill purpose
Explains why lost, stolen, expired or cancelled cards never appear in the card list, and how to read one specific card.
๐ What it produces
List of out-of-service cards with status, owner, and last activity date.
โก Benefit
Before
No consolidated view of inactive cards โ multiple manual filters required.
After
Complete out-of-service card table in one query, ready for security reporting.
# Instructions
## Use case
Identify cards in a terminal state for security workflows (blocking lost/stolen cards) or cleanup (expired or cancelled cards).
## Full card lifecycle
```
PRE (pre-active)
โ
ACT (active) โโ BLO (blocked)
โ
REA (reactivated) โ ACT
Terminal states โ IRREVERSIBLE:
LOS โ Lost
STO โ Stolen
DAM โ Damaged
EXP โ Expired (reached expiry date)
CAN โ Cancelled (manually cancelled)
ABO โ Aborted
Other code: CMD โ legacy code, returned with the label "Unknown" (not listed as terminal)
CBL โ Hidden (disabled; not listed among terminal states by the server)
```
## Pitfall โ one status per call
`list_cards.status` is a **plain string** (not an array). Warning: `list_cards` NEVER returns Lost, Stolen, Damaged, Expired or Cancelled cards โ filtering on those statuses returns an empty list, which must not be read as "no such cards". Those cards can only be read by ID with `get_card`. The calls below therefore return an empty list for LOS, STO, EXP and CAN:
```json
// Only these filters can return cards through list_cards
{ "companyId": "<COMPANY_ID>", "status": "Blocked", "pageSize": 100 }
{ "companyId": "<COMPANY_ID>", "status": "Hidden", "pageSize": 100 }
```
โ For a lost, stolen, damaged, expired or cancelled card, you need its ID and a `get_card` call: there is no way to list them. An empty list on those statuses never means "no such card".
## Distinguishing terminal vs non-terminal
| Status | Terminal? | Can return to ACT? | Use case |
|--------|-----------|-------------------|----------|
| ACT | No | โ | Current |
| BLO | No | Yes (via REA) | Temporarily blocked |
| REA | No | โ | Reactivated after BLO |
| PRE | No | Yes | Awaiting activation |
| LOS | **Yes** | โ No | Loss declaration |
| STO | **Yes** | โ No | Theft declaration |
| DAM | **Yes** | โ No | Physically damaged card |
| EXP | **Yes** | โ No | Expiry date reached |
| CAN | **Yes** | โ No | Manual cancellation |
| CMD | **Yes** | โ No | Compromise detected |
| CBL | **Yes** | โ No | Disabled/hidden |
## Data available on a terminal card
Cards in a terminal state return the same fields as ACT cards:
```json
{
"id": "...",
"type": "Subscription card",
"status": "Cancelled",
"lastFourDigits": "1234",
"expiryDate": "2025-12-31T23:59:59.000Z",
"owner": { "id": "<userId>", "label": "<name>" },
"currency": "EUR",
"availableBalance": { ... }, // potential residual balance
"spendingLimit": { ... }
}
```
If `availableBalance > 0` on a cancelled or expired card, a refund may be pending.
## Limitations observed on this account
- `status: "EXP"` โ 0 results โ expected behaviour: `list_cards` never returns Lost, Stolen, Damaged, Expired or Cancelled cards; read them by ID with `get_card`
- `status: "CAN"`, `status: "BLO"`, etc. โ not tested on this account due to an MCP connection instability
## PAN and CVV never returned
The full card number (PAN) and the CVV are never returned by the MCP โ only the last 4 digits (`lastFourDigits`). This is a security limitation by design.
## Example user prompts
- "Are there any lost or stolen cards active on the account?"
- "Show me all cards cancelled this quarter"
- "Which expired cards still have a positive balance?"
How to install this skill
/
- 1Download the file
s30-cartes-statuts-terminaux.mdusing the button above. - 2Place the file in the
.claude/directory of your project (or~/.claude/for a global install).cp s30-cartes-statuts-terminaux.md .claude/s30-cartes-statuts-terminaux.md - 3Use in Claude Code โ the skill is automatically discovered. Describe your need in natural language and Claude will apply the skill instructions.
๐ก Make sure the Spendesk MCP is configured in your
.claude/settings.json with the tools list_cards.Similar skills
โ
Top