---
name: cartes-subscription-fournisseur
description: Lister les cartes virtuelles subscription et identifier le fournisseur lié via get_card
tags: [list_cards, get_card, get_suppliers, subscription, supplierId]
when_to_use: Quand on veut auditer les abonnements SaaS actifs et savoir à quel fournisseur chaque carte est liée
---

# Cartes subscription et lien fournisseur

## Contexte

`list_cards(type="subscription")` retourne les champs basiques des cartes : id, status, ownerId, availableBalance, expiryDate.

`get_card(cardId)` retourne les champs additionnels non exposés dans `list_cards` :
- `supplierId` : ID du fournisseur lié à la carte (peut être null)
- `costCentreId` : ID du cost center de la carte (peut être null)

Pour connaître le fournisseur d'une carte subscription, il faut toujours appeler `get_card` — l'information n'est pas dans `list_cards`.

## Workflow en 3 étapes

### Étape 1 — Lister les cartes subscription actives

```json
{
  "tool": "list_cards",
  "params": {
    "companyId": "<companyId>",
    "type": "subscription",
    "status": "ACT",
    "pageSize": 50
  }
}
```

Résultat : liste de cartes avec `id`, `ownerId`, `availableBalance`, `expiryDate`.

**Note format :** `availableBalance.amount` est un **décimal direct** (91.38 EUR) — NE PAS diviser par 10^precision, contrairement à tous les autres tools MCP.

### Étape 2 — Obtenir le détail de chaque carte (supplierId)

Pour chaque cardId d'intérêt :
```json
{
  "tool": "get_card",
  "params": {
    "companyId": "<companyId>",
    "cardId": "<cardId>"
  }
}
```

Champs supplémentaires exposés par `get_card` (absents de `list_cards`) :
- `supplierId` : string | null
- `costCentreId` : string | null

### Étape 3 — Résoudre le nom du fournisseur (si supplierId non null)

```json
{
  "tool": "get_supplier_by_id",
  "params": {
    "companyId": "<companyId>",
    "supplierId": "<supplierId>"
  }
}
```

## Cas supplierId = null

Sur ce compte de test, les 2 cartes subscription actives ont `supplierId: null` et `costCentreId: null`. Ce cas est courant : les cartes subscription peuvent être créées sans fournisseur explicitement lié dans Spendesk.

Comportement à anticiper :
- `supplierId: null` → la carte n'a pas de fournisseur Spendesk associé (peut être un SaaS payé directement sans fiche fournisseur)
- `costCentreId: null` → la carte n'est pas rattachée à un cost center précis

## Différences list_cards vs get_card

| Champ | list_cards | get_card |
|-------|-----------|---------|
| `id` | ✅ | ✅ |
| `type` | ✅ | ✅ |
| `status` | ✅ | ✅ |
| `ownerId` | ✅ | ✅ |
| `availableBalance` | ✅ | ✅ |
| `spendingLimit` | ✅ | ✅ |
| `lastFourDigits` | ✅ | ✅ |
| `expiryDate` | ✅ | ✅ |
| `supplierId` | ❌ | ✅ |
| `costCentreId` | ❌ | ✅ |

## Rappels importants

- `list_cards.status` = string simple ("ACT") — un appel par statut (pas de tableau)
- `spendingLimit: null` est normal sur les cartes subscription — pas de plafond fixe
- `availableBalance.amount` est en décimal direct — anomalie confirmée en S03 et S29
- Pour auditer toutes les cartes actives incluant les "réactivées" : deux appels séparés avec `status="ACT"` et `status="REA"`

## Exemples de prompts utilisateur

- "Quelles cartes subscription sont actives et à quel fournisseur sont-elles liées ?"
- "Montre-moi toutes les cartes virtuelles SaaS avec leur solde disponible et le fournisseur associé"
- "Y a-t-il des cartes subscription sans fournisseur lié dans Spendesk ?"
