Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
WOODPRESSER_SITENoThe site name used to select which site configuration to use when multiple sites live side by side.
WOODPRESSER_USERYesThe WordPress username. One of the three required credentials (site URL, username, Application Password).
WOODPRESSER_MODESNoComma-separated list of modes to enable: core, php, elementor. Tools from a mode you did not enable are not registered.
WOODPRESSER_CONFIGNoPath to the configuration file (overrides the default ~/.woodpresser/config.json).
WOODPRESSER_SITE_URLYesThe site URL of the WordPress site. One of the three required credentials (site URL, username, Application Password).
WOODPRESSER_BRIDGE_FILENoPath to the bridge plugin file.
WOODPRESSER_APP_PASSWORDYesA WordPress Application Password used for Basic auth. One of the three required credentials (site URL, username, Application Password).
WOODPRESSER_BRIDGE_TOKENNoThe token used to authenticate against the companion bridge plugin (compared with hash_equals on the server). Can also be pinned in wp-config.php via WOODPRESSER_TOKEN.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
wp_site_infoA

Identify the connected site: name, description, URL, REST namespaces, the authenticated user and their capabilities, plus bridge/Elementor/plugin versions. Start here when you inherit a project.

wp_health_checkA

Diagnose connectivity in layers: REST reachable, credentials accepted, bridge claimed, Elementor present, permalinks, and debug log size. Use before blaming the code.

wp_content_listA

List content with filters. Returns compact rows by default (no full content). Use wp_content_get for the body.

wp_content_getB

Fetch a single item by ID or slug, including raw and rendered content plus open Graph-ish fields.

wp_content_createC

Create content. Returns the new ID and link. Supports meta, taxonomy terms and page templates.

wp_content_updateB

Patch an existing item. Only supplied fields change. For a full Elementor rewrite use wp_el_set instead.

wp_content_deleteA

Moves to trash by default. force=true bypasses trash forever and requires confirm:"delete".

wp_media_listC

List attachments with optional MIME filter and search.

wp_media_uploadB

Upload a local file to the media library. Provide path, or url to sideload a remote file.

wp_terms_listC

List categories, tags or any public taxonomy.

wp_term_createC

Create a category or tag.

wp_users_listC

List users with roles. Requires administrator credentials.

wp_plugins_listA

List installed plugins with status and available updates.

wp_plugin_actionA

Activate, deactivate, install (from wordpress.org by slug) or delete a plugin. Deletion requires confirm:"delete". Activating an untrusted plugin is a security decision.

wp_themes_listA

List installed themes and which one is active.

wp_theme_activateA

Switch the active theme. Changing themes on a live site is high-impact; prefer a staging copy.

wp_settings_getA

Read the REST-exposed site settings (title, description, timezone, permalinks, front page).

wp_settings_setB

Update REST-exposed settings. Arbitrary options need wp_php_run or wp_db_query.

wp_searchB

Search across posts, pages and media in one call. Use this to locate content before editing it.

wp_bridge_statusB

Report the bridge plugin version, environment (WP/PHP/theme/plugins) and the safety flags that gate PHP, shell, DB writes and file writes.

wp_bridge_flagsA

Toggle server-side capabilities: allow_php, allow_shell, allow_db_write, allow_file_write, allow_plugins. Start read-only and widen only when the task demands it.

wp_php_runA

Execute PHP inside the live WordPress runtime with WordPress loaded ($wpdb, WP_Query, all plugins available). Output buffering and return values are captured; fatal errors are reported. Use it to inspect real state, not to guess. Requires confirm:"run".

wp_db_queryA

Run a single SQL statement against the WordPress database. SELECT/SHOW/EXPLAIN are allowed read-only; writes need allow_db_write. Supports %s/%d placeholders through params. DROP DATABASE, GRANT, OUTFILE and multi-statements are blocked.

wp_fsA

list, read, stat, write, append, mkdir or delete files under wp-content. Writes are jailed, extension-limited, and the previous file is backed up under wp-content/woodpresser-backups.

wp_snippet_listA

List PHP snippets stored by the bridge. Snippets are versioned PHP blocks with a scope (init, admin_init, wp_head, wp_footer, manual) and an active flag — the safe way to add behaviour without editing theme files.

wp_snippet_saveA

Save a snippet. Omit id to create; pass id to update. Keep active=false, test with wp_snippet_run, then activate.

wp_snippet_runA

Run one stored snippet immediately and return its output, regardless of active state. Ideal dry-run before activation.

wp_snippet_deleteA

Permanently remove a stored snippet. Requires confirm:"delete".

wp_post_metaA

Direct access to any post meta key, including keys hidden from REST (SEO plugins, page builders, custom fields). Actions: get (all or one key), set, delete.

wp_audit_logA

Recent mutating calls recorded by the bridge, newest first. Check this when you need to know what an agent already changed.

wp_el_statusA

Report whether Elementor (and Pro) is active, its version, and whether flexbox containers are enabled.

wp_el_widgetsA

Enumerate every registered widget name (widgetType) with its title and category. Call this before building a page so you only reference widgets that actually exist on this site.

wp_el_getB

Read the Elementor tree for a page. format=summary gives a compact outline (default); raw returns the full JSON tree for precise edits.

wp_el_buildA

Convert a compact section/column/widget spec into Elementor data and (unless dry_run) write it. If post_id is omitted, a new page is created. Always inspect the dry_run output first. Widget settings use Elementor setting keys (e.g. heading: {title, header_size}; button: {text, link:{url}}).

wp_el_setA

Replace the whole Elementor tree for a page. Use wp_el_build for authored pages and this only when you already have valid Elementor JSON. Snapshots the previous tree automatically. Requires confirm:"overwrite".

wp_el_patchA

Update settings on specific nodes without rewriting the page. Paths come from wp_el_get (format=raw or summary), e.g. "0/1/2". Settings are deep-merged into the node.

wp_el_snapshotsA

List the five most recent automatic snapshots for a page (metadata only).

wp_el_restoreA

Roll a page back to a snapshot index. The current tree is snapshotted first, so this is reversible.

wp_el_clear_cacheA

Regenerate Elementor CSS and flush the object cache. Run after bulk edits if the front end looks stale.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 39 tools

Disambiguation4/5

Most tools target clearly distinct resources and actions, especially the content, media, taxonomy, plugin, and Elementor groups. However, some clusters overlap enough to cause hesitation: wp_health_check, wp_bridge_status, and wp_site_info all diagnose the environment; wp_content_update and wp_el_set both rewrite page data; wp_php_run and wp_snippet_run both execute PHP. Descriptions help, but the boundaries are not always immediately obvious.

Naming Consistency4/5

The set uses a strong, predictable wp_<domain>_<action> snake_case pattern throughout. There are minor inconsistencies such as singular/plural mismatches (wp_plugins_list vs wp_plugin_action, wp_themes_list vs wp_theme_activate) and abbreviations (wp_el, wp_fs) that slightly break the otherwise clean convention.

Tool Count2/5

39 tools is well above the typical appropriate range and creates a large surface for an agent to navigate. While the WordPress + Elementor domain is broad, many operations could be consolidated into action-based tools or grouped more tightly, reducing cognitive load without losing capability.

Completeness4/5

The surface is very comprehensive: content CRUD, media, terms, plugins, themes, settings, diagnostics, snippets, audit logging, PHP/SQL/FS escape hatches, and substantial Elementor lifecycle support. Gaps remain for common WordPress operations such as comment management, user create/update/delete, menu management, term update/delete, and media edit/delete, though low-level tools can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues