# Votre agent écrit. Shager lance. Vous gardez la main.

Connectez Claude, ChatGPT, Cursor ou tout client MCP via une connexion OAuth, un bot avec un code d’appareil, et tout le reste avec une clé API ou l’API REST. Votre agent importe une vidéo ou des images, prépare une publication pour tous les comptes (Reel, Short, story, vidéo TikTok ou publication) et la vérifie selon les règles de chaque réseau. La publication reste désactivée jusqu’à ce qu’une personne l’active.

Serveur MCP, API REST et documentation OpenAPI dans toutes les formules, gratuits pendant la période de lancement.

## Une vidéo. Huit comptes.

L’agent importe la vidéo avec upload_media_from_url et envoie une publication avec un groupe de comptes. Shager renvoie une version par compte, dans un format que son réseau accepte : un Reel, un Short, une vidéo TikTok, une vidéo LinkedIn. Chacune a sa propre heure d’envoi.

MCP: `https://app.shager.ai/api/mcp`

```json
// 1 · upload the video once
{
  "name": "upload_media_from_url",
  "arguments": {
    "workspace_id": "cm2studionoa",
    "url": "https://studio-noa.co.il/media/workshop.mp4"
  }
}
// → { "id": "cm2wheelvideo", "kind": "VIDEO",
//     "width": 1080, "height": 1920, "duration_ms": 24000 }  (measured by Shager)

// 2 · one post to every account
{
  "name": "create_post",
  "arguments": {
    "workspace_id": "cm2studionoa",
    "group_ids": ["cm2allaccounts"],
    "caption": "A new evening workshop…",
    "media_ids": ["cm2wheelvideo"],
    "cta_url": "https://studio-noa.co.il/workshop",
    "youtube_made_for_kids": false,
    "per_channel": [{
      "channel_id": "cm2tiktok",
      "tiktok_privacy": "SELF_ONLY"
    }],
    "schedule_at": "2026-10-20T09:00:00+03:00",
    "idempotency_key": "workshop-oct-20"
  }
}
```

```json
{
  "status": "SCHEDULED",
  "scheduled_at": "2026-10-20T06:00:00.000Z",
  "stagger_seconds": { "min": 30, "max": 90 },
  "issues": [],
  "destinations": [
    { "network": "INSTAGRAM", "format": "REEL",  "state": "PENDING" },
    { "network": "FACEBOOK",  "format": "REEL",  "state": "PENDING" },
    { "network": "YOUTUBE",   "format": "SHORT", "state": "PENDING" },
    { "network": "TIKTOK",    "format": "VIDEO", "state": "PENDING" },
    { "network": "LINKEDIN",  "format": "VIDEO", "state": "PENDING" },
    { "network": "X",         "format": "FEED",  "state": "PENDING" }
    // … 2 more, each with its own dispatch_at
  ],
  "calendar_notes": []
}
```

- `validate_post` renvoie d’un coup tous les problèmes de tous les comptes, avant tout enregistrement.
- `calendar_notes` signale les jours fériés à la date choisie, pour que l’agent puisse revoir l’horaire.
- `idempotency_key` sécurise les nouvelles tentatives : la même requête ne crée jamais une deuxième publication.

## L’agent travaille. C’est vous qui décidez.

- **Un humain en prend le contrôle.** Un agent qui s’inscrit seul obtient un bac à sable : brouillons, médias et clients, sans programmation ni publication. Une personne ouvre le lien de récupération, se connecte, et alors seulement l’organisation lui appartient.
- **La publication est désactivée par défaut.** Chaque clé a des droits de lecture, d’écriture et de publication. La publication est accordée séparément, uniquement par une personne, et la clé peut être révoquée à tout moment.
- **Les envois massifs ou imminents attendent un oui.** Un envoi à plus de 10 comptes ou dans les 60 minutes ne part pas tout de suite. L’agent reçoit un plan d’envoi à vous montrer, et ne renvoie qu’avec un jeton de confirmation.
- **Des plafonds par clé, et un journal de chaque action.** Jusqu’à 50 comptes par publication et 20 publications programmées sur 24 heures. Chaque action d’un agent est journalisée : quoi, quand et avec quelle clé.

## Trois façons de connecter n’importe quel agent.

### 1. Tout client MCP compatible OAuth

Ajoutez l’adresse du serveur dans le client (dans Claude et ChatGPT, comme connecteur personnalisé). Il vous envoie vers Shager : connectez-vous, choisissez l’organisation et validez. Aucune clé à copier, et la publication reste désactivée sauf si vous la cochez.

```sh
# MCP server URL (sign in with OAuth)
https://app.shager.ai/api/mcp
```

### 2. Bots sans navigateur : un code d’appareil

Un bot ou un agent sans navigateur s’enregistre une fois (RFC 7591), demande un code et vous l’affiche. Vous validez depuis votre téléphone sur app.shager.ai/device, avec le même écran et les mêmes droits.

