HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityAcademySubmit a ticketLog In
Dev Guide

Available tools for CMS 13

Lists the tools available in Optimizely Opal for CMS 13 including any required or optional parameters.

The CMS Opal Tools package provides AI-powered tools for content management. Opal invokes all tools and requires Opti ID authentication.

Content type tools

Manage content type definitions in CMS. These tools require CMS administrator permissions.

  • paas_cms_list_content_types – Lists all content types in CMS, optionally filtered by base type (_page, _component, _media, _image, _video). Returns type name, key, base type, and property count.

    ParameterTypeRequiredDescription
    baseTypestringNoFilter by base type: _page, _component, _media, _image, _video
  • paas_cms_get_content_type_details – Retrieves detailed information about a specific content type, including all property definitions with types, validation rules, and group assignments.

    ParameterTypeRequiredDescription
    contentTypeKeystringYesThe key (name) of the content type
  • paas_cms_create_content_type – Creates a content type with a key, display name, base type, and property definitions. Properties support types like string, richtext, number, boolean, contentReference, and contentArea.

    ParameterTypeRequiredDescription
    keystringYesUnique machine-readable key (for example, NewsArticle).
    displayNamestringYesHuman-readable name (for example, News Article).
    descriptionstringNoDescription of the content type's purpose.
    baseTypestringYesBase type: _page, _block, _component, _media, _image, or _video.
    propertiesstringNoJSON array of property definitions.
  • paas_cms_update_content_type – Modifies an existing content type's display name, description, or property definitions. Can add, update, or remove properties.

    ParameterTypeRequiredDescription
    contentTypeKeystringYesThe key of the content type to update.
    displayNamestringNoDisplay name.
    descriptionstringNoDescription.
    propertiesstringNoJSON array of property definitions to add or update.
  • paas_cms_delete_content_type – Deletes a content type from CMS. The content type must not have any existing content instances.

    ParameterTypeRequiredDescription
    contentTypeKeystringYesThe key of the content type to delete.

Property group tools

Manage property groups (tabs) used to organize content type properties in the editing UI. These tools require CMS administrator permissions.

  • paas_cms_list_property_groups – Lists all property groups in CMS with their names and sort order.

  • paas_cms_create_property_group – Creates a property group with a unique key and optional sort order.

    ParameterTypeRequiredDescription
    keystringYesUnique machine-readable key (for example, SEO_Settings).
    sortOrderintegerNoDisplay sort order in the CMS UI (default: 100).

Content item tools

Create, read, update, and delete content items. All operations respect the authenticated user's CMS permissions.

  • paas_cms_get_content_data – Retrieves a content item's data including all non-metadata properties. Fetches a specific version or the latest published version.

  • ParameterTypeRequiredDescription
    contentKeystringYesGUID of the content item.
    contentVersionintegerNoSpecific version number (omit for latest published).
  • paas_cms_update_content_item – Creates or updates a content item. Omit contentKey to create a item and set its properties in a single call (requires contentType, displayName, and locale). Provide contentKey and contentVersion to update an existing item. Returns the contentKey and contentVersion for subsequent operations such as publishing.

    ParameterTypeRequiredDescription
    contentKeystringNoGUID of the content item to update. Omit to create an item.
    contentVersionintegerNoVersion number to update. Required when updating an existing item. Use 0 for published content (a draft is created automatically). Omit when creating.
    propertiesobjectYesJSON object of property name and value pairs. Uses JSON Merge Patch semantics: only provided properties are updated. See Property write outcomes.
    compositionobjectNoComposition layout for Experience content types. Contains a nodes array that describes the section, row, column, and component hierarchy. See Composition writes.
    allowNodeRemovalbooleanNoPermits a composition write that detaches nodes stored on the experience. Defaults to false, so the tool refuses such a write and names the nodes that would be lost.
    contentTypestringNoContent type name. Required when creating (that is, contentKey is omitted).
    displayNamestringNoDisplay name for the content item. Required when creating.
    containerstringNoGUID of the parent container. Omit for default placement. Only used when creating.
    routeSegmentstringNoURL segment for page routing (for example, about-us). Only used when creating.
    localestringNoLocale code (for example, en or sv). Required when creating.
  • paas_cms_delete_content_item – Moves a content item to the waste basket. An editor can restore the item.

    ParameterTypeRequiredDescription
    contentKeystringYesGUID of the content item to delete.
  • paas_cms_publish_content_item – Publishes a content item immediately or schedules it for a future date and time. Requires a content version number.

    ParameterTypeRequiredDescription
    contentKeystringYesGUID of the content item.
    contentVersionintegerYesVersion number to publish.
    scheduledPublishDatestringNoISO 8601 date and time for scheduled publishing.

