WP Manifestindependent plugin directory
manifest / ai / ai-agent-for-website

AI Agent for Website WP Registry grade D. High-severity findings · 5 findingsWP RegistryHigh-severity findings · 5 findingsOpen the reportD

Add an AI-powered chat agent to your website using Groq API. Train it with your website content.

★ 0stars
56release downloads
≈10active sites
v1.10.0latest · 9mo ago

Install

Download ai-agent-for-website-1.10.0.zip From the v1.10.0 release on GitHub, Jan 19, 2026

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/rajanvijayan/ai-agent-for-website/releases/download/v1.10.0/ai-agent-for-website-1.10.0.zip
Updates itself. It ships its own updater, so new versions appear under Dashboard → Updates.

A WordPress plugin that adds an AI-powered chat agent to your website. Train it with your website content using the Knowledge Base feature.

Features

  • 🤖 AI-powered chat widget - Beautiful floating chat bubble
  • 📚 Knowledge Base (RAG) - Train AI with your website content
  • ⚡ Ultra-fast responses - Powered by Groq API
  • 🎨 Customizable - Colors, position, AI name, persona
  • 💬 Conversation memory - Remembers context during chat
  • 📱 Mobile responsive - Works on all devices
  • 🔧 Easy configuration - WordPress admin panel

Installation

Step 1: Install Dependencies

Navigate to the plugin directory and run:

cd wp-content/plugins/ai-agent-for-website
composer install

This will install the AI Engine library from GitHub.

Step 2: Activate Plugin

Go to WordPress Admin → Plugins and activate "AI Agent for Website".

Step 3: Configure

  1. Go to AI Agent → Settings
  2. Enter your Groq API key (get free at console.groq.com)
  3. Customize AI name, welcome message, and appearance
  4. Enable the chat widget

Step 4: Add Knowledge (Optional)

  1. Go to AI Agent → Knowledge Base
  2. Add your website pages or custom text
  3. The AI will use this content to answer questions

Usage

Floating Widget

Once enabled in settings, a chat bubble appears on all pages.

Shortcode

Embed the chat anywhere:

[ai_agent_chat]

With custom dimensions:

[ai_agent_chat height="600px" width="100%"]

Configuration Options

Setting Description
API Key Your Groq API key
AI Name Name shown in chat header
Welcome Message First message when chat opens
System Instruction AI personality/behavior instructions
Widget Position Bottom-right or bottom-left
Primary Color Theme color for the widget

Tech Stack

  • AI Engine: rajanvijayan/ai-engine
  • AI Provider: Groq (Llama models)
  • Frontend: Vanilla JavaScript (no jQuery in widget)
  • API: WordPress REST API

File Structure

ai-agent-for-website/
├── ai-agent-for-website.php    # Main plugin file
├── composer.json               # Dependencies
├── readme.txt                  # WordPress readme
├── assets/
│   ├── css/
│   │   ├── admin.css           # Admin styles
│   │   └── chat-widget.css     # Frontend widget styles
│   └── js/
│       ├── admin.js            # Admin JavaScript
│       └── chat-widget.js      # Frontend widget JavaScript
├── includes/
│   ├── class-admin-settings.php    # Settings page
│   ├── class-chat-widget.php       # Widget renderer
│   ├── class-knowledge-manager.php # Knowledge base admin
│   └── class-rest-api.php          # REST API endpoints
└── vendor/                     # Composer dependencies

REST API Endpoints

Endpoint Method Description
/ai-agent/v1/chat POST Send chat message
/ai-agent/v1/new-conversation POST Start new conversation
/ai-agent/v1/test POST Test API connection (admin only)
/ai-agent/v1/fetch-url POST Fetch URL for knowledge base (admin only)

Requirements

  • WordPress 5.8+
  • PHP 8.0+
  • Composer

License

GPL v2 or later

Credits

Releases

12 releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
v1.10.0 latest
Jan 19, 2026 9mo ago
ai-agent-for-website-1.10.0.zip
4
Dec 29, 2025 9mo ago
ai-agent-for-website-1.9.0.zip
9
Dec 29, 2025 9mo ago
ai-agent-for-website-1.8.0.zip
1
Dec 29, 2025 9mo ago
ai-agent-for-website-1.7.1.zip
6
Dec 20, 2025 10mo ago
ai-agent-for-website-1.7.0.zip
18
Dec 20, 2025 10mo ago
ai-agent-for-website-1.6.0.zip
3
Dec 20, 2025 10mo ago
ai-agent-for-website-1.5.0.zip
3
Dec 20, 2025 10mo ago
ai-agent-for-website-1.4.0.zip
3
Dec 20, 2025 10mo ago
ai-agent-for-website-1.3.0.zip
1
Dec 19, 2025 10mo ago
ai-agent-for-website-1.2.0.zip
0
Dec 18, 2025 10mo ago
ai-agent-for-website-1.1.0.zip
3
Dec 18, 2025 10mo ago
ai-agent-for-website-1.0.2.zip
5

Active-site estimate ≈10 comes from the median of recent superseded releases. Method.

