Authentification
Chaque requête vers https://mcp.postnext.io/api nécessite un en-tête Authorization avec un jeton Bearer. Vous avez deux façons d'en obtenir un.
OAuth (recommandé pour les clients IA)
Les clients IA exécutent Dynamic Client Registration à la première connexion, puis guident l'utilisateur via un écran de consentement OAuth. La page /mcp/connect le fait automatiquement. Votre client reçoit un jeton d'accès de 30 jours.
Clé API
Pour les scripts et la CI, générez une clé API personnelle dans l'app PostNext via Compte → Clés API. La clé commence par apikey_ et est présentée comme un jeton Bearer ordinaire.
Endpoint
Tous les appels de tools vont vers un unique endpoint JSON-RPC 2.0 en HTTPS POST.
Outils
list_scheduled_posts
Listez vos publications programmées (en file d'attente pour publication mais pas encore envoyées).
Arguments
limitfromRetourne
Un objet avec posts: [{id, platform, content, scheduledAt, status}]. Jusqu'à limit résultats.
Exemple
curl -X POST https://mcp.postnext.io/api \
-H "Authorization: Bearer apikey_xxx" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/call","id":1,
"params":{"name":"list_scheduled_posts",
"arguments":{"limit":5}}}'
list_drafts
Listez vos brouillons (pas encore programmés).
Arguments
limitRetourne
Un objet avec drafts: [{id, platform, content, updatedAt}]. Jusqu'à limit résultats.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":2,
"params":{"name":"list_drafts","arguments":{"limit":10}}}
list_connected_accounts
Listez les comptes sociaux connectés à votre équipe.
Arguments
Aucun argument.
Retourne
Un objet avec accounts: [{platform, handle, connected, lastSyncAt}].
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":3,
"params":{"name":"list_connected_accounts","arguments":{}}}
get_account_healthPlan payant
Obtenez un résumé de santé sur toutes les plateformes connectées.
Arguments
platformwindowDaysRetourne
Un objet avec windowDays, postsScheduled, postsPublished, postsFailed, une ventilation byPlatform et topErrors[].
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":4,
"params":{"name":"get_account_health",
"arguments":{"windowDays":30}}}
create_post_draft
Créez un nouveau brouillon. Les brouillons ne sont pas auto-publiés.
Arguments
platformcontentmediaUrlsclientRequestIdRetourne
Un objet avec le nouveau brouillon : {id, platform, content, status: "DRAFT", createdAt}.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":5,
"params":{"name":"create_post_draft",
"arguments":{"platform":"twitter",
"content":"Hello from MCP"}}}
update_post_draft
Mettez à jour un brouillon existant. Au moins l'un des champs content ou mediaUrls doit être fourni.
Arguments
postIdcontentmediaUrlsclientRequestIdRetourne
Un objet avec le brouillon mis à jour : {id, platform, content, mediaUrls, status, updatedAt}.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":6,
"params":{"name":"update_post_draft",
"arguments":{"postId":"",
"content":"Updated copy"}}}
connect_channel
Générez une URL à usage unique que l'utilisateur peut ouvrir pour autoriser une nouvelle connexion de plateforme.
Arguments
platformRetourne
Un objet avec authUrl (lien à usage unique que l'utilisateur ouvre pour autoriser), expiresAt et platform.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":7,
"params":{"name":"connect_channel",
"arguments":{"platform":"linkedin"}}}
schedule_post
Place un brouillon (statut DRAFT) dans la file de publication BullMQ à un timestamp futur. Idempotent dans une dérive de ±60s; rejette les tentatives de re-planification à une autre heure sans annulation explicite.
Arguments
postIdscheduledAtRetourne
Un objet avec postId, scheduledAt (ISO), status: SCHEDULED.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":8,
"params":{"name":"schedule_post",
"arguments":{"postId":"",
"scheduledAt":"2026-05-10T09:00:00Z"}}}
cancel_scheduled_post
Annule une publication planifiée et la retire de la file. Le brouillon sous-jacent est conservé.
Arguments
postIdRetourne
Un objet avec postId et status: CANCELLED.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":9,
"params":{"name":"cancel_scheduled_post",
"arguments":{"postId":""}}}
delete_draft
Supprime définitivement un brouillon. Refuse les publications non DRAFT (utilisez cancel_scheduled_post pour SCHEDULED).
Arguments
postIdRetourne
Un objet avec postId et deleted: true.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":10,
"params":{"name":"delete_draft",
"arguments":{"postId":""}}}
get_post
Renvoie le PostGroup complet pour un postId avec le contenu par plateforme + statut + timestamps.
Arguments
postIdRetourne
Un objet avec postId, status, scheduledAt, createdAt, updatedAt et providers (carte plateforme → contenu).
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":11,
"params":{"name":"get_post",
"arguments":{"postId":""}}}
search_posts
Recherche de sous-chaîne (insensible à la casse) dans le contenu des publications de l'équipe active. Filtres: status, platform, limit (1-100, défaut 20).
Arguments
querystatusplatformlimitRetourne
Un objet avec posts: [{postId, status, platforms, snippet, scheduledAt, updatedAt}]. Le snippet contient le contexte correspondant avec des points de suspension de chaque côté.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":12,
"params":{"name":"search_posts",
"arguments":{"query":"launch","limit":10}}}
list_teams
Renvoie les équipes dont l'utilisateur authentifié est propriétaire ou admin, l'équipe active étant marquée.
Arguments
Aucun argument.
Retourne
Un objet avec currentTeamId et teams: [{teamId, teamName, isCurrent}].
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":13,
"params":{"name":"list_teams","arguments":{}}}
set_current_team
Change l'équipe active pour ce jeton Bearer. L'utilisateur doit en être membre. Persisté sur le document du jeton OAuth; la mutation in-session le rend immédiatement effectif pour les outils suivants dans la même conversation.
Arguments
teamIdRetourne
Un objet avec teamId, teamName, persisted (true si OAuth, false si clé API) et un note optionnel.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":14,
"params":{"name":"set_current_team",
"arguments":{"teamId":"team_xxxxx"}}}
get_plan_limits
Lit le niveau d'abonnement actuel de l'utilisateur et les quotas par palier (canaux, stockage, crédits IA, publication). Disponible sur tous les plans. Utile avant des outils mutateurs pour prédire si l'appel sera bloqué.
Arguments
Aucun argument.
Retourne
Un objet avec tier, tierDisplayName, isPaid, isTrial, upgradeUrl, limits (channels/storage/aiCalls/posts chacun sous la forme {limit, current, exceeded} ou {limit, allowed}) et creditsAvailable ({total, subscriptionRemaining, purchasedBalance} ou null).
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":15,
"params":{"name":"get_plan_limits","arguments":{}}}
get_post_metrics
Récupère les métriques d'engagement d'une publication publiée sur chaque plateforme où elle a été envoyée. Twitter et Instagram renvoient des métriques peuplées (likes, retweets/partages, commentaires/réponses, impressions); LinkedIn, Threads et TikTok renvoient seulement le statut de publication et l'URL (la collecte d'engagement est reportée à une version ultérieure). Un récapitulatif normalisé totals additionne likes/commentaires/partages/impressions des plateformes ayant fourni des données.
Arguments
postId Identifiant de publication PostNext issu d'un appel de liste.
Retourne
Un objet avec postId, status, providers: [{platform, publishedPostId, publishedUrl, publishedAt, status, metrics}] et totals: {likes, comments, shares, impressions}. metrics est un objet de compteurs numériques par plateforme, ou null lorsque la plateforme ne collecte pas encore l'engagement.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":16,
"params":{"name":"get_post_metrics",
"arguments":{"postId":""}}}
get_publish_status
Diagnostique une publication planifiée : état de la file, succès/erreur par plateforme, temps de traitement et jobId du worker. Renvoie isScheduled=false pour les publications qui existent en brouillon mais n'ont pas été placées dans la file, avec un hint pointant vers schedule_post.
Arguments
postId Identifiant de publication PostNext issu d'un appel de liste.
Retourne
Un objet avec postId, isScheduled, status, scheduledAt, publishedAt, platforms, processingTimeMs, jobId, topLevelError et results: [{platform, success, publishedPostId, publishedAt, error}]. Inclut hint quand isScheduled est false.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":17,
"params":{"name":"get_publish_status",
"arguments":{"postId":""}}}
update_brand_profile
Met à jour le profil de marque actif de l'utilisateur. Champs autorisés : bio, brandVoice, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize. Tout autre champ est abandonné silencieusement. Résout "actif" comme défaut d'équipe d'abord, puis le premier profil actif de l'utilisateur.
Arguments
brandVoice Tableau de descripteurs de ton de marque (p. ex. ["professionnel", "concis"]).
Other patchable fields: bio, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize.
Retourne
Un objet avec profileId, name, updated: [noms de champs patchés] et les valeurs actuelles de bio, brandVoice, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize après le patch.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":18,
"params":{"name":"update_brand_profile",
"arguments":{"brandVoice":["professional","concise"]}}}
get_best_time_to_post Paid plan
Recommande les meilleurs N créneaux (jourDeSemaine, heure) pour la prochaine publication sur une plateforme, classés par engagement par publication des 90 derniers jours. Twitter et Instagram renvoient des scores pondérés par engagement ; LinkedIn, Threads, TikTok classent uniquement par fréquence. Heures dans le fuseau IANA fourni (UTC par défaut). Plan payant requis.
Arguments
platform Plateforme sociale : twitter, instagram, linkedin, threads, ou tiktok.
timezone Nom de fuseau horaire IANA (p. ex. Europe/Paris, America/New_York). UTC par défaut.
topN Nombre de recommandations de créneaux à renvoyer (1-24, 5 par défaut).
Retourne
Un objet avec platform, timezone, sampleWindowDays, sampleSize, metricsAvailable et recommendations: [{dayOfWeek (1-7, Lun=1), dayLabel, hour (0-23), score, basedOn: {posts, avgEngagement}}]. Inclut hint pour les cas cold-start ou métriques indisponibles.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":19,
"params":{"name":"get_best_time_to_post",
"arguments":{"platform":"twitter","timezone":"Europe/Berlin","topN":5}}}
get_channel_analytics
Performance agrégée d'un canal connecté, ou de tous à la fois. Renvoie impressions, portée, likes, commentaires et taux d'engagement sur la période, l'écart avec la période précédente de même durée, et la série des abonnés. Sans platform, le total de toute l'équipe. Pour une publication seule, get_post_metrics ; pour planifier, get_best_time_to_post.
Arguments
platform Plateforme sociale : twitter, instagram, linkedin, threads, ou tiktok.
channelName Quel compte connecté, quand la plateforme en a plusieurs.
period Période à analyser : 7d, 30d, 90d ou all (30d par défaut).
Retourne
Un objet avec scope, period, totals, vsPrevious, coverage, dataThrough et followers, qui porte trackingSince, current, change et la série.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":34,
"params":{"name":"get_channel_analytics",
"arguments":{"platform":"linkedin","period":"30d"}}}search_tools
Recherche le catalogue d'outils MCP par texte libre, catégorie ou intention. Renvoie catégories, requiresScope, descriptions d'une ligne et les tags de cas d'usage qui correspondent. Disponible sur tous les plans (surface de découverte).
Arguments
All optional. Call with no arguments to list every available tool.
query Recherche libre dans les noms, descriptions et tags d'usage des outils.
category Filtre sur une catégorie : posts, accounts, analytics, brand, teams, discovery, other.
Retourne
Un objet avec totalTools, matchCount, categories: [string[]] et tools: [{name, category, requiresScope, description, useCases, matchedOn: [name|category|description|use_case]}]. Inclut hint quand pas de correspondance ou pas de filtre.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":20,
"params":{"name":"search_tools",
"arguments":{"query":"why did my post fail"}}}
get_plan
Formule et dates de facturation : palier, date de renouvellement, fin de la période d'essai et résiliation prévue en fin de période. Pour les quotas et la consommation, appelez plutôt get_plan_limits.
Arguments
Aucun argument.
Retourne
Un objet avec tier, tierDisplayName, isPaid, isTrial, gated, subscriptionStatus, renewsAt, trialEndsAt, cancelAtPeriodEnd, currency et upgradeUrl.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":21,
"params":{"name":"get_plan",
"arguments":{}}}
upload_asset
Envoi d'une image ou d'une vidéo dans la médiathèque directement en base64. Fiable uniquement pour de très petits fichiers, environ 8 Ko ou moins : au-delà, le contenu est tronqué sans avertissement dans les arguments de l'outil et le fichier enregistré est corrompu. Pour tout le reste, utilisez request_asset_upload.
Arguments
filename Nom du fichier avec son extension, jusqu'à 255 caractères.
contentType Type MIME du fichier, parmi la liste autorisée d'images et de vidéos.
base64 Les octets du fichier, encodés en base64. Gardez-le très petit et lisez d'abord l'avertissement ci-dessus.
Retourne
Un objet avec assetId, url, sizeBytes et mimeType. Transmettez url à create_post_draft dans mediaUrls.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":22,
"params":{"name":"upload_asset",
"arguments":{"filename":"logo.png","contentType":"image/png","base64":"iVBORw0KGgo..."}}}
request_asset_upload
La méthode d'envoi recommandée, pour les images et les vidéos de toute taille. Deux étapes : appelez cet outil pour obtenir une URL présignée et une commande curl prête à l'emploi, puis envoyez le fichier en PUT vers cette URL. La réponse au PUT contient l'URL finale du média.
Arguments
filename Nom du fichier avec son extension, jusqu'à 255 caractères.
contentType Type MIME du fichier, parmi la liste autorisée d'images et de vidéos.
sizeBytes Taille exacte du fichier en octets, utilisée pour signer l'envoi.
Retourne
Un objet avec uploadId, uploadUrl, uploadToken, expiresInSeconds et instructions contenant la commande PUT exacte.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":23,
"params":{"name":"request_asset_upload",
"arguments":{"filename":"clip.mp4","contentType":"video/mp4","sizeBytes":4194304}}}
get_latest_blog_post
Indique si l'équipe a un blog WordPress connecté, avec un extrait de l'article le plus récent. En lecture seule et sans coût en crédits. À appeler avant create_blog_plan ou test_blog_connection pour voir ce qui est déjà en place.
Arguments
Aucun argument.
Retourne
Un objet avec blogConnected, un résumé de l'intégration sans identifiants, et latestPost avec son titre, son extrait, son statut et son URL publiée.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":24,
"params":{"name":"get_latest_blog_post",
"arguments":{}}}
list_blog_plans
Liste les plans de blog de l'équipe, du plus récent au plus ancien, avec leur statut, le nombre de sujets par statut, les crédits réservés et un lien vers le tableau de bord. En lecture seule et sans coût en crédits.
Arguments
limit Nombre maximal de plans renvoyés (1-50, 20 par défaut).
status Filtrer par statut : generating, active, paused, completed, cancelled ou failed.
Retourne
Un objet avec plans et total. Chaque plan porte son id, son statut, son nombre de sujets et le lien vers le tableau de bord.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":25,
"params":{"name":"list_blog_plans",
"arguments":{"status":"active","limit":10}}}
create_blog_plan Paid plan
Crée un plan de contenu de blog pour un profil de marque. Les sujets sont générés de façon asynchrone : le plan revient immédiatement au statut generating, interrogez list_blog_plans pour suivre l'avancement. Avec les formules Business et Teams, les articles sont en plus générés et publiés sur un blog WordPress connecté.
Arguments
startDate Premier jour couvert par le plan, au format YYYY-MM-DD.
planDays Nombre de jours couverts par le plan (1-30, 7 par défaut).
brandProfileId Profil de marque à planifier. Par défaut, le profil actif de l'équipe.
integrationId Quel blog connecté utiliser, quand l'équipe en a plusieurs.
autoPublish Publier automatiquement les articles générés sur le blog connecté (Business et Teams).
Retourne
Un objet avec planId, status, startDate, planDays, brandProfileId, integrationId, topicCount et dashboardUrl.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":26,
"params":{"name":"create_blog_plan",
"arguments":{"startDate":"2026-10-01","planDays":14,"autoPublish":true}}}
test_blog_connection Paid plan
Vérifie que le blog WordPress connecté répond et que son jeton est toujours valide, et enregistre le résultat sur l'intégration. Renvoie la version du plugin et ce qu'il sait faire.
Arguments
integrationId Quel blog connecté utiliser, quand l'équipe en a plusieurs.
Retourne
Un objet avec success, message, version, capabilities, integrationId et le status mis à jour.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":27,
"params":{"name":"test_blog_connection",
"arguments":{}}}
list_mini_sites
Liste les pages de bio de l'équipe sélectionnée, avec leur URL publique, leur état de publication et l'avancement de la configuration. Commencez par là : tous les autres outils de page de bio prennent le siteId renvoyé ici, et peuvent s'en passer quand l'équipe n'a qu'une seule page.
Arguments
Aucun argument.
Retourne
Un objet avec sites, chacun portant id, slug, name, published, url, views et l'avancement de la configuration.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":28,
"params":{"name":"list_mini_sites",
"arguments":{}}}
get_mini_site
Lit une page de bio en entier : en-tête de profil, icônes sociales, tous les blocs de contenu, métadonnées SEO, thème et réglages d'épinglage automatique. Les textes longs sont réduits à un aperçu de 300 caractères, et aucun identifiant n'est jamais renvoyé.
Arguments
siteId Sur quelle page de bio agir. À omettre quand l'équipe n'en a qu'une.
Retourne
Un objet avec id, slug, published, url, header, socials, meta, theme, autoPin, campaign et le tableau blocks.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":29,
"params":{"name":"get_mini_site",
"arguments":{}}}
get_mini_site_analytics
Les performances d'une page de bio : vues, clics, meilleurs liens, source, appareil et pays des visiteurs, lectures par les robots d'IA, et quelles publications ont amené des clics. Tous les chiffres sauf les lignes d'attribution sont des compteurs depuis le début, et non sur la période : précisez-le en présentant les résultats.
Arguments
siteId Sur quelle page de bio agir. À omettre quand l'équipe n'en a qu'une.
attributionDays Fenêtre en jours pour l'attribution publication vers clic (1-90, 30 par défaut).
Retourne
Un objet avec viewsAllTime, clicksAllTime, topLinks, bySource, byDevice, byCountry, ai, attribution et attributionWindowDays.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":30,
"params":{"name":"get_mini_site_analytics",
"arguments":{"attributionDays":30}}}
add_mini_site_block
Ajoute un bloc à une page de bio : link, featured, product, event, presave, épisode de podcast, booking, horaires, header, text, image ou gallery. Les champs obligatoires changent selon le type. La page publique est modifiée immédiatement.
Arguments
siteId Sur quelle page de bio agir. À omettre quand l'équipe n'en a qu'une.
type Type de bloc à ajouter, par exemple link, product, event, hours ou gallery.
... Plus les champs propres à ce type de bloc, par exemple url, title, price ou startDate.
Retourne
Un objet avec le block enregistré, le nouveau blockCount et alreadyExisted si ce même bloc était déjà présent.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":31,
"params":{"name":"add_mini_site_block",
"arguments":{"type":"link","url":"https://example.com","title":"New single"}}}
update_mini_site_block
Modifie un bloc existant : le titre ou l'URL d'un lien, le prix d'un produit, la date d'un événement, les horaires ou l'ordre d'affichage. Seuls les champs transmis changent, et le type de bloc ne peut pas être modifié. La réponse renvoie le bloc tel qu'il a été enregistré, ce qui rend visible toute valeur refusée.
Arguments
siteId Sur quelle page de bio agir. À omettre quand l'équipe n'en a qu'une.
blockId Id du bloc, tel que renvoyé par get_mini_site.
... Plus les champs propres à ce type de bloc, par exemple url, title, price ou startDate.
Retourne
Un objet avec le block tel qu'enregistré, la liste des champs mis à jour et ceux qui ont été ignorés.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":32,
"params":{"name":"update_mini_site_block",
"arguments":{"blockId":"blk_7f3a","title":"Updated title"}}}
remove_mini_site_block
Supprime un bloc d'une page de bio à partir de son blockId, par exemple une date de tournée passée ou un lien produit retiré. Appelez d'abord get_mini_site pour trouver l'id. La page publique est modifiée immédiatement.
Arguments
siteId Sur quelle page de bio agir. À omettre quand l'équipe n'en a qu'une.
blockId Id du bloc, tel que renvoyé par get_mini_site.
Retourne
Un objet avec removed, le blockId et le nombre de blocs restants.
Exemple
{"jsonrpc":"2.0","method":"tools/call","id":33,
"params":{"name":"remove_mini_site_block",
"arguments":{"blockId":"blk_7f3a"}}}
Ressources MCP
Les ressources sont du contexte en lecture seule que le client peut récupérer via la méthode MCP resources/read. Claude les charge au début de chaque conversation pour avoir le contexte compte/équipe/marque sans qu'il faille le réexpliquer à chaque fois.
postnext://account/summary
E-mail et identifiant du compte (pour que Claude confirme avec quel compte il opère), forfait, crédits IA utilisés / limite, nombre de brouillons, nombre de planifiés, canaux connectés. Comptages plafonnés à 100 chacun pour un chargement rapide.
postnext://channels/connected
Même forme que le résultat de list_connected_accounts; exposé en tant que ressource pour que Claude le charge une fois au début de la conversation (pas d'aller-retour d'appel d'outil).
postnext://brand-profiles/active
Le profil de marque actif de l'utilisateur (par défaut de l'équipe, avec repli sur le premier profil propre). Renvoie uniquement les champs pertinents pour le LLM : bio, expertiseAreas, personalityTraits, brandVoice, mainThemes, audienceSize, preferredHashtags.
postnext://teams/current
Métadonnées de l'équipe actuelle (teamId, teamName) plus totalTeamsAvailable. À combiner avec list_teams + set_current_team pour changer.
Workflows nommés
Raccourcis slash qui orchestrent plusieurs outils. Choisissez-en un et laissez votre assistant IA dérouler une tâche en plusieurs étapes, avec confirmation avant toute modification.
/weekly-plan
Lit le profil de marque, les canaux connectés et la file, puis propose 5-10 brouillons répartis du lundi au vendredi.
/draft-thread
Rédige un fil de 5-10 publications pour Twitter ou Threads à partir d'un sujet ou d'une URL que vous fournissez, dans le ton de votre marque.
/audit-queue
Parcourt les 7 prochains jours de publications planifiées et signale doublons, surcharge de plateforme et créneaux vides.
/channel-sweep
Compare les canaux connectés à la liste des plateformes prises en charge et suggère lesquels connecter ou rafraîchir.
Endpoints de découverte et OAuth
Métadonnées conformes aux standards pour qu'un client MCP puisse s'auto-configurer.
GET /.well-known/oauth-protected-resource/api— RFC 9728GET /.well-known/oauth-authorization-server— RFC 8414GET /oauth/.well-known/openid-configuration— OIDCPOST /oauth/reg— Dynamic Client Registration (RFC 7591)GET /oauth/auth— Authorize (PKCE-S256 required)POST /oauth/token— Token exchange
Open source
Des recettes prêtes à copier et une référence orientée développeurs vivent dans notre dépôt de docs public. Sous licence MIT ; pull requests bienvenues. github.com/postnextio/postnext-mcp
Pilote tes canaux sociaux depuis n'importe quel assistant IA
Planifie, rédige, programme et audite des publications sur 7 plateformes en discutant avec Claude, ChatGPT ou Cursor. Une connexion sécurisée, toutes les fonctionnalités PostNext.