Cards in terminal states (lost, stolen, expired, cancelled)

Identifies cards in terminal states (lost, stolen, expired, cancelled) via list_cards. Useful for security reporting and card reference cleanup.

โ†“ Download skill (.md)
77/100ยท๐Ÿ“† MonthlyยทIntermediateControllerFinance Analyst
CardsCompliancelist_cards

๐ŸŽฏ Skill purpose

Identifies cards in terminal states (lost, stolen, expired, cancelled) via list_cards. Useful for security reporting and card reference cleanup.

๐Ÿ“Š 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)
  CMD  โ€” Compromised
  CBL  โ€” Disabled/hidden (deactivated, does not return to active)
```

## Pitfall โ€” one status per call

`list_cards.status` is a **plain string** (not an array). To cover several terminal states, make multiple calls:

```json
// Call 1 โ€” Lost cards
{ "companyId": "<COMPANY_ID>", "status": "LOS", "pageSize": 100 }

// Call 2 โ€” Stolen cards
{ "companyId": "<COMPANY_ID>", "status": "STO", "pageSize": 100 }

// Call 3 โ€” Expired cards (useful for cleanup)
{ "companyId": "<COMPANY_ID>", "status": "EXP", "pageSize": 100 }

// Call 4 โ€” Cancelled cards
{ "companyId": "<COMPANY_ID>", "status": "CAN", "pageSize": 100 }

// Call 5 โ€” Compromised cards (security alert)
{ "companyId": "<COMPANY_ID>", "status": "CMD", "pageSize": 100 }
```

โ†’ Merge the results client-side for a consolidated view.

## 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",
  "status": "CAN",
  "lastFourDigits": "1234",
  "expiryDate": "2025-12-31T23:59:59.000Z",
  "ownerId": "<userId>",
  "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 โ€” no expired card visible (possibly because expired cards are archived or purged from the API after a certain delay)
- `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

/
  1. 1
    Download the file s30-cartes-statuts-terminaux.md using the button above.
  2. 2
    Place 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
  3. 3
    Use 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
95/100ยท๐Ÿ” Ad hocยทExpert

MCP coverage audit & gap analysis

Probes all available MCP tools, re-evaluates coverage of 50 persona use cases, detects new fields or tools, and regenerates the gap analysis report.

CFOControllerAP Manager
90/100ยท๐Ÿ“… WeeklyยทBeginner

Card requests via get_requests

Explains how to use get_requests for card requests and why expense reimbursements don't appear there. Avoids a frequent source of confusion between two distinct workflows.

ControllerFinance Analyst
90/100ยท๐Ÿ” Ad hocยทIntermediate

Active vs archived cost centers

Distinguishes active cost centers from archived ones with correct use of get_cost_centers. Avoids the counter-intuitive isArchived vs isActive naming convention pitfall.

ControllerFinance Analyst