API & IA

Outils API & IA

Gérez votre contenu par programmation - le serveur MCP pour les clients IA et l'API de diffusion de contenu.

Deux points d'entrée

cmssy expose vos contenus via une API de diffusion publique pour le rendu, et un serveur MCP pour tout ce qui écrit.

cmssy expose vos contenus via deux surfaces programmatiques. L'API de diffusion lit le contenu publié pour que votre frontend puisse l'afficher. Le serveur MCP lit et écrit tout le reste - c'est à lui que se connectent les clients IA comme Claude.

API de diffusion

Chaque page publiée, chaque layout et chaque réglage du site se lit via un seul endpoint GraphQL :

https://api.cmssy.io/public/{org}/{workspace}/graphql

Le SDK construit ce chemin à partir de vos apiUrl, org et workspaceSlug : vous définissez trois valeurs de configuration et n'assemblez jamais d'URL vous-même. Comme l'organisation figure dans le chemin, un slug d'espace de travail n'a besoin d'être unique qu'au sein de son organisation.

Les requêtes sous la racine public ne nécessitent aucun jeton - cmssy n'y renvoie que du contenu publié. C'est exactement ce qu'appelle @cmssy/next au rendu d'une page, vous l'interrogez donc rarement à la main. Adressez-vous-y directement quand vous construisez ce que le SDK ne couvre pas : un sitemap, un flux RSS, un index de recherche.

Les opérations réellement utilisées par votre frontend :

  • public.page.list - chaque page publiée : id, slug, updatedAt, publishedAt.
  • public.page.get - une page par slug, avec son titre SEO, sa description et ses mots-clés.
  • public.page.getById - les publishedBlocks d'une page : les instances de blocs qui composent son corps.
  • public.page.layouts - les blocs de layout header et footer d'une page.
  • public.siteConfig - nom du site, langue par défaut et langues activées, branding.

Une requête minimale - celle qui alimente les static params et le sitemap de tout frontend cmssy :

query PublicPages($workspaceSlug: String!) {
  public {
    page {
      list(workspaceSlug: $workspaceSlug) {
        id
        slug
        updatedAt
        publishedAt
      }
    }
  }
}

Le contenu des blocs revient en JSON indexé par langue : content.fr.title est donc le titre français de cette instance de bloc. Les champs de relation stockent des identifiants d'enregistrements ; l'API de diffusion les résout en enregistrements complets au moment du rendu.

L'écriture est ici volontairement restreinte. La seule mutation publique est l'envoi de formulaire :

mutation SubmitForm($formId: ID!, $input: SubmitFormInput!) {
  public {
    form {
      submit(formId: $formId, input: $input) {
        success
        message
        submissionId
      }
    }
  }
}

Serveur MCP

Créer des pages, modifier le contenu des blocs, téléverser des médias, gérer modèles et enregistrements, publier - tout cela passe par le serveur MCP. Il parle le Model Context Protocol : un client IA s'y connecte et modifie vos contenus directement. Il ne touche jamais à votre code : les schémas de blocs restent dans votre dépôt, le contenu reste dans cmssy.

C'est aussi une bonne cible de scripting sans aucune IA - les mêmes outils s'appellent depuis n'importe quel client MCP.

Lequel utiliser ?

  • Afficher votre site - API de diffusion, via @cmssy/next.
  • Sitemaps, flux, index de recherche - API de diffusion, appelée directement.
  • Créer ou modifier du contenu - serveur MCP.
  • Migrations et scripts de contenu - serveur MCP avec un jeton API.

Authentification

Les lectures publiques ne demandent aucune information d'identification. Tout ce qui écrit, ou qui lit des brouillons non publiés, exige un jeton API d'espace de travail - voir Jetons API pour en créer un et en limiter la portée.