D grade

Security

AI Agent for Website 1.10.0 · audited by WP Registry

High-severity findings.

3 high 2 medium
Audited release
1.10.0
Findings
5
Worst severity
high
Content hash
de8ca83811de1643c9c596fb…

Findings

  • high Unauthenticated live-agent REST IDORs: read any chat, impersonate agents, end sessions

    missing_auth

    When Live Agent mode is enabled, /wp-json/ai-agent/v1/live-agent/messages, /message, /end, /connect, and /session-status are registered with permission_callback __return_true. live_session_id is an autoincrement integer with no proof of session ownership. An unauthenticated caller can enumerate IDs and dump wp_aiagent_live_messages (visitor support transcripts). POST /message accepts attacker-controlled sender_type and sender_id; send_message() only checks that the session exists and is active, so sender_type=agent inserts a fake agent message. The frontend widget treats sender_type==='agent' as a human agent and runs formatMessage(), which turns markdown [text](url) into <a href="url"> without a javascript:/data: allowlist — so injected agent messages can phish visitors. POST /end calls end_session() on any ID and tears down active support chats. No nonce is required for unauthenticated REST.

    includes/class-rest-api.php:1021-1105

    Recommendation

    Require a secret per-session token (the 16-char session_id) plus proof of role: visitors may only send as sender_type=user for sessions they created; agents must be authenticated, pass can_user_be_agent() or manage_options, and not supply sender_type from the client. Bind GET /messages and POST /end to that same ownership check. Do not trust client-supplied sender_type/sender_id.

  • high Unauthenticated Google Calendar event creation and invite spam

    missing_auth

    POST /wp-json/ai-agent/v1/gcalendar/create-event is public (__return_true) whenever Google Calendar integration is enabled and connected. The handler forwards attacker-controlled title, description, start/end, attendee_email, attendee_name, and add_meet to Google Calendar events.insert with sendUpdates=all. There is no slot-availability check, rate limit, CAPTCHA, or session binding. Observable effects: arbitrary events on the site owner's calendar, Google Meet rooms created on demand (meet_link returned in the JSON), and calendar-invite emails sent from the connected Google account to any address — a phishing/spam channel that authenticates as the business. GET /gcalendar/slots is also public and hammers the freeBusy API.

    includes/class-rest-api.php:865-910

    Recommendation

    Bind booking to a chat session that already collected a verified email, allow only slots returned by get_available_slots(), rate-limit per IP/session, and do not accept arbitrary titles/attendees from unauthenticated clients. Consider a one-time booking token issued after /chat or /register-user.

  • high Knowledge base JSON stored world-readable under uploads

    information_disclosure

    The RAG corpus is written to wp-content/uploads/ai-agent-knowledge/knowledge-base.json (KnowledgeBase::save). Activation only wp_mkdir_p() that directory; unlike ai-agent-files, no .htaccess/index.php deny rule is created. On typical Apache/nginx setups that serve uploads as static files, an unauthenticated GET of that well-known path returns the full document set, including text imported from Google Drive and Confluence (private wikis/docs the admin believed were server-side context for Groq). The public chat already answers questions from this corpus, but the raw JSON is a bulk dump with sources, not a Q&A filter.

    includes/class-knowledge-manager.php:32-34

    Recommendation

    Store the corpus outside the web root or add an Apache/nginx deny-all rule (mirror the .htaccess already used for ai-agent-files). Prefer a non-web-accessible directory or a randomized filename plus capability-gated download.

  • medium Public WooCommerce product-by-ID endpoint leaks unpublished products

    information_disclosure

    GET /wp-json/ai-agent/v1/woocommerce/product/{id} is permission_callback __return_true whenever the WooCommerce integration is enabled. handle_woocommerce_product() calls wc_get_product($id) with no post_status or catalog-visibility check, then format_product_data($product, true), which includes description, SKU, weight, dimensions, categories, tags, and gallery URLs. Draft, private, pending, and catalog-hidden products that WooCommerce storefront/REST hide from guests are enumerable by sequential ID.

    includes/integrations/class-woocommerce-integration.php:381-393

    Recommendation

    Refuse products that are not published, not purchasable, or have catalog visibility hidden/search. Match WooCommerce's public product query (post_status=publish plus catalog visibility).

  • medium Public register-user overwrites chat identity by email with no proof of ownership

    missing_auth

    POST /wp-json/ai-agent/v1/register-user is unauthenticated. If wp_aiagent_users already has that email, the handler UPDATE name, phone, and session_id for that row and returns the existing user_id. Anyone who knows or guesses a prior visitor's email can rename them, replace their phone, bind a new session, and have subsequent conversations/leads/Mailchimp/Zapier events attach to the victim's lead record. There is no magic-link or nonce proving control of the mailbox.

    includes/class-rest-api.php:1252-1267

    Recommendation

    Treat email match as a returning visitor only after verifying the mailbox, or create a new row keyed by session_id and leave the original PII immutable. Do not let an unauthenticated POST change name/phone on another user's row.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.