Composition writes

A composition write updates the stored layout of an Experience content item. Read the layout with paas_cms_get_content_data, change the parts you want, and send it back. A layout written back exactly as read stays unchanged. You do not have to send the whole tree on every write (see the following paragraph on omitting nodes).

Each node keeps its identity through propertyBinding on sections and components, or id on rows and columns. A node that carries a resolvable identity keeps its stored content, display template, and display settings. The tool creates a new node when the identity cannot be resolved.

Omitting the nodes array on a section, row, or column keeps the children stored under it. Sending "nodes": [] empties it. This distinction lets you edit one branch of the layout without listing the whole tree.

The tool refuses a write that would detach stored nodes and names up to 10 of them. Re-list the missing nodes, or omit nodes on their parent to keep its children. Set allowNodeRemoval to true when you intend to remove the nodes. Removed nodes stay in CMS 13 and lose their place on the experience.

A response that includes a composition reports the counts of added, removed, and retained nodes.

Property write outcomes

paas_cms_update_content_item confirms that each property you supply is stored. When you supply properties, the response includes a properties array with one entry per property. Read it to confirm a write took effect without fetching the content item again.

The properties array reports one of three outcomes per property:

  • written – A value is stored, or you supplied an empty value and the stored value is empty.
  • notPersisted – You supplied a value and nothing is stored. The tool reports the update as a failure.
  • unverified – The stored value could not be read back. The tool reports the update as a success.

The check confirms that a value is stored, not that it matches what you sent. CMS 13 reshapes some values as it saves them, such as normalizing rich text or reducing date precision. Those values still report written.

A notPersisted property sets "success": false on the response. The save still happened, and the other properties are stored. For the causes and what to do next, go to Troubleshoot Optimizely Opal tools.

Content variation tool

Create locale variations (translations) of existing content items.

  • paas_cms_create_content_variation – Creates a locale variation of a page or experience content item. After creation, use paas_cms_update_content_item to set properties that differ from the default version.

    ParameterTypeRequiredDescription
    contentKeystringYesGUID of the content item.
    variationKeystringYesUnique key for the variation (for example, Holiday2024).
    localestringNoLocale code for the variation.
    displayNamestringNoDisplay name (defaults to variation key).

Preview tool

Generate preview URLs for content items.

  • paas_cms_get_content_preview_url – Generates a preview URL for a specific content version, letting Opal fetch and analyze the rendered HTML.

    ParameterTypeRequiredDescription
    contentKeystringYesGUID of the content item.
    contentVersionintegerYesVersion number to preview.

SEO tools

AI-powered Search Engine Optimization (SEO) analysis and editing capabilities.

  • paas_cms_seo_analysis – Analyzes content SEO performance and provides AI-powered recommendations. Extracts all content properties and metadata for comprehensive analysis including title tags, meta descriptions, heading structure, and keyword optimization.

    ParameterTypeRequiredDescription
    contentKeystringYesGUID of the content item.
    questionstringNoFocus area for the analysis.
    previewUrlstringNoPreview URL for rendered HTML analysis.
  • paas_cms_seo_edit – Applies SEO recommendations to CMS content. Provides an interactive form for editing SEO fields such as meta titles, descriptions, and social media tags. Use after running SEO analysis.

    ParameterTypeRequiredDescription
    contentKeystringYesGUID of the content item.
    recommendedValuesstringNoJSON object of recommended SEO values.
    actualPropertyNamesstringNoJSON object mapping SEO field names to CMS property names.

GEO tools

