Les 9 outils MCP
Une fois ton client connecté (voir Connecter le MCP), ton agent a accès à 9 outils. Tu n’as pas besoin de les appeler toi-même : décris ce que tu veux faire en langage naturel, ton agent (Claude, n8n…) choisit le bon outil.
petitpanda_get_user
Aucun scope requis.
Vérifie que ta clé est valide et te donne un aperçu de ton compte.
- Params : aucun
- Retourne :
{ userId, plan, accountsConnected, platforms[], scopes[] }
Exemple d’usage : “Vérifie que ma connexion PetitPanda fonctionne.”
petitpanda_list_accounts
Aucun scope requis.
Liste les comptes réseaux sociaux connectés à ton compte PetitPanda. À appeler avant petitpanda_create_post si tu veux cibler un compte précis.
- Params :
platform(string, optionnel) : filtre sur une plateforme (linkedin,instagram,tiktok,facebook,threads,youtube)
- Retourne :
{ accounts: [{ id, platform, handle, accountName, externalId, connectedAt }] }
Exemple d’usage : “Liste mes comptes LinkedIn connectés.”
petitpanda_next_free_slot
Aucun scope requis.
Retourne le prochain créneau libre de ton calendrier de programmation récurrente pour une plateforme, jusqu’à 14 jours en avance.
- Params :
platform(string, requis)
- Retourne :
{ slot: { scheduledAt, slotId } }, ou{ slot: null, note }si aucun créneau récurrent n’est configuré
Exemple d’usage : “Quel est mon prochain créneau libre sur TikTok ?“
petitpanda_create_upload_url
Scope requis : drafts:write.
Génère une URL d’upload temporaire pour envoyer un média (image ou vidéo) qui servira ensuite dans un post.
- Params :
filename(string, requis, avec extension, ex :visuel.jpg)
- Retourne :
{ uploadUrl, publicUrl, path, method: "PUT" }
Flow : ton agent envoie les octets du fichier en PUT vers uploadUrl, puis réutilise publicUrl dans mediaUrls lors de l’appel à petitpanda_create_post. Les fichiers sont stockés dans le bucket mcp-media.
Exemple d’usage : “Prépare une URL d’upload pour cette image, puis publie-la sur Instagram.”
petitpanda_create_post
Scope requis : schedules:write.
Crée un post : publication immédiate ou programmation, selon les paramètres fournis.
- Params :
platform(string, requis)text(string, requis)accountId(string, optionnel : sinon le premier compte actif de la plateforme est utilisé)mediaUrls(array, optionnel : URLs publiques de médias, par exemple depuispetitpanda_create_upload_url)title(string, optionnel : à fournir pour YouTube)scheduledTime(string ISO 8601, optionnel)useNextFreeSlot(boolean, optionnel)options(objet libre, optionnel : par exempleprivacyLevelpour TikTok)idempotencyKey(string, optionnel : rejoue le même appel sans republier en double)
- Retourne :
{ mode: "published", draftId, platform, ... }ou{ mode: "scheduled", draftId, scheduleId, scheduledAt, platform }
Comportement : si ni scheduledTime ni useNextFreeSlot ne sont fournis, le post part immédiatement. Sinon il est programmé.
Exemple d’usage : “Publie ce texte sur LinkedIn maintenant” ou “Programme ce post Instagram au prochain créneau libre.”
petitpanda_list_schedules
Aucun scope requis.
Liste tes programmations, avec filtres.
- Params :
status(string, optionnel :pending,publishing,published,failed)platform(string, optionnel)from/to(string ISO 8601, optionnel)limit(number, optionnel, défaut 50, max 100)
- Retourne :
{ schedules: [...] }, triées par date de programmation décroissante. Chaque entrée contient un extrait du texte (300 caractères max) — utilisepetitpanda_get_postpour le détail complet.
Exemple d’usage : “Montre-moi mes posts en attente sur TikTok cette semaine.”
petitpanda_get_post
Aucun scope requis.
Renvoie le détail complet d’une publication (planifiée ou publiée) à partir de son scheduleId : plateforme, compte, titre, texte intégral, nombre de médias, statut, dates, URL publiée et erreur éventuelle. Appelle d’abord petitpanda_list_schedules pour obtenir le scheduleId.
- Params :
scheduleId(string, requis)
- Retourne :
{ id, platform, account_handle, title, text, media_count, status, scheduled_at, published_at, platform_post_url, error_msg }
Exemple d’usage : “Donne-moi le détail complet de ce post programmé.”
petitpanda_update_schedule
Scope requis : schedules:write.
Modifie une publication déjà planifiée (statut pending uniquement) : sa date/heure et/ou ses options plateforme. Appelle d’abord petitpanda_list_schedules pour obtenir le scheduleId.
- Params :
scheduleId(string, requis)scheduledTime(string ISO 8601, optionnel : nouvelle date/heure, doit être dans le futur)options(objet libre, optionnel : réglages plateforme fusionnés avec les existants, par exemple{ trialReel: true }pour Instagram ou{ privacyLevel: "SELF_ONLY" }pour TikTok)
- Au moins l’un de
scheduledTimeouoptionsdoit être fourni. - Retourne :
{ updated: true, scheduleId, scheduledAt?, options?, platform }
Exemple d’usage : “Déplace ce post programmé à demain 18h.”
petitpanda_delete_schedule
Scope requis : schedules:write.
Supprime (annule) une publication planifiée. Seules les publications au statut pending peuvent être annulées. Irréversible. Appelle d’abord petitpanda_list_schedules pour obtenir le scheduleId.
- Params :
scheduleId(string, requis)
- Retourne :
{ deleted: true, scheduleId }
Exemple d’usage : “Annule cette publication programmée sur LinkedIn.”
Et après ?
- Comprendre les erreurs possibles : Limites & erreurs
- Revoir l’auth et les scopes : Clé API & authentification