Pour les agents IA

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.

01Une vidéo

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.

https://app.shager.ai/api/mcpStreamable HTTP · OAuth or Bearer key

Appeltools/call · upload_media_from_url → create_post

// 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"
  }
}

Résultatstatus: SCHEDULED

{
  "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.

02Sécurité

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.

Clé API · claude-codeshgr_live_…

  • readComptes, publications, statistiquesActivé
  • writeBrouillons et médiasActivé
  • publishProgrammer et publierDésactivé

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.

{ "error": {
  "code": "needs_confirmation",
  "message": "Nothing was scheduled: …",
  "details": {
    "plan": { "accounts": 40, "by_network": { … } },
    "confirmation_token": "…"
  }
} }

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é.

03Connexion

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.

    CodeConnecteur personnalisé

    # 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.

    CodeCode d’appareil RFC 8628

    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).

    CodeClaude Code

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

04Outils

Tout ce que l’agent peut faire.

30 outils, les mêmes en MCP et en REST
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
app.shager.ai/api/v1/openapi.json
La spécification OpenAPI complète de l’API REST.
app.shager.ai/.well-known/oauth-authorization-server
Métadonnées du serveur OAuth : enregistrement dynamique des clients, PKCE, code d’appareil.

05Questions

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.

Votre agent est prêt. Vos comptes vous attendent.

Commencez gratuitement pendant le lancement, créez une clé et connectez votre agent en une ligne. C’est vous qui décidez quand il publie.