Trace a card's blocking history

Traces a card's full block/unblock history, beyond its current status.

AP ManagerController๐Ÿ” Ad hocBeginnerRead-only

Ask it like this

Why was this employee's card blocked several times this quarter?

When to use it

When a card has been blocked and you want to understand why, beyond its current status.

What it produces

Chronological list of blocking reasons, with start and end date (or still active).

How it works

  1. 1Finds the card concerned
  2. 2Retrieves its full blocking history
  3. 3Gives the reason and date of each block
  4. 4Says whether several blocks are active at once
  5. 5Presents the blocks in chronological order

What protects you

  • This skill only reads: it changes nothing in Spendesk
  • It acts with your permissions and your role, never beyond
  • The assistant cannot approve or pay
โ–ธTechnical detail62/100 ยท 1 tools
CardsComplianceget_card_blocking_history

# A card's blocking history

## Difference from the blocking field on get_card / list_cards

`get_card` and `list_cards` expose a `blockingReason` field that only shows the **current** state. For a card blocked and unblocked several times, or blocked for several reasons at once, that field isn't enough โ€” `get_card_blocking_history` returns the full history, including reasons already cleared.

## Call

```json
{
  "tool": "get_card_blocking_history",
  "params": {
    "companyId": "<companyId>",
    "cardId": "<cardId>"
  }
}
```

## Reading the result

- Result is ordered most-recent-first.
- `endedAt: null` means this blocking reason is **still active** โ€” several rows can have `endedAt: null` at the same time, since a card can be blocked for multiple reasons simultaneously.
- `blockerId` is only populated (with the raw user id, no name resolved) when `initiator="user"` โ€” never invent a name from this field.
- **An empty array (`{"data":[]}`) is a normal result** for a card that's never been blocked โ€” verified across several active cards on this account, none had any history, which is the expected case for incident-free cards.

## Observed example

```json
{"data":[]}
```

On an active card with no incidents โ€” read as "never blocked", not as missing data or an error.

## Example user prompts

- "Why was [employee]'s card blocked three times this quarter?"
- "Is this card currently blocked for more than one reason at once?"
- "List the full blocking history for card [XXXX]"

How to install this skill

/
  1. 1
    Download the file s68-historique-blocage-carte.md using the button above.
  2. 2
    Place the file in the .claude/ directory of your project (or ~/.claude/ for a global install).
    cp s68-historique-blocage-carte.md .claude/s68-historique-blocage-carte.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 get_card_blocking_history.

Similar skills

โ˜… Top
95/100ยท๐Ÿ” Ad hocยทExpert

Audit what the MCP covers

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

Interested in AI Agent services or Custom Integrations?