Analyze content for large language model (LLM) discoverability and apply JSON-LD schema markup for Generative Engine Optimization (GEO).

  • paas_cms_geo_analysis – Performs an AI-powered audit of content for LLM discoverability. Analyzes reachability, robots controls, structured data, content clarity, performance signals, and so on. Generates JSON-LD schema recommendations.

    ParameterTypeRequiredDescription
    contentKeystringYesGUID of the content item.
    previewUrlstringYesPreview URL for the rendered page.
    questionstringNoFocus area for the analysis.
  • paas_cms_geo_apply – Applies JSON-LD schema templates to the content's JsonLdTemplates property. Creates a draft version with the schema markup.

    ParameterTypeRequiredDescription
    contentKeystringYesGUID of the content item.
    jsonLdTemplatesstringYesJSON-LD schema templates to apply.

Display template tools

Manage display templates (Visual Builder styles and layouts).

A display template is scoped to exactly one of the following:

  • A specific content type. For example, HeroBlock or ArticlePage.

  • A Visual Builder base type. Section or Experience (the _section and _experience forms are also accepted).

  • A layout node type. experience, section, row, or column.

Tools list

  • paas_cms_list_display_templates – Lists all display templates. Takes no parameters.

  • paas_cms_get_display_template – Retrieves one or more display templates by key. Provide either Key or Keys.

    ParameterTypeRequiredDescription
    KeystringNo*Key of a single template to retrieve. Maximum 256 characters.
    KeysstringNo*Comma-separated list of keys for a batch fetch (maximum 20), for example, HeroBlockWide,DefaultSection.

  • paas_cms_create_display_template – Creates a display template. Scope the template to exactly one of NodeType, BaseType, or ContentType.

    ParameterTypeRequiredDescription
    DisplayNamestringYesHuman-readable display name. Maximum 255 characters.
    KeystringNoUnique key (for example, HeroBlockWide). Auto-generated if omitted. Maximum 256 characters.
    NodeTypestringNoLayout node type: experience, section, row, or column (case-insensitive). experience and section are stored as the corresponding base type automatically. Maximum 50 characters.
    BaseTypestringNoVisual Builder base type: Section or Experience (_section or _experience also accepted).
    ContentTypestringNoContent type key (for example, HeroBlock). Maximum 256 characters.
    IsDefaultbooleanNoWhether this is the default template for the scope. Defaults to false.
    SettingsobjectNoSettings as a JSON object. Each key maps to an object with displayName and choices (a map of choice key to display name).
  • paas_cms_update_display_template – Updates an existing display template. Only provided fields are updated. Omitted fields are unchanged.

    ParameterTypeRequiredDescription
    KeystringYesKey of the template to update. Maximum 256 characters.
    DisplayNamestringNoDisplay name. Maximum 255 characters.
    NodeTypestringNoLayout node type (experience, section, row, or column). Leave blank to keep it unchanged. If BaseType is also provided, BaseType takes precedence and the node type is cleared. Maximum 50 characters.
    BaseTypestringNoBase type: Section or Experience (_section or _experience accepted).
    ContentTypestringNoContent type key association. Maximum 256 characters.
    IsDefaultbooleanNoWhether this is the default template for the scope.
    SettingsobjectNoUses REPLACE semantics. When provided, the entire settings collection is replaced. Omit to leave settings unchanged.

Media tool

Upload media assets into CMS.

  • paas_cms_upload_media – Downloads a file from a publicly accessible URL and uploads it as a media asset in CMS.

    ParameterTypeRequiredDescription
    FileUrlstringYesHTTP or HTTPS URL of a publicly accessible file to download and upload.
    FileNamestringYesFilename with extension (for example, photo.jpg). The extension determines the MIME type. Maximum 255 characters.
    DisplayNamestringNoDisplay name in CMS. Defaults to FileName. Maximum 255 characters.
    ContentTypestringNoCMS media content type name. If omitted, auto-selected by matching the file extension to registered media types. Maximum 256 characters.
    ContainerstringNoParent container GUID. Defaults to the global shared asset folder. Maximum 68 characters.


Did this page help you?