Cybersalt Extensions Documentation
Guides and reference for Cybersalt's Joomla extensions
  1. You are here:  
  2. Home
  3. Extensions
  4. MCP for SP Page Builder

MCP for SP Page Builder

MCP for SP Page Builder is a Pro add-on for MCP for J. It gives an AI app connected to your Joomla site 62 tools for JoomShaper's SP Page Builder: read a page as a short outline, add or change one row or addon without rewriting the rest, check a page before it's saved, keep and restore versions, duplicate pages safely and audit every page on the site.

It works with both the Free and Pro editions of SP Page Builder, and it knows which one you have. That matters, because on the Free edition most addons show nothing on the page (see Free and Pro).

New to MCP for SP Page Builder? This page is the reference manual. For an overview of what MCP for SP Page Builder does, with screenshots and the download, see its page on cybersalt.com.

Release history. This page documents version 1.0.6. For what changed in each version, see the changelog.

Requirements. Joomla 5 or 6, PHP 8.2 or newer, MCP for J, and SP Page Builder (Free or Pro) from JoomShaper.

This is a Pro add-on. It's included in an MCP for J Pro membership from cybersalt.com. MCP for J itself is free. The add-on is released under the GNU GPL v2 or later, and the full source is in the download.

A demo SP Page Builder page called Harbourside Bakery on the front end: an intro text block with an Order for pickup button, an Opening hours row, and a three-column row for Bread, Pastry and Coffee ⤢ Click to enlarge
A demo page built entirely through the add-on's tools on a test site running SP Page Builder 6.10.0 Free. The screenshots further down are the real tool responses from building it.

What's in the package

One plugin, System - MCP for SP Page Builder (element csmcpforjsppagebuilder). It adds its tools to MCP for J and has no admin screen of its own, by design: there's nothing to click. The tools appear in your AI app the next time it asks MCP for J for its tool list.

Installing

Install MCP for J first and connect your AI app to it. Then pick one of these:

  1. From inside Joomla (recommended). In Components → MCP for J, link your Cybersalt account on the Dashboard (Pro activation), open Browse MCP Add-ons and install the SP Page Builder add-on. Updates then arrive through Joomla's normal System → Update → Extensions; MCP for J adds your download ID to the update address for you.
  2. From the zip. Log in at cybersalt.com, download the zip from the product page and install it in System → Install → Extensions (or paste your download link into Install from URL).

The plugin switches itself on. The install screen then tells you which edition of SP Page Builder it found and, on Free, what that edition can't do. If SP Page Builder isn't installed yet, it says so; the tools report that the component is missing until you install it.

Installed it before MCP for J? The add-on leaves itself switched off and says so, because on its own it does nothing. Nothing is broken. Install MCP for J, then enable System - MCP for SP Page Builder in System → Plugins.

First steps

