VTEX · Capability

VTEX Headless CMS — Pages

VTEX Headless CMS — Pages. 3 operations. Lead operation: VTex Get all content types. Self-contained Naftiko capability covering one Vtex business surface.

Run with Naftiko VtexPages

What You Can Do

GET
Getallcontenttypes — VTex Get all content types
/v1/v/cms/api/{projectid}
GET
Getpagesbycontenttype — VTex Get all CMS pages by content type
/v1/v/cms/api/{projectid}/{content-type}
GET
Getcmspage — VTex Get CMS page
/v1/v/cms/api/{projectid}/{content-type}/{document-id}

MCP Tools

vtex-get-all-content-types

VTex Get all content types

read-only idempotent
vtex-get-all-cms-pages

VTex Get all CMS pages by content type

read-only idempotent
vtex-get-cms-page

VTex Get CMS page

read-only idempotent

Capability Spec

headless-cms-pages.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: VTEX Headless CMS — Pages
  description: 'VTEX Headless CMS — Pages. 3 operations. Lead operation: VTex Get all content types. Self-contained Naftiko
    capability covering one Vtex business surface.'
  tags:
  - Vtex
  - Pages
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    VTEX_API_KEY: VTEX_API_KEY
capability:
  consumes:
  - type: http
    namespace: headless-cms-pages
    baseUri: https://{accountName}.myvtex.com
    description: VTEX Headless CMS — Pages business capability. Self-contained, no shared references.
    resources:
    - name: _v-cms-api-projectId
      path: /_v/cms/api/{projectId}
      operations:
      - name: getallcontenttypes
        method: GET
        description: VTex Get all content types
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: projectId
          in: path
          type: string
          description: Project ID specified in the settings of the CMS (alpha) app.
          required: true
    - name: _v-cms-api-projectId-content-type
      path: /_v/cms/api/{projectId}/{content-type}
      operations:
      - name: getpagesbycontenttype
        method: GET
        description: VTex Get all CMS pages by content type
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: projectId
          in: path
          type: string
          description: Project ID specified in the settings of the CMS (alpha) app.
          required: true
        - name: content-type
          in: path
          type: string
          description: Content type identifier defined in the FastStore project.
          required: true
        - name: versionId
          in: query
          type: string
          description: Version ID presented in the URL path of a CMS preview.
        - name: releaseId
          in: query
          type: string
          description: Release ID presented in the URL path of a CMS preview.
        - name: filters[{field}]
          in: query
          type: string
          description: Filter results by a property of the page (e.g., `filters[status]`) or by a nested custom field of the
            `parameters` object (e.g., `filters[parameters.collection.
    - name: _v-cms-api-projectId-content-type-document-id
      path: /_v/cms/api/{projectId}/{content-type}/{document-id}
      operations:
      - name: getcmspage
        method: GET
        description: VTex Get CMS page
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: projectId
          in: path
          type: string
          description: Project ID specified in the settings of the CMS (alpha) app.
          required: true
        - name: content-type
          in: path
          type: string
          description: Content type ID defined in the FastStore project.
          required: true
        - name: document-id
          in: path
          type: string
          description: Document ID presented in the URL path of a CMS preview.
          required: true
        - name: versionId
          in: query
          type: string
          description: Version ID presented in the URL path of a CMS preview.
        - name: releaseId
          in: query
          type: string
          description: Release ID presented in the URL path of a CMS preview.
  exposes:
  - type: rest
    namespace: headless-cms-pages-rest
    port: 8080
    description: REST adapter for VTEX Headless CMS — Pages. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/v/cms/api/{projectid}
      name: v-cms-api-projectid
      description: REST surface for _v-cms-api-projectId.
      operations:
      - method: GET
        name: getallcontenttypes
        description: VTex Get all content types
        call: headless-cms-pages.getallcontenttypes
        with:
          projectId: rest.projectId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v/cms/api/{projectid}/{content-type}
      name: v-cms-api-projectid-content-type
      description: REST surface for _v-cms-api-projectId-content-type.
      operations:
      - method: GET
        name: getpagesbycontenttype
        description: VTex Get all CMS pages by content type
        call: headless-cms-pages.getpagesbycontenttype
        with:
          projectId: rest.projectId
          content-type: rest.content-type
          versionId: rest.versionId
          releaseId: rest.releaseId
          filters[{field}]: rest.filters[{field}]
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v/cms/api/{projectid}/{content-type}/{document-id}
      name: v-cms-api-projectid-content-type-document-id
      description: REST surface for _v-cms-api-projectId-content-type-document-id.
      operations:
      - method: GET
        name: getcmspage
        description: VTex Get CMS page
        call: headless-cms-pages.getcmspage
        with:
          projectId: rest.projectId
          content-type: rest.content-type
          document-id: rest.document-id
          versionId: rest.versionId
          releaseId: rest.releaseId
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: headless-cms-pages-mcp
    port: 9090
    transport: http
    description: MCP adapter for VTEX Headless CMS — Pages. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: vtex-get-all-content-types
      description: VTex Get all content types
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: headless-cms-pages.getallcontenttypes
      with:
        projectId: tools.projectId
      outputParameters:
      - type: object
        mapping: $.
    - name: vtex-get-all-cms-pages
      description: VTex Get all CMS pages by content type
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: headless-cms-pages.getpagesbycontenttype
      with:
        projectId: tools.projectId
        content-type: tools.content-type
        versionId: tools.versionId
        releaseId: tools.releaseId
        filters[{field}]: tools.filters[{field}]
      outputParameters:
      - type: object
        mapping: $.
    - name: vtex-get-cms-page
      description: VTex Get CMS page
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: headless-cms-pages.getcmspage
      with:
        projectId: tools.projectId
        content-type: tools.content-type
        document-id: tools.document-id
        versionId: tools.versionId
        releaseId: tools.releaseId
      outputParameters:
      - type: object
        mapping: $.