Common workflows with CMS tools
This page provides practical examples of how Opal uses CMS tools to accomplish common tasks. Use these as a reference when building prompts or testing tool behavior.
Create a page with content
A typical content creation workflow involves creating the content type (if needed), creating a content item, populating its properties, and publishing it.
List available content types
- Tool – paas_cms_list_content_types
- Parameters
{ "baseType": "_page" }Returns all page content types with their names, keys, and property counts.
Create a content item
- Tool – paas_cms_create_content_item
- Parameters
{
"contentType": "StandardPage",
"displayName": "About Us",
"routeSegment": "about-us",
"locale": "en"
}Returns contentKey (GUID) and contentVersion for subsequent operations.
Populate content properties
- Tool – paas_cms_update_content_item
- Parameters
{
"contentKey": "c3558e08-00a6-45d0-bfff-5bd2bda3acb5",
"contentVersion": 1,
"properties": "{\"MainBody\": \"<p>Welcome to our company...</p>\", \"TeaserText\": \"Learn about our mission and values.\"}"
}Publish the page
- Tool – paas_cms_publish_content_item
- Parameters
{
"contentKey": "c3558e08-00a6-45d0-bfff-5bd2bda3acb5",
"contentVersion": 1
}Create a custom content type
Build a new content type and organize properties into groups.
Check current property groups
- Tool – paas_cms_list_property_groups
Returns available property groups (tabs) you can use to organize properties.
Create a property group (if needed)
- Tool – paas_cms_create_property_group
- Parameters
{
"key": "SEO_Settings",
"sortOrder": 200
}Create the content type
- Tool – paas_cms_create_content_type
- Parameters
{
"key": "BlogPost",
"displayName": "Blog Post",
"description": "A blog post with author, date, and rich content",
"baseType": "_page",
"properties": "[{\"name\": \"Author\", \"type\": \"string\", \"group\": \"Content\"}, {\"name\": \"PublishDate\", \"type\": \"string\", \"group\": \"Content\"}, {\"name\": \"MainBody\", \"type\": \"richtext\", \"group\": \"Content\"}, {\"name\": \"MetaTitle\", \"type\": \"string\", \"group\": \"SEO_Settings\"}, {\"name\": \"MetaDescription\", \"type\": \"string\", \"group\": \"SEO_Settings\"}]"
}Verify the content type
- Tool – paas_cms_get_content_type_details
- Parameters
{ "contentTypeKey": "BlogPost" }Returns the full content type definition with all properties.
Create a localized version
Create a translated version of existing content for a different locale.
Get the original content
- Tool – paas_cms_get_content_data
- Parameters
{
"contentKey": "c3558e08-00a6-45d0-bfff-5bd2bda3acb5"
}Create a locale variation
- Tool – paas_cms_create_content_variation
- Parameters
{
"contentKey": "c3558e08-00a6-45d0-bfff-5bd2bda3acb5",
"variationKey": "Swedish",
"locale": "sv",
"displayName": "Om oss"
}Set translated properties
- Tool – paas_cms_update_content_item
- Parameters
{
"contentKey": "c3558e08-00a6-45d0-bfff-5bd2bda3acb5",
"contentVersion": 2,
"properties": "{\"MainBody\": \"<p>Välkommen till vårt företag...</p>\", \"TeaserText\": \"Läs om vårt uppdrag och våra värderingar.\"}"
}Publish the variation
- Tool – paas_cms_publish_content_item
- Parameters
{
"contentKey": "c3558e08-00a6-45d0-bfff-5bd2bda3acb5",
"contentVersion": 2
}Optimize content for SEO
Analyze existing content and apply Search Engine Optimization (SEO) improvements.
Get a preview URL
- Tool – paas_cms_get_content_preview_url
- Parameters
{
"contentKey": "c3558e08-00a6-45d0-bfff-5bd2bda3acb5",
"contentVersion": 1
}Run SEO analysis
- Tool – paas_cms_seo_analysis
- Parameters
{
"contentKey": "c3558e08-00a6-45d0-bfff-5bd2bda3acb5",
"previewUrl": "https://mysite.com/about-us",
"question": "How can I improve search rankings for this page?"
}Returns detailed analysis with recommended values for SEO fields.
Apply SEO recommendations
- Tool – paas_cms_seo_edit
- Parameters
{
"contentKey": "c3558e08-00a6-45d0-bfff-5bd2bda3acb5",
"recommendedValues": "{\"MetaTitle\": \"About Us | Company Name\", \"MetaDescription\": \"Learn about our mission, values, and team.\"}",
"actualPropertyNames": "{\"MetaTitle\": \"MetaTitle\", \"MetaDescription\": \"MetaDescription\"}"
}Add schema markup
Improve content discoverability for AI and search engines using JSON-LD structured data.
Run Generative Engine Optimization (GEO) analysis
- Tool – paas_cms_geo_analysis
- Parameters
{
"contentKey": "c3558e08-00a6-45d0-bfff-5bd2bda3acb5",
"previewUrl": "https://mysite.com/about-us"
}Returns a comprehensive LLM discoverability audit with JSON-LD schema recommendations.
Apply JSON-LD templates
- Tool – paas_cms_geo_apply
- Parameters
{
"contentKey": "c3558e08-00a6-45d0-bfff-5bd2bda3acb5",
"jsonLdTemplates": "{\"Organization\": {\"@context\": \"https://schema.org\", \"@type\": \"Organization\", \"name\": \"Company Name\", \"url\": \"https://mysite.com\"}}"
}Upload a media asset
Upload an image or other file into CMS from a public URL.
Upload the file
- Tool – paas_cms_upload_media
- Parameters
{
"FileUrl": "https://example.com/images/hero.jpg",
"FileName": "hero.jpg",
"DisplayName": "Homepage hero"
}Downloads the file and creates a media asset in the global shared asset folder. The CMS media content type is auto-selected from the file extension unless you set ContentType. To upload into a specific folder, provide its GUID in Container.
Create a Visual Builder display template
Define a display template (style) and scope it to a content type, base type, or layout node.
Review existing display templates
- Tool – paas_cms_list_display_templates
Returns all display templates so you can check existing keys and scopes before adding a new one.
Create the display template
- Tool – paas_cms_create_display_template
- Parameters
{
"DisplayName": "Hero Block – Wide",
"ContentType": "HeroBlock",
"Settings": {
"width": {
"displayName": "Width",
"choices": { "full": "Full width", "contained": "Contained" }
}
}
}Scope the template to exactly one of ContentType, BaseType (Section or Experience), or NodeType (experience, section, row, or column).
Update the display template
- Tool – paas_cms_update_display_template
- Parameters
{
"Key": "HeroBlockWide",
"IsDefault": true
}Only the fields you provide are updated. Note that Settings uses REPLACE semantics: when provided, the entire settings collection is replaced, so send the complete set.
Schedule content for future publish
Create content now and schedule it to go live at a specific date and time.
Create and populate content
Follow the Create a page with content workflow (steps 1–3).
Schedule publish
- Tool – paas_cms_publish_content_item
- Parameters
{
"contentKey": "c3558e08-00a6-45d0-bfff-5bd2bda3acb5",
"contentVersion": 1,
"scheduledPublishDate": "2026-04-01T09:00:00Z"
}Optimizely automatically publishes the content at the specified date and time.