{"id":280635,"date":"2026-02-26T08:34:13","date_gmt":"2026-02-26T08:34:13","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/jrt-ai-agent\/"},"modified":"2026-09-23T05:49:06","modified_gmt":"2026-09-23T05:49:06","slug":"jrt-ai-agent","status":"publish","type":"plugin","link":"https:\/\/km.wordpress.org\/plugins\/jrt-ai-agent\/","author":23432604,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"6.9.9","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"JRT AI Agent","header_author":"jrtwebsolutions","header_description":"An AI-powered support assistant with a front-end chat widget and website-grounded answers.","assets_banners_color":"accdda","last_updated":"2026-09-23 05:49:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.jrtwebsolutions.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":497,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"jrtwebsolutions","date":"2026-02-26 08:44:44","revision":3470016},"1.1.0":{"tag":"1.1.0","author":"jrtwebsolutions","date":"2026-09-23 05:49:06","revision":3708568}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3470003,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3470003,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3470003,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3470003,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3470003,"resolution":"1","location":"assets","locale":"","width":1682,"height":619},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3470003,"resolution":"2","location":"assets","locale":"","width":1018,"height":430},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3470003,"resolution":"3","location":"assets","locale":"","width":1681,"height":674},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3470003,"resolution":"4","location":"assets","locale":"","width":1685,"height":787},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3470003,"resolution":"5","location":"assets","locale":"","width":1146,"height":828},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3470003,"resolution":"6","location":"assets","locale":"","width":485,"height":709},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3470003,"resolution":"7","location":"assets","locale":"","width":481,"height":728}},"screenshots":[]},"plugin_section":[],"plugin_tags":[2353,2364,216196,229563,2369],"plugin_category":[],"plugin_contributors":[254174],"plugin_business_model":[],"class_list":["post-280635","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chatbot","plugin_tags-chatgpt","plugin_tags-claude","plugin_tags-customer-support","plugin_contributors-jrtwebsolutions","plugin_committers-jrtwebsolutions"],"banners":{"banner":"https:\/\/ps.w.org\/jrt-ai-agent\/assets\/banner-772x250.png?rev=3470003","banner_2x":"https:\/\/ps.w.org\/jrt-ai-agent\/assets\/banner-1544x500.png?rev=3470003","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/jrt-ai-agent\/assets\/icon-128x128.png?rev=3470003","icon_2x":"https:\/\/ps.w.org\/jrt-ai-agent\/assets\/icon-256x256.png?rev=3470003","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/jrt-ai-agent\/assets\/screenshot-1.png?rev=3470003","caption":""},{"src":"https:\/\/ps.w.org\/jrt-ai-agent\/assets\/screenshot-2.png?rev=3470003","caption":""},{"src":"https:\/\/ps.w.org\/jrt-ai-agent\/assets\/screenshot-3.png?rev=3470003","caption":""},{"src":"https:\/\/ps.w.org\/jrt-ai-agent\/assets\/screenshot-4.png?rev=3470003","caption":""},{"src":"https:\/\/ps.w.org\/jrt-ai-agent\/assets\/screenshot-5.png?rev=3470003","caption":""},{"src":"https:\/\/ps.w.org\/jrt-ai-agent\/assets\/screenshot-6.png?rev=3470003","caption":""},{"src":"https:\/\/ps.w.org\/jrt-ai-agent\/assets\/screenshot-7.png?rev=3470003","caption":""}],"raw_content":"<!--section=description-->\n<p>JRT AI Agent adds a smart AI chat assistant to your WordPress website to help visitors get quick answers \u2014 without replacing real human support.<\/p>\n\n<p>The assistant is designed to be helpful, transparent, and safe. It only answers questions using the content you allow and clearly guides visitors to contact a real person when needed.<\/p>\n\n<p>The plugin works on any WordPress site. WooCommerce integration is optional.<\/p>\n\n<p>\u26a0\ufe0f <strong>Important:<\/strong> This plugin requires you to use your own AI provider API key (OpenAI, Google Gemini or Anthropic Claude). The plugin does not include or provide free AI usage.<\/p>\n\n<p>Your AI provider account must have active billing or available credits for the chat assistant to function.<\/p>\n\n<p>Please see the <strong>Third-Party Services<\/strong> section below for full details.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>AI-powered chat assistant for WordPress<\/li>\n<li>Choose your provider: OpenAI (ChatGPT), Google Gemini or Anthropic Claude<\/li>\n<li>Pick your model from a dropdown, and use \"Test connection\" to check your key and model<\/li>\n<li>Uses selected policy pages (privacy, terms, refunds, etc.)<\/li>\n<li>Optional site-wide content search\n\n<ul>\n<li>Pages<\/li>\n<li>Posts<\/li>\n<li>Custom post types<\/li>\n<\/ul><\/li>\n<li>Password-protected content is never sent to the AI<\/li>\n<li>Optional WooCommerce product context<\/li>\n<li>Show the chat on every page, or only where you place the shortcode<\/li>\n<li>Customizable chat UI:\n\n<ul>\n<li>Chat title<\/li>\n<li>Input placeholder<\/li>\n<li>Floating icon (Dashicon or SVG upload)<\/li>\n<li>Footnote text<\/li>\n<li>Contact page link<\/li>\n<\/ul><\/li>\n<li>Privacy controls:\n\n<ul>\n<li>Disable browser storage<\/li>\n<li>Limit or disable conversation memory<\/li>\n<\/ul><\/li>\n<li>Cost and abuse protection:\n\n<ul>\n<li>Per-visitor rate limit<\/li>\n<li>Site-wide daily request cap<\/li>\n<li>Maximum message length<\/li>\n<li>Cloudflare \/ reverse proxy aware<\/li>\n<\/ul><\/li>\n<li>API keys are never shown in the settings page and can be defined in wp-config.php<\/li>\n<li>Clean floating chat interface<\/li>\n<li>Requires your own AI provider API key<\/li>\n<\/ul>\n\n<h3>How It Works<\/h3>\n\n<ol>\n<li>You create your own account with a supported AI provider (OpenAI, Google Gemini or Anthropic Claude).<\/li>\n<li>You generate your own API key from that provider.<\/li>\n<li>You enter your API key in Settings \u2192 JRT AI Agent.<\/li>\n<li>Visitors open the chat and ask questions.<\/li>\n<li>Messages are securely sent to your configured AI provider.<\/li>\n<li>The AI responds using the content you have allowed.<\/li>\n<\/ol>\n\n<p>\u26a0\ufe0f If your AI provider account does not have available credits or active billing, the chat assistant will not work and may return an error.<\/p>\n\n<p>The plugin author does not provide API access and is not responsible for third-party service charges.<\/p>\n\n<h3>Quick Start<\/h3>\n\n<ol>\n<li>Install and activate JRT AI Agent<\/li>\n<li>Create an account with OpenAI, Google Gemini or Anthropic<\/li>\n<li>Generate your own API key<\/li>\n<li>Ensure your AI account has available credits or active billing<\/li>\n<li>Go to Settings \u2192 JRT AI Agent<\/li>\n<li>Choose your provider, enter your API key, save, then click \"Test connection\"<\/li>\n<li>Select your policy pages (Privacy Policy, Terms, etc.)<\/li>\n<li>(Optional) Enable site content search<\/li>\n<li>Choose where the chat appears: every page, or only pages with the [jrt_ai_agent_chat] shortcode<\/li>\n<\/ol>\n\n<h3>Usage<\/h3>\n\n<p>By default the chat appears as a floating button on every page.<\/p>\n\n<p>To show it only on specific pages, set \"Where to show\" to \"Only on pages containing the shortcode\" and add this shortcode to those pages:<\/p>\n\n<p>[jrt_ai_agent_chat]<\/p>\n\n<h4>Keeping API keys out of the database<\/h4>\n\n<p>You can define your key in wp-config.php instead of saving it in the settings page:<\/p>\n\n<pre><code>define( 'JRT_AI_AGENT_OPENAI_KEY', 'your-key' );\ndefine( 'JRT_AI_AGENT_GEMINI_KEY', 'your-key' );\ndefine( 'JRT_AI_AGENT_ANTHROPIC_KEY', 'your-key' );\n<\/code><\/pre>\n\n<h4>Developer filters<\/h4>\n\n<ul>\n<li><code>jrt_ai_agent_disable_autoload<\/code> \u2014 return true to stop the widget and its assets from loading.<\/li>\n<li><code>jrt_ai_agent_can_use_post( bool $allowed, WP_Post $post )<\/code> \u2014 return false to keep a post (for example members-only content) out of the AI context.<\/li>\n<li><code>jrt_ai_agent_render_shortcodes( bool $render )<\/code> \u2014 return true to render shortcodes in context content (they are stripped by default).<\/li>\n<li><code>jrt_ai_agent_search_keywords( array $keywords, string $message )<\/code> \u2014 adjust the keywords used for site search.<\/li>\n<li><code>jrt_ai_agent_system_prompt( string $prompt, string $message )<\/code> \u2014 modify the full system prompt.<\/li>\n<li><code>jrt_ai_agent_models( array $models, string $provider )<\/code> \u2014 add or remove models in the settings dropdown.<\/li>\n<li><code>jrt_ai_agent_openai_payload<\/code>, <code>jrt_ai_agent_gemini_payload<\/code>, <code>jrt_ai_agent_anthropic_payload<\/code> \u2014 modify the request body sent to each provider.<\/li>\n<\/ul>\n\n<h3>Third-Party Services<\/h3>\n\n<p>JRT AI Agent relies on external AI services to generate responses. The plugin does not function without configuring at least one supported provider.<\/p>\n\n<p>The site owner must supply their own API key and maintain their own account with the chosen provider. Only the provider selected in the settings receives data.<\/p>\n\n<h3>OpenAI (ChatGPT)<\/h3>\n\n<ul>\n<li><strong>Service:<\/strong> OpenAI API (https:\/\/api.openai.com)<\/li>\n<li><strong>Purpose:<\/strong> Generates AI-powered chat responses<\/li>\n<li><strong>Account Required:<\/strong> Yes \u2014 site owner must create their own OpenAI account<\/li>\n<li><strong>Billing Required:<\/strong> Yes \u2014 account must have available credits or active billing<\/li>\n<li><strong>Data Sent:<\/strong>\n\n<ul>\n<li>User-submitted chat messages<\/li>\n<li>Optional recent conversation history (if enabled)<\/li>\n<li>Selected site content used for grounding responses<\/li>\n<\/ul><\/li>\n<li><strong>When Data Is Sent:<\/strong>\n\n<ul>\n<li>Only when a visitor submits a message via the chat widget, or when an administrator clicks \"Test connection\"<\/li>\n<\/ul><\/li>\n<li><strong>Terms of Service:<\/strong>\nhttps:\/\/openai.com\/terms<\/li>\n<li><strong>Privacy Policy:<\/strong>\nhttps:\/\/openai.com\/privacy<\/li>\n<\/ul>\n\n<h3>Google Gemini<\/h3>\n\n<ul>\n<li><strong>Service:<\/strong> Google Generative Language API (Gemini) (https:\/\/generativelanguage.googleapis.com)<\/li>\n<li><strong>Purpose:<\/strong> Generates AI-powered chat responses<\/li>\n<li><strong>Account Required:<\/strong> Yes \u2014 site owner must create their own Google account and API key<\/li>\n<li><strong>Billing Required:<\/strong> May require billing depending on usage<\/li>\n<li><strong>Data Sent:<\/strong>\n\n<ul>\n<li>User-submitted chat messages<\/li>\n<li>Optional recent conversation history (if enabled)<\/li>\n<li>Selected site content used for grounding responses<\/li>\n<\/ul><\/li>\n<li><strong>When Data Is Sent:<\/strong>\n\n<ul>\n<li>Only when a visitor submits a message via the chat widget, or when an administrator clicks \"Test connection\"<\/li>\n<\/ul><\/li>\n<li><strong>Terms of Service:<\/strong>\nhttps:\/\/policies.google.com\/terms<\/li>\n<li><strong>Privacy Policy:<\/strong>\nhttps:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<h3>Anthropic Claude<\/h3>\n\n<ul>\n<li><strong>Service:<\/strong> Anthropic Claude API (https:\/\/api.anthropic.com)<\/li>\n<li><strong>Purpose:<\/strong> Generates AI-powered chat responses<\/li>\n<li><strong>Account Required:<\/strong> Yes \u2014 site owner must create their own Anthropic (Claude Console) account<\/li>\n<li><strong>Billing Required:<\/strong> Yes \u2014 account must have available credits or active billing<\/li>\n<li><strong>Data Sent:<\/strong>\n\n<ul>\n<li>User-submitted chat messages<\/li>\n<li>Optional recent conversation history (if enabled)<\/li>\n<li>Selected site content used for grounding responses<\/li>\n<\/ul><\/li>\n<li><strong>When Data Is Sent:<\/strong>\n\n<ul>\n<li>Only when a visitor submits a message via the chat widget, or when an administrator clicks \"Test connection\"<\/li>\n<\/ul><\/li>\n<li><strong>Terms of Service:<\/strong>\nhttps:\/\/www.anthropic.com\/legal\/commercial-terms<\/li>\n<li><strong>Privacy Policy:<\/strong>\nhttps:\/\/www.anthropic.com\/legal\/privacy<\/li>\n<\/ul>\n\n<p>\u26a0\ufe0f The plugin author does not collect, store, or process AI usage data. All AI processing is performed by the configured third-party provider.<\/p>\n\n<p>Site owners are responsible for reviewing and complying with the terms, privacy policies, and billing requirements of the selected provider.<\/p>\n\n<h3>Privacy Policy<\/h3>\n\n<p>JRT AI Agent does not collect or store personal data by default.<\/p>\n\n<p>When enabled, chat messages are sent to the configured third-party AI provider solely for the purpose of generating responses.<\/p>\n\n<p>Conversation history can be disabled entirely. Browser storage is optional and can be turned off in settings.<\/p>\n\n<p>For rate limiting, a hash of the visitor's IP address is stored in a temporary transient that expires after 10 minutes.<\/p>\n\n<p>The site owner is responsible for informing users about AI-generated responses and third-party data processing in their own privacy policy.<\/p>\n\n<h3>Support<\/h3>\n\n<p>For support or custom development:\nhttps:\/\/www.jrtwebsolutions.com<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>jrt-ai-agent<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the Plugins menu<\/li>\n<li>Go to Settings \u2192 JRT AI Agent<\/li>\n<li>Configure your AI provider and chat settings<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20to%20provide%20my%20own%20api%20key%3F\"><h3>Do I need to provide my own API key?<\/h3><\/dt>\n<dd><p>Yes. You must create your own account and API key with OpenAI, Google Gemini or Anthropic.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20include%20free%20ai%20usage%3F\"><h3>Does the plugin include free AI usage?<\/h3><\/dt>\n<dd><p>No. The plugin does not provide API credits. Your AI provider account must have active billing or available credits.<\/p><\/dd>\n<dt id=\"which%20model%20should%20i%20use%3F\"><h3>Which model should I use?<\/h3><\/dt>\n<dd><p>Pick one from the model dropdown for your provider; each option says whether it favors quality or low cost. The defaults are GPT-6 Luna (OpenAI), Gemini 3.5 Flash-Lite (Gemini) and Claude Opus 5 (Claude). If your provider releases a model that isn't listed yet, choose \"Custom model ID\u2026\" and enter its exact ID.<\/p><\/dd>\n<dt id=\"how%20do%20i%20limit%20what%20the%20chat%20costs%20me%3F\"><h3>How do I limit what the chat costs me?<\/h3><\/dt>\n<dd><p>Under \"Limits &amp; Abuse Protection\", set a per-visitor rate limit, a daily request cap for the whole site, and a maximum message length.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20run%20out%20of%20credits%3F\"><h3>What happens if I run out of credits?<\/h3><\/dt>\n<dd><p>The chat assistant stops responding and shows visitors a generic \"unavailable\" message. Administrators see the detailed provider error.<\/p><\/dd>\n<dt id=\"do%20i%20need%20woocommerce%3F\"><h3>Do I need WooCommerce?<\/h3><\/dt>\n<dd><p>No. WooCommerce support is optional.<\/p><\/dd>\n<dt id=\"can%20i%20disable%20conversation%20memory%3F\"><h3>Can I disable conversation memory?<\/h3><\/dt>\n<dd><p>Yes. You can disable both browser storage and conversation history.<\/p><\/dd>\n<dt id=\"does%20this%20replace%20human%20support%3F\"><h3>Does this replace human support?<\/h3><\/dt>\n<dd><p>No. It assists visitors and clearly guides them to real support when needed.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: Anthropic Claude provider.<\/li>\n<li>New: \"Test connection\" button in settings.<\/li>\n<li>New: Choose the AI model from a dropdown of current models (with a custom ID option). The default OpenAI model is now GPT-6 Luna.<\/li>\n<li>New: Choose to show the chat on every page or only where the shortcode is placed.<\/li>\n<li>New: Site-wide daily request cap, maximum message length, and Cloudflare \/ reverse proxy support for rate limiting.<\/li>\n<li>New: API keys can be defined in wp-config.php.<\/li>\n<li>Security: The assistant is instructed to stay on topic (no code generation, homework, or roleplay), to refuse requests for passwords or credentials, and to treat visitor messages and site content as data rather than instructions. It never has access to admin passwords, user accounts, or API keys in the first place.<\/li>\n<li>Security: Password-protected posts are no longer sent to the AI provider.<\/li>\n<li>Security: Chat messages and history are length-limited to prevent runaway API costs.<\/li>\n<li>Security: The Gemini API key is sent in a request header instead of the URL.<\/li>\n<li>Security: Saved API keys are no longer printed into the settings page and are not autoloaded.<\/li>\n<li>Security: Provider error details are shown only to administrators.<\/li>\n<li>Security: Uninstall now removes all plugin options, including every API key, and cleans up transients (multisite aware).<\/li>\n<li>Fix: The [jrt_ai_agent_chat] shortcode now works.<\/li>\n<li>Fix: SVG icons keep their viewBox, and SVG file upload works.<\/li>\n<li>Fix: Consistent defaults for conversation memory and privacy mode.<\/li>\n<li>Fix: The visitor's new message was sent to the AI twice.<\/li>\n<li>Fix: Better site search for natural-language questions.<\/li>\n<li>Fix: OpenAI reasoning models (o-series, GPT-5, GPT-6) are supported.<\/li>\n<li>Fix: Gemini default model updated; retired Gemini 1.x\/2.x models are migrated automatically.<\/li>\n<li>Fix: Chat works on sites with full-page caching.<\/li>\n<li>Improved: Accessibility of the chat widget (labels, live region, keyboard support).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>AI-powered support assistant<\/li>\n<li>Customizable UI and privacy controls<\/li>\n<li>Optional WooCommerce integration<\/li>\n<\/ul>","raw_excerpt":"AI support chat grounded in your site content. Works with OpenAI, Gemini or Claude, with privacy mode, cost limits and WooCommerce support.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/280635","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=280635"}],"author":[{"embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jrtwebsolutions"}],"wp:attachment":[{"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=280635"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=280635"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=280635"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=280635"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=280635"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/km.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=280635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}