Ask your AI app something like "What's on this site's SP Page Builder setup?" or "Is anything broken in SP Page Builder?". Two read-only tools are the best place to start:

  • get_sppagebuilder_component_info: the installed version, the real edition, how many addons can render on this site (and which can't), which integration plugins are present, table row counts and whether production mode is on.
  • check_sppagebuilder_health: the site-wide audit described below.

Take a backup before you let any AI app make changes to a site you care about.

Permissions

The AI can never do more than the Joomla account it acts for could do in SP Page Builder itself. Each tool needs MCP for J's Use permission (reading) or Write permission (changes), and on top of that the same SP Page Builder permission its own screens need:

To do thisThe account needs, in SP Page Builder
Use any tool, including the read-only onesAccess Administration Interface
Change a page: content, rows and addons, settings, custom CSS, versionsEdit on that page, or Edit Own on a page the account created
Create or duplicate a pageCreate (and Edit State to create it published)
Publish, unpublish or trash a page; approve or unapprove commentsEdit State
Delete a page, comment, saved section, saved addon or presetDelete
Change SP Page Builder's settings, switch an addon type on or off, or show API keys in fullConfigure ACL & Options

Permissions set on a single page are respected, so a Deny there holds. When something is refused, the message names the permission that's missing. They're set in SP Page Builder's Options, on the Permissions tab.

HTML is saved as given. Like SP Page Builder's own editor, the tools store page HTML and custom CSS without filtering it. Give SP Page Builder's Edit permission only to accounts you'd trust with raw HTML.

Free and Pro: what actually shows on the page

SP Page Builder Free and Pro install the same 68 addon folders. Free leaves out the front-end renderer for 51 of them, so Free can show 17 of its 68 addons. A page that uses one of the other 51 still saves, still looks fine in the editor and still loads, but that addon shows nothing at all: no error, no placeholder, nothing in a log. heading is one of the 51, and so are raw_html, gallery, form_builder, comment and every Dynamic Content addon.

On the SP Page Builder 6.10.0 Free test site these 17 render: accordion, alert, button, carousel, columns, div, divider, empty space, feature, icon, image, module, row, tab, testimonial, text block and video. The add-on doesn't rely on a fixed list: it checks the files on your site.

Every tool that adds or writes content refuses an addon that can't render on your site and suggests one that can (on Free, a text block with an <h2> in it instead of a heading addon). If you're preparing content for a site that's about to move to Pro, the AI can pass allow_unrenderable to write it anyway.

The add_sppagebuilder_addon response for a heading addon on SP Page Builder Free: ok false, refused because the addon cannot render on this site, with the reason and the list of renderable addons ⤢ Click to enlarge
Asking for a heading addon on SP Page Builder Free. The add-on refuses and lists what can render.

Other differences on Free that the tools take into account:

  • No integration plugins. Free doesn't include the plugin that puts an SP Page Builder layout into a Joomla article, so article layouts can be read and written but never show.
  • No automatic versions. The Free editor never saves page versions. The add-on's version tools still work on Free.
  • Library screens. Free's editor shows an upgrade screen instead of managing typography, icon fonts and saved sections, but the front end still uses that data. Tools that touch it say so.

How it tells Free from Pro

SP Page Builder's own isProVersion() check can't be used: in the Free package it simply returns true (checked in the 6.8.0 and 6.9.1 Free packages). The add-on reads the <variant> element in the component's manifest instead, falls back to the update server address, and then decides what can render by checking each addon's files. That last check is the one that counts.

Part of the get_sppagebuilder_component_info response: version 6.10.0, edition free determined by the variant element in the manifest, isProVersion not used, and 68 addons of which 17 are renderable and 51 Pro-locked ⤢ Click to enlarge
Part of get_sppagebuilder_component_info on the test site.

The tools

62 tools in 11 groups. Your AI app picks the right one from what you ask; you don't need to remember names.

GroupToolsWhat they do
Pages (9) list_, get_, create_, update_, delete_, duplicate_sppagebuilder_page, set_sppagebuilder_page_state, get_ / set_sppagebuilder_page_settings Pages and popups: title, state, access, language, category, and the page's SEO and Open Graph settings. New pages are standalone pages or popups; article and module layouts are left to SP Page Builder.
Content (6) get_sppagebuilder_page_content, get_sppagebuilder_page_outline, validate_sppagebuilder_content, write_sppagebuilder_page_content, set_sppagebuilder_page_custom_css, purge_sppagebuilder_css_cache Read a page's content tree or just its outline, check a tree, replace a whole tree, set the page's Custom CSS, clear generated CSS.
Structure (6) get_sppagebuilder_node, add_sppagebuilder_row, add_sppagebuilder_addon, update_sppagebuilder_node_settings, move_sppagebuilder_node, delete_sppagebuilder_node Work on one row, column or addon at a time.
Addons (5) list_sppagebuilder_addons, get_sppagebuilder_addon_schema, set_sppagebuilder_addon_status, list_ / delete_sppagebuilder_preset Which addons exist and which can render, each addon's real settings and defaults, enabling or disabling an addon, and saved addon presets.
Library (11) saved sections and saved addons (list, get, delete each), list_sppagebuilder_typography, _colors, _fonts, _assets, _image_shapes The site-wide libraries. Fonts and icon fonts are checked against the files on disk. Typography is read-only (see What it deliberately doesn't do).
Media (3) list_, get_, update_sppagebuilder_media SP Page Builder's media index, with each entry checked against the file on disk. Updates change the title, alt text, caption and description.
Versions (5) list_, get_, create_, restore_, delete_sppagebuilder_page_version Page versions, with a safety copy before every restore.
Collections (6) list_ / get_sppagebuilder_collection, collection items (list, get), export_sppagebuilder_collections, list_sppagebuilder_collection_field_types Dynamic Content collections, fields and items. Read-only.
Comments (4) list_, get_, delete_sppagebuilder_comment, set_sppagebuilder_comment_state Read, approve, unapprove, trash or delete page comments. Deleting removes the replies too.
Diagnostics (4) get_sppagebuilder_component_info, check_sppagebuilder_health, get_ / set_sppagebuilder_config Orientation, the health audit, and reading or changing component settings by merging in only what you change.
Tables (3) list_, describe_, query_sppagebuilder_table Read-only queries on SP Page Builder's own 21 tables, for questions no other tool covers.

Reading a page

A page's content tree is mostly settings JSON, and on a real page it can run to hundreds of kilobytes. get_sppagebuilder_page_outline returns just the structure: each row, its columns and widths, and the addons in each column with their id, type and a short label. The AI reads the outline first, then fetches only the part it needs with get_sppagebuilder_page_content or get_sppagebuilder_node.

The outline also flags addons that can't render on your site and addons that are hidden, both of which are otherwise invisible.

The get_sppagebuilder_page_outline response for the demo page: counts of 3 rows, 5 columns and 6 addons, then each row with its columns, widths and addons such as text_block Intro and button Order button ⤢ Click to enlarge
The outline of the demo page.

Changing a page safely

One piece at a time

The structure tools change one row, column or addon and leave everything else as it was. Rows and addons can go at the start or end, or before or after an existing one. New addons start from the addon's own default settings, with whatever the AI supplies merged on top. After every change the whole page is checked again, and the change is refused if the result would break the page.

The add_sppagebuilder_row response: a one-column row placed after an existing row, the new row and column ids, and validation reporting fatal 0 and no problems in the whole page ⤢ Click to enlarge
Adding the Opening hours row after the intro row.

Pages open in SP Page Builder's editor. New columns get their width in the same place and shape SP Page Builder's own editor uses: an equal share on desktop and tablet, full width on phones. Pages built with version 1.0.4 or earlier are repaired the next time one of the add-on's write tools changes them.

Checks before anything is saved

SP Page Builder accepts any JSON when it saves a page. Its renderer is far stricter: five keys (row.settings, row.columns, column.class_name, column.addons and addon.settings) are read without any check, so leaving one out turns the page into a server error for every visitor. Invalid JSON is stored as the text null, and the page then quietly shows an old copy of its content.

validate_sppagebuilder_content checks a stored page or a tree the AI is about to write, and sorts problems into three groups:

GroupMeansExamples
FatalThe page would throw an error for every visitor. Writes are refused. Any of the five keys above missing.
SilentPart of the page would show nothing, with no error. An addon with no name, an addon that can't render on this site, a broken link between nested elements.
WarningIt shows, but not as set up. Duplicate ids, a column whose width is missing from its settings (the editor can't open the page), ids with odd characters, responsive values missing the largest breakpoint.
The write_sppagebuilder_page_content response for a tree with three missing keys: ok false, written false, refused with 3 fatal problems, each listed with its path and the renderer line that would fail ⤢ Click to enlarge
A tree with three missing keys. The write is refused and the page is left as it was.

Replacing a whole tree

write_sppagebuilder_page_content replaces a page's entire content tree, so the AI reads the current tree, changes it and sends all of it back. It has a dry_run option. Besides refusing fatal problems and addons that can't render, it:

  • removes keys SP Page Builder only adds while drawing a page (saving them makes later edits appear to do nothing), while keeping the real per-breakpoint "hide on" settings;
  • refuses emoji and other characters MySQL can't store in SP Page Builder's page table (see below);
  • puts each column's width in its settings, where SP Page Builder's editor reads it, and always stores empty settings as {};
  • stamps the installed SP Page Builder version on the page, so it isn't re-converted on every visit;
  • clears the page's generated CSS file (see Generated CSS).

There's no undo for a whole-tree write, and on Free SP Page Builder keeps no versions. Create a version first (see below).

No emoji in page titles or content

SP Page Builder created its page table with MySQL's older utf8 character set, which can't store emoji. Depending on the server, MySQL either rejects the save or cuts the text off at the emoji, losing everything after it. The tools refuse such text with a message that says why.

The update_sppagebuilder_page response for a title ending in an emoji: refused because the page table is utf8mb3 and only attribs and og_description were given utf8mb4 ⤢ Click to enlarge
A title with an emoji is refused before it reaches the database.

Versions and restore

create_sppagebuilder_page_version saves a copy of a page, on Free as well as Pro. It follows SP Page Builder's own limit on versions per page (10 by default), deleting the oldest when a page is at the limit, and says which one it removed.

restore_sppagebuilder_page_version puts a version back. Before it does, it saves the current page as a new version, so a restore can itself be undone. SP Page Builder's own restore doesn't do that.

A version holds the page content, its Custom CSS, its settings and its Open Graph fields. It doesn't hold the title, published state, access, language or category, so a restore leaves those as they are now.

The restore_sppagebuilder_page_version response: the six columns written, what was not restored, and the safety snapshot version 2 named Before restore of Before opening hours ⤢ Click to enlarge
Restoring a version. The safety copy (version 2) is what you'd restore to undo it.

Duplicating a page

SP Page Builder's own duplicate makes the copy share the original's permissions record, can copy a "checked out" lock, and keeps every element id, so the generated CSS of the two pages can clash. duplicate_sppagebuilder_page gives the copy its own permissions record, clears the lock, resets the hit counter and gives every element a new id, keeping the links between nested elements intact. The copy is unpublished until you publish it. If the page's Custom CSS targets element ids, the AI can keep the old ids instead.

The duplicate_sppagebuilder_page response: new page 4, unpublished, a fresh assets node 215 not shared with page 3, checked out cleared, hits 0, and 14 of 14 ids regenerated ⤢ Click to enlarge
Duplicating the demo page.

delete_sppagebuilder_page also tidies up after itself: it removes the page's permissions record (SP Page Builder's own delete leaves it behind) and its generated CSS file. It asks for confirmation, and refuses by default when a published menu item still points at the page.

The health audit

check_sppagebuilder_health is read-only and runs 14 checks across every page. Each finding has a severity, examples and a fix.

CheckLooks for
Page accessPages with access level 0, which nobody can view, not even Super Users.
Permissions recordsPages without one, records left behind by deleted pages, and pages sharing one.
Page contentContent that is empty or won't decode while an old copy still exists (the "my edit didn't take" problem).
Addons that can't renderPages using them, grouped by addon with page counts.
Duplicate idsThe same element id used twice in a page.
Checked outPages left locked, usually by a closed browser tab.
TrashTrashed pages piling up.
Version stampPages last saved by another SP Page Builder version, which are converted on every visit.
Icon fonts, fonts, mediaEntries whose files are missing on disk.
Production modeWhether generated CSS is cached in files (see below).
A health audit finding: unrenderable_addons, critical, one page uses the heading addon, with the remedy text ⤢ Click to enlarge
A finding from the audit on the test site: one page uses heading, which can't render on Free.

Generated CSS

With SP Page Builder's production mode on, each page's generated CSS is saved to media/com_sppagebuilder/css/page-<id>.css and linked without a version number. After a change, browsers and CDNs that already have the file keep using the old one: new content, old styling. The write, restore and delete tools remove the page's file, and purge_sppagebuilder_css_cache does it on its own, for one page or all of them. SP Page Builder creates the file again the next time the page is viewed. A CDN may still need clearing separately. With production mode off, CSS is inlined and nothing goes stale.

What it deliberately doesn't do

  • No typography changes. Pages refer to typography presets by position, not by id, so adding, removing, reordering or unpublishing one preset changes the typography on other pages. The typography tool is read-only and shows each preset's position instead.
  • Collections are read-only. Dynamic Content can be read and exported but not changed.
  • No article or module layouts are created. Those need SP Page Builder's own editor, because the article or module has to be updated too.
  • Table queries are read-only and limited to SP Page Builder's 21 tables. No SQL is accepted, and every column name is checked against the real table.

Troubleshooting

SymptomCause and fix
No SP Page Builder tools in the AI app Check that MCP for J is installed, System - MCP for SP Page Builder is enabled in System → Plugins, and the AI app has refreshed its tool list (start a new chat or reconnect).
The tools say SP Page Builder is missing Install SP Page Builder from JoomShaper. The add-on doesn't include it.
An addon was refused as "cannot render" You're on SP Page Builder Free and that addon is one of the 51 without a front-end renderer. Use one of the 17 that render, or upgrade SP Page Builder to Pro.
A change saved but the page looks the same Run the health audit. Common causes: an addon that can't render, a hidden element, or content that doesn't decode so the old copy shows. With production mode on, clear the page's CSS and any CDN.
The SP Page Builder editor shows "reading 'xl'" The page was built with version 1.0.4 or earlier of this add-on. Update to 1.0.5 or later, then have your AI app make any change to the page with one of the add-on's write tools: the column widths are repaired on that write and the editor opens the page normally.
A tool says "Refused: … does not have SP Page Builder's … permission" The Joomla account your AI app connects as is missing that permission in SP Page Builder (see Permissions). A Super User can grant it in SP Page Builder's Options, on the Permissions tab, or you can connect the AI app as an account that already has it.
A title or text was refused It contains an emoji or a similar character. Remove it.

Getting help

Questions and bug reports are welcome through the Cybersalt support form.

You'll get the quickest answer if you include your Joomla and PHP versions, your SP Page Builder version and edition, the MCP for J and add-on versions, and the tool response that surprised you.


MCP for SP Page Builder is developed by Cybersalt Consulting Ltd. and released under the GNU General Public License v2 or later. It is not made or endorsed by JoomShaper.

The demo page on the front end — click anywhere to closeClose × The demo page on the front end Heading addon refused on Free — click anywhere to closeClose × Heading addon refused on Free Edition detection — click anywhere to closeClose × Edition detection Page outline — click anywhere to closeClose × Page outline Adding a row — click anywhere to closeClose × Adding a row A broken tree refused — click anywhere to closeClose × A broken tree refused Emoji refused — click anywhere to closeClose × Emoji refused Restoring a version — click anywhere to closeClose × Restoring a version Duplicating a page — click anywhere to closeClose × Duplicating a page A health audit finding — click anywhere to closeClose × A health audit finding

Subcategories

Changelog

Main Menu

  • Home
  • Extensions A-Z
  • Guides