Security and data-integrity fixes for the database-write and post-update abilities, plus the Integrations screen and Elementor MCP support. Recommended for all sites.
- Security: database write abilities can no longer be tricked into altering their own SQL.
database/insert-db-row,database/update-db-rowsanddatabase/delete-db-rowspass column names to$wpdb, which wraps them in backticks without escaping. A crafted column name containing a backtick could break out of that quoting — turning, for example, a targeted delete into a full-table one — and the call still reported success. Column names are now checked against an allowlist ([A-Za-z0-9_]) before any write, and a name outside it is refused with a clear message. Legitimate writes are unaffected. - Fixed: database row writes could corrupt a value and still report success.
$wpdbmatches format specifiers (%s/%d/%f) to columns by position, in the order the data object's keys happen to arrive — and that order is not dependable once a request has crossed an AI client and the transport. A misaligned%dcast a non-numeric value to0, wrote it, and returned success. Formats are now validated against their values before the write (a numeric specifier on a non-numeric value is refused), and a column-keyed object form is accepted that cannot misalign. - Fixed:
content/update-postsilently dropped plugin meta such as Rank Math's SEO fields. Updating a post with meta likerank_math_titleorrank_math_descriptiondiscarded it while reporting success, even thoughcontent/create-postandcontent/update-post-metaboth write it. Update now writes those keys, refusing only genuinely-internal underscore-prefixed keys — and when it does refuse one, it says so in a per-key warning naming the key and the ability to use instead, instead of an empty warnings list beside a successful response. - Fixed:
admin-menu/list-admin-menu-pagesthrew on every REST and MCP call. It tried to build the admin menu by loading a core admin script that assumes the admin request lifecycle, which raised a fatal outside it. It now assembles the menu safely and reports when the result is partial (plugin and theme pages only, since WordPress's own entries are declared by a file that cannot be loaded here) rather than erroring. - Added: Integrations screen. A dedicated screen under AcrossAI listing every integration this site has, each with a single on/off switch. Turning an integration off withdraws this plugin's abilities for it; a row shows how many abilities it contributes and, when switched off, how many the host plugin still provides on its own.
- Added: use this site's abilities from Elementor's MCP server. When Elementor's MCP server is enabled, a client connected to it can now reach the rest of the site — content, media, the database, files, users and every installed plugin's capability — through two tools (
toolset-wp-siteand a guide), without leaving Elementor's editor tools. The pair is host-neutral, built to extend to other hosts' MCP servers in future. - Added: Elementor's own abilities without switching on its MCP server. Enabling the Elementor integration registers Elementor's 27 MCP abilities so they are usable through AcrossAI's servers, without turning on Elementor's site-wide MCP exposure — that switch stays the site owner's to set on Elementor's own screen.
- Added: diagnostics for ability coverage. New diagnostics report abilities that no toolset lists and abilities that match no grouping rule, and name the plugin that lost a slug collision — so a capability that has quietly fallen out of reach can be found.
Full changelog: https://acrossai.co/changelog/acrossai-abilities-manager/