```sh
curl -X POST https://app.shager.ai/api/oauth/device_authorization \
  -d client_id=shgr_client_… \
  -d resource=https://app.shager.ai/api/mcp
# → user_code "BCDF-GHJK", verification_uri
#   https://app.shager.ai/device · then poll /api/oauth/token
```

### 3. Tout le reste : une clé API

Créez une clé sur la page Agents et envoyez-la dans un en-tête Bearer, via MCP ou l’API REST. Pas encore de compte ? L’agent s’inscrit seul dans un bac à sable et vous le récupérez ensuite (auth.md).

```sh
claude mcp add --transport http shager \
  https://app.shager.ai/api/mcp \
  --header "Authorization: Bearer shgr_live_…"
```

MCP config (Cursor and other clients):

```json
{
  "mcpServers": {
    "shager": {
      "url": "https://app.shager.ai/api/mcp",
      "headers": { "Authorization": "Bearer shgr_live_…" }
    }
  }
}
```

## Tout ce que l’agent peut faire.

- `whoami`: Qui suis-je : l’organisation, les droits de la clé, les plafonds et l’état du bac à sable
- `get_structure`: Tout le compte d’un coup d’œil : les clients, les comptes de chacun et leurs groupes
- `get_claim_link`: Lien de récupération de l’organisation
- `list_workspaces`: Liste des clients (espaces de travail)
- `create_workspace`: Créer un client
- `list_channels`: Comptes connectés et règles de chaque réseau
- `create_connect_link`: Un lien pour que le client connecte ses propres comptes
- `list_groups`: Groupes de comptes
- `create_group`: Créer un groupe (établissements, marques, campagne)
- `upload_media_from_url`: Importer une image ou une vidéo depuis une URL
- `validate_post`: Vérifier le contenu final et s’il est prêt à être programmé
- `create_post`: Une publication pour plusieurs comptes, adaptée à chaque réseau
- `update_post`: Modifier un brouillon
- `schedule_post`: Programmer avec des envois échelonnés entre les comptes
- `request_approval`: Un lien de validation pour le client
- `get_approval`: Statut de validation de la publication
- `get_post`: Statut de publication sur chaque compte, erreurs comprises
- `list_posts`: Le calendrier éditorial
- `cancel_post`: Annuler une programmation
- `delete_post`: Supprimer un brouillon
- `list_comments`: Commentaires d'une publication sur YouTube ou Instagram
- `reply_to_comment`: Répondre à un commentaire au nom du compte
- `hide_comment`: Masquer ou afficher un commentaire
- `delete_comment`: Supprimer un commentaire
- `get_analytics`: Clics par compte et par publication
- `create_webhook`: 
- `list_webhooks`: 
- `delete_webhook`: 
- `send_test_webhook`: 
- `get_holidays`: Fêtes et jours fériés selon la tradition, pour choisir quand publier

## Fichiers lisibles par machine

- `/llms.txt`: Un plan du site pour les agents : ce qu’est Shager et où se trouve chaque page.
- `/llms-full.txt`: Tout le contenu public dans un seul fichier Markdown.
- `/md/…`: Une version Markdown de chaque page. Exemple : /md/fr/pricing
- `https://app.shager.ai/api/v1/openapi.json`: La spécification OpenAPI complète de l’API REST.
- `https://app.shager.ai/.well-known/oauth-authorization-server`: Métadonnées du serveur OAuth : enregistrement dynamique des clients, PKCE, code d’appareil.

## Les questions à se poser avant de connecter un agent.

### Quels agents fonctionnent avec Shager aujourd’hui ?

Tout client MCP compatible avec la connexion OAuth (comme un connecteur personnalisé dans Claude ou ChatGPT) ou avec un en-tête de clé API (comme Claude Code, Cursor ou Codex), les bots et agents sans navigateur via un code d’appareil, et tout code qui appelle l’API REST.

### L’agent peut-il publier sans que je le sache ?

Pas par défaut. Publier demande un droit de publication distinct, accordé par une personne ; il est désactivé quand vous créez une clé, récupérez un bac à sable ou validez une connexion, et un envoi à plus de 10 comptes ou dans les 60 minutes demande une seconde confirmation. Vous pouvez aussi exiger la validation du client pour chaque publication d’un espace de travail.

### Faut-il payer en plus pour un agent ?

Non. L’API et le serveur MCP sont inclus dans toutes les formules, et une publication créée par votre agent compte comme n’importe quelle autre.

### Et si l’agent se trompe ?

Une publication programmée peut être annulée tant qu’elle n’est pas partie, et un brouillon peut être supprimé. Chaque action figure dans le journal, et la clé peut être révoquée en un clic.

### L’agent peut-il publier sur les comptes d’autres personnes ?

Uniquement sur les comptes connectés à votre organisation, via l’écran d’autorisation officiel de chaque réseau. L’agent ne voit jamais les mots de passe.

Les liens suivis affichent les clics par compte et par publication. L'attribution des prospects et des ventes nécessite votre outil d'analyse ou votre CRM.

---
Source: https://shager.ai/fr/agents
