Dos vías de entrada
cmssy expone tu contenido mediante una API de entrega pública para el renderizado y un servidor MCP para todo lo que escribe.
cmssy expone tu contenido mediante dos superficies programáticas. La API de entrega lee el contenido publicado para que tu frontend pueda renderizarlo. El servidor MCP lee y escribe todo lo demás, y es al que se conectan clientes de IA como Claude.
API de entrega
Cada página publicada, layout y ajuste del sitio se lee a través de un único endpoint GraphQL:
https://api.cmssy.io/public/{org}/{workspace}/graphqlEl SDK construye esa ruta a partir de tu apiUrl, org y workspaceSlug, así que defines tres valores de configuración y nunca montas una URL a mano. Como la organización va en la ruta, un slug de workspace solo necesita ser único dentro de su organización.
Las consultas bajo la raíz public no necesitan token: cmssy solo devuelve ahí contenido publicado. Es exactamente lo que llama @cmssy/next al renderizar una página, así que rara vez la consultas a mano. Úsala directamente cuando construyas algo que el SDK no cubre: un sitemap, un feed RSS, un índice de búsqueda.
Las operaciones que tu frontend usa de verdad:
public.page.list- cada página publicada:id,slug,updatedAt,publishedAt.public.page.get- una página por slug, con su título SEO, descripción y palabras clave.public.page.getById- lospublishedBlocksde una página: las instancias de bloque que forman su cuerpo.public.page.layouts- los bloques de layout de cabecera y pie de una página.public.siteConfig- nombre del sitio, idioma por defecto e idiomas activos, branding.
Una consulta mínima: la que hay detrás de los static params y el sitemap en todo frontend de cmssy:
query PublicPages($workspaceSlug: String!) {
public {
page {
list(workspaceSlug: $workspaceSlug) {
id
slug
updatedAt
publishedAt
}
}
}
}El contenido de los bloques vuelve como JSON indexado por idioma, así que content.es.title es el título en español de esa instancia de bloque. Los campos de relación guardan ids de registros; la API de entrega los resuelve a registros completos en el momento del renderizado.
La escritura aquí es deliberadamente estrecha. La única mutación pública es el envío de formularios:
mutation SubmitForm($formId: ID!, $input: SubmitFormInput!) {
public {
form {
submit(formId: $formId, input: $input) {
success
message
submissionId
}
}
}
}Servidor MCP
Crear páginas, editar contenido de bloques, subir medios, gestionar modelos y registros, publicar: todo eso pasa por el servidor MCP. Habla Model Context Protocol, así que un cliente de IA se conecta y edita tu contenido directamente. Nunca toca tu código: los esquemas de bloques se quedan en tu repositorio, el contenido se queda en cmssy.
También es un buen objetivo para scripts sin IA de por medio: las mismas herramientas se invocan desde cualquier cliente MCP.
¿Cuál uso?
- Renderizar tu sitio - API de entrega, a través de
@cmssy/next. - Sitemaps, feeds, índices de búsqueda - API de entrega, llamada directamente.
- Crear o editar contenido - servidor MCP.
- Migraciones y scripts de contenido - servidor MCP con un token de API.
Autenticación
Las lecturas públicas no requieren credenciales. Todo lo que escribe, o lo que lee borradores sin publicar, necesita un token de API del workspace: consulta Tokens de API para crearlo y acotarlo.