Skip to content

EP Assistant

EP Assistant puts an AI chat interface in the PageMotor admin panel and wires it up to nine server-side tools so the customer can manage their entire site in plain English. Write a new page. Check today’s enquiries. Send a follow-up email. Update the brand colours. All through conversation.

Published by ElmsPark Studio.

This is not a chatbot answering support questions. The assistant has real server-side tools that execute actions with safety gates:

  • Read and write files within the site root, with sandboxing.
  • Run SQL queries against a whitelisted set of tables, with auto-backup before any write.
  • Recompile CSS when the customer asks to change styling.
  • Import theme data the same way EP Provisioning does.
  • Check any page on the site and return its status and content.
  • Send emails via EP Email, rate limited per conversation.

Every tool invocation is logged to an audit table. Every destructive operation takes a backup first.

EP Assistant is designed to be sold through hosting companies as part of an end-to-end AI website product:

  1. The hosting company’s central server runs Discovery AI, which talks to the prospective customer about what they want.
  2. Discovery AI extracts brand voice, audiences, services, and site inventory from the conversation.
  3. The system provisions a small VPS from the hosting company’s catalogue and installs PageMotor + EP Assistant + the rest of EP Suite.
  4. EP Provisioning writes memory files into the new site and configures EP Assistant with an API key.
  5. The customer clicks a welcome-email link, lands in their admin panel, and starts chatting to their site.

The customer never leaves the hosting company’s ecosystem. The hosting company gets to sell a differentiated product.

EP Assistant supports nine providers through three adapter formats:

ProviderFormatWhy pick this
Anthropic (Claude)NativeThe reference provider. Best tool-use quality.
OpenAI (GPT)OpenAIMature API, reliable.
Mistral AIOpenAI-compatEuropean, GDPR-friendly.
DeepSeekOpenAI-compatLowest cost.
GroqOpenAI-compatFastest token throughput.
xAI (Grok)OpenAI-compatAlternative to GPT.
Together AIOpenAI-compatAccess to open-weight models.
Fireworks AIOpenAI-compatFast open-weight serving.
Google GeminiNativeGoogle’s frontier model.

Every provider is configured with API key, model, and max tokens. Swap providers in a dropdown without changing anything else.

  • PageMotor 0.8.2b or later
  • VPS hosting (not shared). The assistant runs long-polling AJAX and benefits from persistent connections.
  • An API key from one of the nine providers above.
  • EP Email (required for the send_email tool).

Typically installed as part of an automated provisioning flow driven by Discovery AI. If you are installing manually:

  1. Download ep-assistant.zip from the EP Suite downloads page.
  2. Upload via Plugins → Manage Plugins.
  3. Activate.
  4. Open Plugin Settings → EP Assistant and set:
    • Provider. Anthropic Claude is the recommended default.
    • API key. Paste the key for your chosen provider.
    • Model. Leave at the default unless you know what you are doing.
    • Business name. Used in the assistant’s greeting and system prompt.
  5. (Optional) Populate the memory files under src/memory/. If EP Provisioning installed this plugin, these files are already written for you. Otherwise create:
    • brand-voice.md — one page on tone and writing style.
    • audiences.md — who visits your site.
    • services.md — what you sell.
    • site-inventory.md — pages, shortcodes, key content.
    • discovery-context.md — free-form background.

Open the EP Assistant panel from the admin menu. Type into the chat box. The assistant responds with plain English.

Behind the scenes, each message triggers an agentic loop:

  1. Your message + conversation history + system prompt + available tools go to the LLM.
  2. If the LLM wants to call a tool, the plugin executes it server-side and appends the result.
  3. Loop continues until the LLM returns a text-only response.
  4. That response is rendered in the chat with markdown formatting.

The loop has a maximum iteration count so a runaway tool-use cascade cannot spin forever.

ToolPurposeSafety
run_querySQL against the site database.Whitelist of 10 allowed tables. Auto-backup before any write.
read_fileRead any file inside the site root.realpath() sandboxing. Blocked list: config.php, .env, anything outside ABSPATH.
write_fileWrite or create a file inside the site root.Whitelist of writable directories. Auto-backup of existing content.
recompile_cssTrigger a CSS recompile after theme changes.Localhost-only HTTP call with a shared token.
import_themeImport partial theme data using EP Provisioning’s logic.Key whitelist.
check_pageHTTP GET any page on your own site.Restricted to your own domain.
send_emailSend an email via EP Email.Rate limited to 10 per conversation.

Every successful tool call creates an audit row with input, output, and backup data (if applicable).

Type a slash command to load a skill prompt:

CommandPurpose
/update-pageEdit the content of an existing page.
/add-pageCreate a new page with a given slug and content.
/write-articleDraft a blog article.
/write-newsletterCompose an EP Newsletter campaign.
/check-enquiriesReview today’s EP Email contact submissions.
/check-bookingsReview today’s EP Booking appointments.
/check-siteRun the autonomous site-doctor agent — page reachability, broken links, spam signals.
/send-emailCompose and send a one-off email.
/update-stylesChange theme colours, fonts, spacing.
/update-themeBroader theme changes.
/helpShow every available command.

Slash commands load a specific skill prompt that primes the assistant for that task.

The prompt sent to the LLM is built from five layers:

  1. Core rules: no jargon, backup before modify, plain text over corporate language. The English variant the assistant uses is configurable per-install under AI Connection → Assistant → English variant (Auto, British, American, International). Default is Auto, which instructs the assistant to match the client’s existing site variant rather than force one.
  2. Operations guide (hardcoded): How to use each tool correctly.
  3. Plugin knowledge (from EP Support): Full knowledge base for all 18 EP Suite plugins.
  4. Memory files (per-site): The five markdown files described above.
  5. Skill instructions (per-turn): Loaded when the user invokes a slash command.

This layered prompt is why the assistant feels tailored to the customer’s site rather than generic. The memory files carry the business context; the plugin knowledge carries the system context.

  • {prefix}ep_assistant_conversations — conversation history with messages JSON, status, timestamps.
  • {prefix}ep_assistant_audit — every tool call logged with input, output, backup data.

Check the key matches the provider selected in the dropdown. Anthropic keys start sk-ant-, OpenAI keys start sk-, Gemini keys are alphanumeric with no prefix. Paste the full key including the prefix.

LLM provider is slow or down. Check your provider’s status page. Try switching to a different provider temporarily.

The run_query tool has a whitelist of 10 allowed tables. Custom plugin tables are not on it by default. If you need to give the assistant access to more tables, edit the whitelist in class-ep-assistant-tools.php carefully.

“Write tool fails with ‘outside writable directory’”

Section titled ““Write tool fails with ‘outside writable directory’””

The write_file tool only writes inside a specific allowlist of directories (themes, custom CSS, user content). Writing to plugin code or PM core is deliberately blocked.

Every tool call creates a row. Over a busy month this can be thousands of rows. Truncate {prefix}ep_assistant_audit manually if it grows unmanageable.

“I changed the memory files but the assistant doesn’t seem to know”

Section titled ““I changed the memory files but the assistant doesn’t seem to know””

Memory files are read once per conversation at start. Open a fresh conversation to pick up changes. Existing conversations keep their original system prompt for consistency.

For a quick question about this plugin, EP Support inside your admin is the fastest option. The chat widget sits on every EP plugin settings page and knows which one you’re on, with starter questions and links preloaded for that exact screen.

For anything bigger — a bug report, a feature request, or a “how do I…” that needs a real reply — open a ticket at help.elmspark.com. A real person, helped by AI, writes the reply. Usually within a few hours. Tickets don’t disappear into the void.