---
title: CLI @insourcia/cli
description: Pilote la plateforme Insourcia depuis le terminal — zéro dépendance, basé sur les tools RPC.
---

`@insourcia/cli` est un client en ligne de commande générique pour les [tools RPC](/docs/guides/tools-rpc). Zéro dépendance runtime, installable via `npx`.

## Installation

Via `npx` (sans installation persistante) :

```bash
npx @insourcia/cli --help
```

Installation globale :

```bash
npm install -g @insourcia/cli
insourcia --help
```

Requiert Node.js ≥ 20.

## Configuration

Deux façons de fournir la clé API :

```bash
# Via env var (recommandé pour scripts CI)
export INSOURCIA_API_TOKEN=isk_xxx

# Ou via flag
insourcia tools list --token isk_xxx
```

Override de l'URL (utile pour tests sur staging) :

```bash
export INSOURCIA_API_BASE_URL=https://staging.insourcia.io
```

Défaut : `https://app.insourcia.io`.

## Commandes

### Lister les tools disponibles

```bash
insourcia tools list
```

Combine avec `jq` :

```bash
insourcia tools list | jq '.tools[].name'
# "search_companies"
# "get_company"
# ...
```

### Invoquer un tool

```bash
insourcia tools call <name> --input '<json>'
```

Exemples :

```bash
insourcia tools call search_companies --input '{"query":"vinci","limit":3}'

insourcia tools call get_company --input '{"siren":"552120222"}'

insourcia tools call get_financials --input '{"siren":"552120222","years":5}'
```

### Lire l'input depuis un fichier

```bash
insourcia tools call search_companies --input @search-params.json
```

### Lire l'input depuis stdin (pipe)

```bash
echo '{"siren":"552120222"}' | insourcia tools call get_company --input -
```

Utile pour chaîner :

```bash
insourcia tools call search_companies --input '{"query":"vinci"}' \
  | jq '{siren: .data[0].siren}' \
  | insourcia tools call get_financials --input -
```

## Format de sortie

Par défaut, la commande **unwrap** l'envelope `{success, data}` et renvoie juste `data`. Plus pratique pour piper.

Pour conserver l'envelope (utile en debug) :

```bash
insourcia tools call get_company --input '{"siren":"552120222"}' --raw
# {"success": true, "data": {...}}
```

## Codes de sortie

- `0` : succès
- `1` : erreur d'usage (token manquant, JSON invalide, commande inconnue)
- `2` : erreur API (4xx/5xx) ou réseau (ECONNREFUSED, timeout)

Permet d'enchaîner en bash :

```bash
if insourcia tools call get_company --input '{"siren":"552120222"}' > /dev/null 2>&1; then
  echo "OK"
else
  echo "Erreur — code $?"
fi
```

## Cas d'usage typiques

### Vérifier qu'un SIREN existe

```bash
insourcia tools call get_company --input '{"siren":"552120222"}' --raw \
  | jq -r '.success'
```

### Export CSV de bilans

```bash
for siren in $(cat sirens.txt); do
  insourcia tools call get_financials --input "{\"siren\":\"$siren\"}" \
    | jq -r '[.exercices[] | [.annee, .chiffre_affaires, .resultat_net]] | @csv'
done > export.csv
```

### Smoke test après déploiement

```bash
insourcia tools list --base-url https://staging.insourcia.io > /dev/null \
  && echo "✓ Staging OK" \
  || echo "✗ Staging KO"
```
