{"id":323106,"date":"2026-06-08T18:00:19","date_gmt":"2026-06-08T18:00:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/botcreds-agent-memory\/"},"modified":"2026-06-08T17:59:54","modified_gmt":"2026-06-08T17:59:54","slug":"botcreds-agent-memory","status":"publish","type":"plugin","link":"https:\/\/azb.wordpress.org\/plugins\/botcreds-agent-memory\/","author":5977448,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.9","stable_tag":"2.0.9","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"BotCreds Agent Memory","header_author":"Joe Boydston","header_description":"Portable memory store for AI agents. REST API + MCP endpoint. KV mode by default, semantic vector search when OpenAI key is configured.","assets_banners_color":"","last_updated":"2026-06-08 17:59:54","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/botcreds.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":28,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.9":{"tag":"2.0.9","author":"jboydston","date":"2026-06-08 17:59:54"}},"upgrade_notice":{"2.0.8":"<p>Fixes a fatal error on settings pages. Update recommended.<\/p>","2.0.4":"<p>Security update: unauthenticated frontend HTML requests now return 403.<\/p>","2.0.0":"<p>Initial release. Install and activate to get started.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.9"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[15643,2353,1556,242115,9434],"plugin_category":[],"plugin_contributors":[83862],"plugin_business_model":[],"class_list":["post-323106","plugin","type-plugin","status-publish","hentry","plugin_tags-agents","plugin_tags-ai","plugin_tags-api","plugin_tags-mcp","plugin_tags-memory","plugin_contributors-jboydston","plugin_committers-jboydston"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/botcreds-agent-memory.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>BotCreds Agent Memory gives your AI agents a persistent, structured memory store accessible via WordPress REST API and MCP (Model Context Protocol).<\/p>\n\n<p><strong>Two modes of operation:<\/strong><\/p>\n\n<ul>\n<li><strong>KV Mode (default)<\/strong> \u2014 Simple key-value store with tags, expiry, and text search. No external dependencies. Works out of the box.<\/li>\n<li><strong>Vector Mode<\/strong> \u2014 Add an OpenAI API key to unlock semantic search powered by embeddings. Entries are automatically embedded and searchable by meaning, not just keywords.<\/li>\n<\/ul>\n\n<p><strong>Key features:<\/strong><\/p>\n\n<ul>\n<li>REST API with full CRUD (create, read, update, delete)<\/li>\n<li>MCP endpoint for AI agent tool integration<\/li>\n<li>Namespace-based access control per WordPress user<\/li>\n<li>Automatic embedding generation via WP-Cron<\/li>\n<li>Bulk backfill for existing entries<\/li>\n<li>Expiry support for temporary memories<\/li>\n<li>Tag-based filtering and organization<\/li>\n<li>WordPress Application Password authentication<\/li>\n<\/ul>\n\n<p><strong>Built for AI agents, by AI agents.<\/strong><\/p>\n\n<p>Use this plugin to give your AI assistants persistent memory across sessions, share context between multiple agents, or build agent workflows that remember.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin optionally connects to the OpenAI API to generate vector embeddings for semantic search.<\/p>\n\n<ul>\n<li><strong>Service:<\/strong> OpenAI Embeddings API (<code>https:\/\/api.openai.com\/v1\/embeddings<\/code>)<\/li>\n<li><strong>When it is used:<\/strong> Only when an OpenAI API key is configured in the plugin settings. Without a key, the plugin operates in KV-only mode and makes no external requests.<\/li>\n<li><strong>What is sent:<\/strong> The text content of memory entries you explicitly write or update.<\/li>\n<li><strong>OpenAI Terms of Use:<\/strong> https:\/\/openai.com\/policies\/terms-of-use<\/li>\n<li><strong>OpenAI Privacy Policy:<\/strong> https:\/\/openai.com\/policies\/privacy-policy<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>botcreds-agent-memory<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>(Optional) Go to <strong>Agent Memory \u2192 Settings<\/strong> and add your OpenAI API key to enable vector mode.<\/li>\n<li>Create a WordPress Application Password for your agent under <strong>Users \u2192 Profile \u2192 Application Passwords<\/strong>.<\/li>\n<li>Use the REST API at <code>\/wp-json\/botcreds-memory\/v1\/<\/code> with Basic Auth.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20openai%20api%20key%3F\"><h3>Do I need an OpenAI API key?<\/h3><\/dt>\n<dd><p>No. Without a key, the plugin works in KV (key-value) mode with text-based search. An OpenAI key enables semantic vector search via embeddings.<\/p><\/dd>\n<dt id=\"how%20does%20authentication%20work%3F\"><h3>How does authentication work?<\/h3><\/dt>\n<dd><p>The plugin uses WordPress Application Passwords. Create one under <strong>Users \u2192 Profile \u2192 Application Passwords<\/strong>, then use HTTP Basic Auth with your username and the generated password.<\/p><\/dd>\n<dt id=\"can%20i%20restrict%20which%20keys%20a%20user%20can%20access%3F\"><h3>Can I restrict which keys a user can access?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Users \u2192 Edit User \u2192 Agent Memory Access<\/strong> and set allowed key prefixes. The user will only be able to read and write keys starting with those prefixes. Leave blank for full access.<\/p><\/dd>\n<dt id=\"what%20is%20mcp%3F\"><h3>What is MCP?<\/h3><\/dt>\n<dd><p>MCP (Model Context Protocol) is a standard for AI agents to discover and use tools. The plugin exposes an MCP manifest at <code>\/wp-json\/botcreds-memory\/v1\/mcp<\/code> and a tool call endpoint at <code>\/wp-json\/botcreds-memory\/v1\/mcp\/call<\/code>.<\/p><\/dd>\n<dt id=\"how%20are%20embeddings%20generated%3F\"><h3>How are embeddings generated?<\/h3><\/dt>\n<dd><p>When you save an entry and an OpenAI key is configured, the plugin schedules a WP-Cron event to generate the embedding asynchronously. Existing entries can be backfilled from the Settings page.<\/p><\/dd>\n<dt id=\"what%20embedding%20model%20is%20used%3F\"><h3>What embedding model is used?<\/h3><\/dt>\n<dd><p>By default, <code>text-embedding-3-small<\/code> (1536 dimensions). You can change this in the Settings page.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.9<\/h4>\n\n<ul>\n<li>Fix: Replace non-standard bcam prefix with botcreds_memory in admin page slug, hook names, nonce actions, and POST key names for WordPress.org review compliance.<\/li>\n<\/ul>\n\n<h4>2.0.8<\/h4>\n\n<ul>\n<li>Fix fatal error on settings pages: guard Settings API registration with is_admin() check.<\/li>\n<\/ul>\n\n<h4>2.0.7<\/h4>\n\n<ul>\n<li>Fix PHP 7.4 compatibility: replace str_starts_with() with strpos()-based equivalent.<\/li>\n<\/ul>\n\n<h4>2.0.6<\/h4>\n\n<ul>\n<li>Register plugin settings on rest_api_init so show_in_rest works correctly.<\/li>\n<li>Expose OpenAI key and embedding model settings via the REST API.<\/li>\n<\/ul>\n\n<h4>2.0.4<\/h4>\n\n<ul>\n<li>Security hardening: return 403 for unauthenticated HTML requests to the frontend.<\/li>\n<\/ul>\n\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>MCP: implement proper JSON-RPC 2.0 protocol for tool calls and responses.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Update plugin author to Joe Boydston.<\/li>\n<li>Add jboydston as WordPress.org contributor.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Fix Plugin Check errors: SQL preparation phpcs:ignore annotations, nonce verification in user profile save, i18n ordered placeholders, error_log wrapped in WP_DEBUG guard.<\/li>\n<li>Update tested up to WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>KV mode: key-value store with tags, expiry, and text search.<\/li>\n<li>Vector mode: semantic search via OpenAI embeddings.<\/li>\n<li>REST API: full CRUD under <code>\/wp-json\/botcreds-memory\/v1\/<\/code>.<\/li>\n<li>MCP endpoint: manifest and tool call handler.<\/li>\n<li>Access control: per-user namespace restrictions.<\/li>\n<li>Admin UI: entries browser, settings page, access control overview.<\/li>\n<li>WP-Cron: automatic embedding generation and bulk backfill.<\/li>\n<\/ul>","raw_excerpt":"Portable memory store for AI agents. REST API + MCP endpoint. KV mode by default, semantic vector search when OpenAI key is configured.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/323106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=323106"}],"author":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jboydston"}],"wp:attachment":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=323106"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=323106"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=323106"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=323106"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=323106"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=323106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}