Tools reference #
Seanos AI ships up to 57 tools the agent can call from inside a
chat. The free edition is 41 tools on WordPress, 40 on Joomla —
the one-tool gap is extension_state, which has no Joomla analogue
(Joomla folds it into discover_extensions). The Pro add-on adds the
same 16 developer-grade tools on either platform.
Every tool has the same canonical name on both platforms — read_file
does the same thing whether the agent is running inside WordPress or
Joomla, just bounded to the right install root. Where the
implementations diverge meaningfully (different config tables, different
extension lifecycle), the WordPress and Joomla notes are inline.
Attachments #
Drop a file into the chat composer and the agent sees it on the next turn. Four buckets, with provider-specific delivery:
| Kind | Formats | What the model sees |
|---|---|---|
| Image | .png, .jpg, .gif, .webp | On any vision-capable model: native image input. On text-only models: a graceful "doesn't accept image inputs" error — switch to a vision model. |
| Text | .txt, .md, .csv, .json, source files | Inlined as a text content part, capped at 200 KB per attachment. |
| Office | .docx, .xlsx, .pptx (Office Open XML) | Plain text extracted server-side via PHP's native ZipArchive + DOMXPath (no composer dependencies) and inlined as a text block. The original binary stays on disk for download. Legacy .doc / .xls / .ppt aren't supported — re-save as OOXML. 10 MB cap per file. |
.pdf | On Anthropic and Gemini: native PDF blocks (the model reads tables, layout, embedded images). On OpenAI / Grok / DeepSeek / GitHub Models / Ollama / generic openai-compatible: shells out to pdftotext (poppler-utils) for plain-text extraction. If poppler isn't installed, the agent gets a "install poppler-utils or switch to Anthropic / Gemini" note. |
Every provider sees attachments — previously only Anthropic and Gemini did. The plugin doesn't silently filter; if a model can't accept an attachment kind, the operator gets a clear error and the option to switch model.
Code blocks in chat #
Fenced code blocks ( `language ... ` ) render with a dark-themed
header that shows the language label and a Copy button on the right.
Same style on WordPress and Joomla — chats look identical across
platforms.
Free tier — 41 tools (WordPress) / 40 tools (Joomla) #
These ship with the free edition for both platforms.
Read & inspect #
| Tool | Description |
|---|---|
get_wordpress_context (WP) / get_joomla_context (Joomla) | Snapshot CMS, PHP, DB, theme/template, extensions and paths for the running site. |
read_file | Read a text file under the install root. Refuses wp-config.php / configuration.php, secrets, cache, and paths outside the root. |
list_directory | List the immediate contents of a directory under the install root. |
glob | Find files matching a glob pattern (supports **, *, ?, [abc]). |
list_logs | List log files. WP: wp-content/debug.log and wp-content/seanosai-logs/. Joomla: administrator/logs/. |
tail_log | Read the last N lines of a log file with optional grep. |
list_extensions | List installed plugins / modules / templates / themes with active state and version. |
extension_state (WP) | Return active / version state for a single plugin file or theme slug. (Joomla folds this into discover_extensions.) |
discover_extensions | WP: alias of list_extensions for cross-platform parity. Joomla: runs the extension discovery scan. |
list_media | List files under the uploads directory. WP: wp-content/uploads/. Joomla: /images/. |
list_users | List CMS users with their roles / groups. Filterable by name / email / login substring and role / group id. Sensitive columns (password, otpKey, activation key) never returned. Default limit 50, max 500. |
list_tags | List taxonomy / category terms with their post counts. Optional taxonomy arg — defaults to post_tag on WordPress, #__tags on Joomla. |
list_widget_instances (WP) / list_module_instances (Joomla) | Walk the active widget assignments / module instances, grouped by sidebar / position. |
list_redirects | Read redirect rules. WP: the Redirection plugin (John Godley); returns an "install Redirection plugin" stub when the table doesn't exist. Joomla: #__redirect_links (com_redirect). |
Database (read-only) #
| Tool | Description |
|---|---|
query_database | Run a read-only SELECT / SHOW / DESCRIBE / EXPLAIN query. |
describe_table | Show columns and indexes for any CMS table. |
run_sql | Read-only SQL with a verb whitelist; results surfaced for inspection. |
get_global_config | Read a curated subset of CMS options. WP: blogname, default_role, permalinks, etc. Joomla: the config Registry, with secrets redacted. |
get_component_params | Return Seanos AI's own settings with API keys redacted. |
Web fetch #
| Tool | Description |
|---|---|
fetch_url | GET a public HTTP(S) URL with private-IP guard. Up to 200 KB of body. |
fetch_page_metadata | Fetch a public page and extract title, description, canonical URL, h1. |
inspect_local_url | Hit a path on this site for a quick smoke check. |
download_asset | Save a public asset under the platform's downloads dir. WP: wp-content/uploads/seanosai-downloads/. Joomla: media/seanosai/downloads/. |
crawl_site_audit | Audit a small list of local paths and report status / title / image-alt / internal-link metadata. |
Cache #
| Tool | Description |
|---|---|
clear_cache | WP: flush the WordPress object cache and expired transients. Joomla: clear cache groups (all or a single named group). |
rebuild_menu | Rebuild menu metadata. WP: flush nav-menu and term caches. Joomla: rebuild the #__menu nested-set tree. |
Content #
| Tool | Description |
|---|---|
create_article | Create a post / page / com_content article. Both platforms auto-suffix the alias on collision. |
edit_article | Update title / body / status / excerpt on an existing article. |
create_category | Create a category, taxonomy term, or tag. Joomla: any extension that uses #__categories. |
create_menu_item | Add an item to a navigation menu / #__menu row. |
create_custom_field | WP: set post meta on any post. Joomla: create a #__fields entry. |
upload_media | Upload a file to the media library / /images/; MIME is sniffed from the bytes (not trusted from the filename). |
import_chat_attachment | Move an attachment dropped into the chat into the media library / /images/seanosai/imports/. |
resize_image | Resize an image using the platform's image editor. |
Users & roles / ACL #
| Tool | Description |
|---|---|
create_user | Create a CMS user with a chosen role / group. |
assign_user_group | WP: assign a role. Joomla: add or remove from a #__usergroups row. |
create_view_level | WP: create a role (closest analogue to a Joomla view level). Joomla: create a #__viewlevels row pointing at a list of group ids. |
set_action_permission | Grant or revoke a capability on a role / ACL action on an asset. |
Extension activation #
| Tool | Description |
|---|---|
enable_extension | Activate a plugin (WP) or enable an installed extension by id or by type / element / folder / client (Joomla). |
disable_extension | Deactivate / disable, same shape as enable_extension. |
Image generation #
| Tool | Description |
|---|---|
generate_image | Generate a raster image from a text prompt using the conversation's configured image provider. Currently OpenAI (DALL·E 3 / gpt-image-1 / gpt-image-2) and Google Gemini (Imagen 3 / gemini-2.5-flash-image / "Nano Banana") implement it; other providers return a "switch provider" error. The image is saved to the platform's media tree (wp-content/uploads/seanosai-ai/ on WordPress, /images/seanosai-ai/ on Joomla) and surfaced back to the chat as  markdown the renderer turns into an inline image. Approval-gated. |
Each conversation has its own chat-provider, chat-model, image-provider, and image-model selector in a compact chat header. Image generation defaults to "use chat provider"; switching the image-provider (e.g. chat with Anthropic, generate images with OpenAI) is a per-conversation choice.
Pro tier — 16 tools (WordPress) / 29 tools (Joomla) #
These ship in the WordPress Pro plugin
or the Joomla Pro plugin. The free
editions don't contain their source code; installing the Pro package
alongside registers them via the public extension hook
(seanosai_register_tools action on WordPress, onSeanosaiRegisterTools
event on Joomla).
The Joomla Pro plugin carries 13 extra tools beyond the shared Pro
core. They cover module-instance lifecycle, edit + delete coverage
for users / menus / categories / articles, tags + redirects, mail
testing, and Smart Search reindex — surface area Joomla operators
expect from a one-stop admin agent. The WordPress Pro plugin keeps
to the leaner shared core; WordPress operators reach the same
surface through query_database + run_sql_write plus the free
tier's edit_article / delete_* tools.
Every Pro write tool snapshots the prior state into the audit log
before it edits, so restore_snapshot can roll any single change
back without restoring the whole site.
File editing #
| Tool | Description |
|---|---|
write_file | Write a UTF-8 text file. Snapshots the existing bytes first so you can roll back any time. |
edit_file | Replace an exact substring in a file. Supports replace_all and produces a unified diff. |
delete_file | Remove a file under the install root. Refuses paths Seanos AI flags as protected. |
create_directory | Create a directory tree under the install root. |
restore_snapshot | Roll any Pro write tool back to its pre-edit state from the audit log. |
Database edits #
| Tool | Description |
|---|---|
run_sql_write | Run one write SQL statement after operator approval — INSERT, UPDATE, DELETE, DDL. |
set_global_config | WP: update an allow-listed WordPress option. Joomla: patch allow-listed keys in the global configuration. |
set_component_params | WP: patch Seanos AI plugin settings (provider keys excluded). Joomla: patch any component / module / plugin / template params (merge or replace). |
Developer #
| Tool | Description |
|---|---|
run_php_lint | Run php -l on a file under the install root and surface any syntax issues. |
Plugin & extension authoring #
| Tool | Description |
|---|---|
create_plugin | WP: scaffold a plugin directory and main file. Joomla: scaffold a plugin (group + element). |
create_module | WP: alias of create_plugin for a widget-style mini-extension. Joomla: scaffold a module for the site or admin client. |
create_template | WP: scaffold a child theme. Joomla: scaffold a template for the site or admin client. |
create_component | WP: alias of create_plugin (Joomla-component analogue, kept for cross-platform parity). Joomla: scaffold a com_… component with admin + site MVC plumbing. |
build_extension_package | Zip a plugin / theme / component / module / template directory into the platform's packages dir, ready to ship. |
Install & uninstall #
| Tool | Description |
|---|---|
install_extension | Install a packaged extension from a local archive. WP: WordPress upgrader. Joomla: Joomla extension installer. |
uninstall_extension | Deactivate and remove an installed plugin / extension. |
Joomla Pro extras (13 tools) #
These ship only in the Joomla Pro plugin — they don't have direct WordPress counterparts because the underlying admin surfaces differ.
Module instances #
| Tool | Description |
|---|---|
create_module_instance | Place a new module instance on a template position with menu assignments. |
edit_module_instance | Update title, position, params, ordering, or assignments on an existing module. |
delete_module_instance | Remove a module instance and its menu assignments. |
Edit & delete coverage #
| Tool | Description |
|---|---|
edit_user | Update name / email / username / password / block flag / group set on an existing user. |
edit_menu_item | Update title, alias, link, params, or position of a menu item. |
delete_menu_item | Remove a menu item (and clean up nested-set children). |
edit_category | Update name, alias, parent, or params on an existing category. |
delete_article | Trash or permanently delete a com_content article by id. |
Tags, redirects & ops #
| Tool | Description |
|---|---|
create_tag | Create a #__tags taxonomy term with optional parent. |
assign_tag | Assign or unassign tags from a content item via #__contentitem_tag_map. |
create_redirect | Create a com_redirect rule mapping an old URL to a new URL. |
send_test_mail | Send a test email through the configured Joomla mailer to verify SMTP / sendmail. |
smart_search_reindex | Trigger Smart Search index rebuild (com_finder) and report counts. |
Approval flow #
Every write tool's first run in a fresh conversation triggers an inline approval card in the chat:
- Approve runs the tool and shows the result.
- Reject writes a synthetic "rejected" tool result and the model
continues without the side effect.
- Trusted approval mode (a per-conversation toggle) bypasses the
prompt and runs writes immediately. Use sparingly — it disables the one safety check between an LLM-emitted call and an actual write.
Snapshots of every file the agent touches via write_file /
edit_file / delete_file land under the platform's snapshot dir
(wp-content/uploads/seanosai-snapshots/ on WordPress, the audit-row
blob on Joomla). Use restore_snapshot (Pro) to roll back a single
change without restoring the whole site.
See also #
- Prompts library — curated multi-step prompts that
string these tools together.
- Getting started — install the free edition,
enable a provider, take the agent for a spin.