=== VideoWhisper Site Manager for ChatGPT, Claude, Codex, Grok ===
Contributors: videowhisper
Tags: mcp, chatgpt, claude, codex, grok
Requires at least: 6.9
Tested up to: 7.1
Requires PHP: 8.2
Stable tag: trunk
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Plugin URI: https://promptaur.com/wordpress/site-manager/

Manage WordPress content from ChatGPT, Claude, Codex, and Grok using your own account, not API keys.

== Description ==

Requires WordPress 6.9 or later and PHP 8.2 or later. Optional native WordPress Abilities expose reviewed Site Manager reads and draft writes; the separate MCP Adapter remains optional. Use a currently supported PHP release; PHP 8.2 security support ends December 31, 2026.

VideoWhisper Site Manager lets you manage WordPress posts and pages through external AI/SI agents such as ChatGPT (Custom GPT + Actions), Claude (MCP), Codex (MCP), and Grok custom MCP connectors, using your own account, not API keys.
It exposes authenticated WordPress endpoints and setup guidance while you keep using your own AI account and subscription.

Included features:

* Authenticated REST, MCP and generated OpenAPI interfaces for external agents.
* Direct local OAuth with S256 PKCE, exact versioned per-tool consent, scopes, client management and revocation; no relay account required.
* Optional native WordPress Abilities and separate MCP Adapter exposure, reviewed per user under Read Only or Safe Drafts.
* Optional shared Turnkey relay, frontend connection help and native Application Password setup.
* Free editorial tools for enabled content types, taxonomies, revisions, guarded recovery and signed-in draft previews.
* Connection doctor, client configuration copy and credential-free diagnostics.
* Opt-in image library/intake/metadata tools and effective standalone or Yoast SEO; details below.
* Object permissions, HTTPS, publication controls, rate limits, audit logs and extension hooks.

The plugin does not call OpenAI, Anthropic, xAI, or any AI/SI provider directly. Your WordPress site exposes authenticated endpoints and setup guidance. You connect it to ChatGPT, Claude, Codex, or Grok yourself with your own account and subscription.

= Supported Authentication =

Local OAuth retains existing development/Pro setting keys and endpoint aliases for compatibility. Its canonical endpoints are under /wp-json/videowhisper-site-manager/v1/oauth/. Tokens authorize Site Manager APIs only, not the WordPress MCP Adapter or unrelated WordPress REST APIs. The local provider supports exact callback allowlisting and S256 PKCE with public/confidential registered clients; this is not a claim of universal client or complete current OAuth-spec support. Use HTTPS and the callback shown by your client. Native Application Passwords are a separate authentication path and are not per-tool OAuth grants.


The onboarding flow recommends using one authentication option for clarity, but development and migration setups can enable more than one.

* **Local OAuth** - included in Free and selected on fresh installations with read-only site policy. Connect a compatible client directly to this site, add its exact callback URI to the allowlist, sign in and review requested scopes and individual tools. New or changed tools require renewed consent; refreshing a token never adds permissions. Writes and admin access are unchecked on the consent screen until selected.
* **Turnkey OAuth** - optional for shared and multi-site workflows. Users connect through a compatible Relay & OAuth Server and can operate one or more connected sites from the same shared GPT or MCP connector.
* **Application Passwords** - direct WordPress authentication over HTTPS using WordPress core Application Passwords. Best for admin-owned custom GPT/MCP setups where credentials are managed by the site operator.
* **Extension-provided authentication** - developers can add custom OAuth, token validation, alternate connector metadata, or other authentication flows with the hooks listed below.

= Permission modes and Free editorial workflow =

Local OAuth offers quick selection buttons before approval:

* **Read Only** selects available non-admin reads and the server denies write tools for this connection.
* **Safe Drafts** can read permitted content and create/edit only draft or pending items. It cannot touch live/private items, publish, trash content, create taxonomy terms, or implicitly create tags. Assigning existing terms and restoring revision text still require object permissions and current versions. A draft default is enforced even if the site normally publishes new content.
* **Full Permissions** selects every tool/scoped permission currently available in this request. It is not recommended outside a testing/development site. It cannot enable disabled site settings or bypass WordPress capabilities, and it never grants future tools automatically.
* **Custom** starts from read access and lets you review tools individually. Narrowing a restricted preset retains its server-side restrictions; choose Custom for a different policy.

Safe Drafts limits the plugin's supported core operations; installed third-party save hooks may have their own effects. Test with a dedicated least-privilege account and disposable content before production use. No mode is a human publishing approval system or a general sandbox for other plugins.

Enable public custom post types under **Settings > Content** (off by default), then reconnect to review the changed schemas. Use list_content_types and list_terms, create a draft, read its content_version, and supply expected_version on edits/term assignments/revision restoration. get_preview_link returns a WordPress preview that requires signing into WordPress as the connected editor; the URL is not anonymous access. Revisions restore title/content/excerpt only. Trash operations require WordPress Trash to be enabled, never permanently delete, and restore to draft. Older audit snapshots without the current taxonomy version may require manual review.

The new editorial module is available through this site's direct Local OAuth or native WordPress authentication. Existing relay scope grants do not automatically gain it; relay per-tool consent is a separate future integration. Native Application Passwords still use WordPress/site permissions rather than the Local OAuth modes.

= Optional native WordPress Abilities =

Open **Site Manager > Native Abilities**. Access is off until an administrator enables it and saves a reviewed policy for a chosen site user. Start with Read Only. Safe Drafts adds permitted draft/pending operations; it cannot publish, modify live/private/scheduled content, trash items or create public terms. Site settings, WordPress capabilities, ownership, shared rate limits and audit still apply. Existing content is untrusted data, not permission to perform an operation.

Select individual tools and save the reviewed policy. New or changed contracts require review again; revocation takes effect on the next request. Policies bind the user, site, native resource, install epoch, profile version and selected canonical tool fingerprints. Uninstall revokes the epoch while retaining customer content and metadata; reinstall requires a new review.

The fixed owned namespace `videowhisper-site-manager/` exports: `get-site-context`, `list-content`, `get-content`, `list-content-types`, `list-terms`, `list-revisions`, `get-preview-link`, `create-content`, `update-content`, `assign-terms`, `restore-revision`. There is no generic third-party ability executor or automatic exposure of other plugins. Native REST discovery: `/wp-json/wp-abilities/v1/abilities`. Read abilities use GET; draft writes use POST. Supply the ability's `input` object. Reads return content_version; updates, assignments and restoration require the matching expected_version. Review the signed-in preview and publish manually in WordPress.

Core Abilities work without MCP Adapter. For MCP, optionally install and activate the official **MCP Adapter** from Plugins > Add New, and select **Also expose these reviewed tools** in this user's policy. Connect a compatible native-authenticated client to `/wp-json/mcp/mcp-adapter-default-server`. Use that reviewed user's WordPress Application Password over HTTPS; never paste credentials into a prompt or URL. Cookie REST clients also need a REST nonce. Adapter discovery and nested execution both honor the reviewed selection. Tested with official MCP Adapter 0.7.1; individual clients may require different authentication setup.

These policies constrain this plugin's abilities; they do not narrow the Application Password itself. Other WordPress APIs still follow that user's capabilities. Use a dedicated limited account. Site Manager Local OAuth remains the choice for a credential scoped to Site Manager tools; those tokens are not accepted by native Abilities or the separate Adapter endpoint. Native exposure neither changes existing OAuth grants nor requires a vendor account or an AI-provider API key.

Sample prompt (also available with a Copy button in Native Abilities): "Discover my permitted videowhisper-site-manager abilities and read the page I specify. Suggest an edit. Update only a draft/pending item using its fresh content_version as expected_version; otherwise create a new draft copy. Do not publish. Give me the WordPress preview link so I can review it while signed in."

== Current AI Actions and Tools ==

Available tools depend on site settings, authentication, exact consent and WordPress permissions. The registry feeds MCP, OpenAPI and the dynamic agent guide; grouped OpenAPI actions use an `action` subaction field.

Core: `get_site_context`, `list_content`, `get_content`, `get_logs`, `create_content`, `update_content`. Conditional recovery: `revert_action`, `reset_action`.

Direct native/Local OAuth editorial tools: `list_content_types`, `list_terms`, `create_term`, `assign_terms`, `list_revisions`, `restore_revision`, `get_preview_link`, `trash_content`, `restore_content`.

`plugins_list` lists compatible integrations, their agent instructions and visible tools. `get_site_context` includes a brief permission-aware integration summary. Other plugins attach through `vwsm_ai_plugin_integrations`.

Read `/wp-json/videowhisper-site-manager/v1/agent-guide` (Markdown), with `?format=json`, `?surface=mcp` or `?surface=actions` for alternate formats. The generated guide describes the current site's permitted tools.

== Installation ==

1. Upload the `videowhisper-site-manager` plugin folder to `/wp-content/plugins/`, or install it via the WordPress Plugins screen.
2. Activate the plugin through the "Plugins" screen in WordPress.
3. Open **VideoWhisper Site Manager > Onboarding** (you will also see an admin reminder notice until setup is complete).
4. Create or link a dedicated WordPress user (recommended role: Editor).
5. Choose included Local OAuth, optional Turnkey OAuth, or a native Application Password as supported by your client.
6. For **ChatGPT**: open ChatGPT Builder on desktop and follow the provided step-by-step instructions. Import the OpenAPI schema from the URL shown in onboarding.
7. For **Claude**: copy the MCP endpoint URL from the onboarding page and follow the Claude.ai, Desktop, or CLI setup instructions shown there.
8. For **Codex**: copy the Codex MCP configuration or OAuth login command from the Codex onboarding tab, then verify the server with `/mcp`.

= Client setup =

Use **Site Manager > Onboarding** for the current provider-specific links, exact callbacks, copy buttons and client commands. For a direct connection, choose included Local OAuth, add the exact callback shown by your client to its allowlist, then sign in and review the displayed scopes/tools. Turnkey relay and native Application Passwords are alternatives with separate authentication boundaries.

ChatGPT Custom GPT Actions can import the generated OpenAPI schema. Claude, Codex and compatible Grok custom connectors can use the MCP endpoint. Provider/client availability and subscriptions vary; instructions link their official documentation. Never paste passwords/tokens into prompts or URLs. Start with Read Only and verify a legitimate read before enabling draft writes.

== Extension Hooks ==

Developers can extend this plugin without editing core files. Common hooks include:

1. **Settings and admin UI:** `vwsm_settings_defaults`, `vwsm_settings_normalized`, `vwsm_admin_settings_save`, `vwsm_rest_settings_payload`, `vwsm_settings_tab_label`, `vwsm_settings_form_publishing_rows`, `vwsm_settings_form_security_rows`, `vwsm_settings_form_rate_limits_rows`, `vwsm_settings_form_logs_revisions_rows`, `vwsm_settings_form_turnkey_oauth_rows`, `vwsm_settings_form_authentication_rows`, `vwsm_settings_form_application_passwords_rows`, `vwsm_settings_form_content_rows`, `vwsm_settings_form_admin_rows`, `vwsm_settings_form_attachments_rows`, `vwsm_settings_form_fomantic_rows`, `vwsm_settings_form_after_core_rows`, `vwsm_auth_methods_section`.
2. **Authentication and OAuth metadata:** `vwsm_oauth_server_url`, `vwsm_authorization_server_url`, `vwsm_rest_401_headers`, `vwsm_external_oauth_onboarding_urls`, `vwsm_onboarding_oauth_tab_content`, `vwsm_handle_external_register_gpt`.
3. **OpenAPI, MCP, and tools:** `vwsm_ai_actions`, `vwsm_ai_plugin_integrations`, `vwsm_ai_plugin_option_integrations`, `vwsm_ai_plugin_action_dispatch`, `vwsm_ai_action_native_openapi_tools`, `vwsm_mcp_server_name`, `vwsm_mcp_extra_tools`, `vwsm_mcp_dispatch_tool`, `vwsm_mcp_site_context`, `vwsm_openapi_components`, `vwsm_openapi_document`, `vwsm_write_rate_limit_mcp_tools`.
4. **Content and sanitization:** `vwsm_allowed_content_types`, `vwsm_revision_limit`, `vwsm_revision_gradient`, `vwsm_supported_extra_allowed_html_tags`, `vwsm_allow_extra_allowed_html_tags`.
5. **User connection workflows:** `vwsm_user_connect_handle_post`, `vwsm_user_connect_after_sections`, `vwsm_user_connect_tools_data`, `vwsm_user_connect_gpt_url`.
6. **Operator and environment behavior:** `vwsm_default_operator_username`, `vwsm_use_current_user_mode`.

== Disclaimer ==

This plugin provides infrastructure for operating a WordPress site with external AI chatbots and agents. The site owner is solely responsible for the actions enabled through this functionality, including content created or changed by AI tools, credentials and access tokens, backups, privacy compliance, and any publishing or policy consequences.

AI-generated content can be inaccurate, defamatory, plagiarized, non-compliant, or otherwise unsuitable for publication. Review AI output and tool activity before publishing. Keep publishing disabled unless you fully understand and accept the risk.

Use HTTPS, protect Application Passwords and OAuth credentials, restrict access where possible, monitor logs, and maintain independent backups. Use at your own risk.

== Frequently Asked Questions ==

= Connection doctor, images and effective SEO =

Open **Site Manager > Connection doctor** to copy the direct endpoint/configuration, inspect local policy and export a credential-free diagnostic report. The optional reachability check sends one anonymous request to this site's endpoint only; it does not verify client credentials. WordPress cannot observe a client chat's loaded catalog. Refresh tools in the client and start a new conversation when necessary; refreshing a site connection does not add tools or permissions.

Under **Site Manager > Images and SEO**, enable only the required modules. Existing settings and grants retain the prior storage-only SEO behavior. New tool names require exact Local OAuth or native Abilities review. New workflows are not exposed to unversioned relay grants.

* `list_media`, `get_media` and `set_featured_image` use the enabled image module and object capabilities. Featured-image selection requires fresh `content_version`. Safe Drafts can select an existing image on draft/pending content without editing shared image metadata.
* `upload_media_from_url` requires a separate reviewed Local OAuth tool selection or native WordPress authentication, upload capability, an editable target/current version and a 16–80 character idempotency key. Intake creates a **public** Media Library URL even for drafts. It is excluded from Safe Drafts. Administrators approve at most 20 exact HTTPS source hostnames. No redirects, credentials, private/reserved addresses, SVG, GIF or animated intake. JPEG/PNG/static WebP must fit 8 MiB or the lower host upload limit and the 16 MP/memory budget. Dry runs resolve/validate the hostname but perform no HTTP image download or attachment save. Identical retries reuse the attachment; conflicting reuse is rejected. Failed temporary files are cleaned.
* `update_media` requires explicit shared-metadata and publication settings, WordPress publication/edit capabilities and current `media_version`. Shared alt/caption/title/description edits can affect live pages. Read Only/Safe Drafts exclude this tool.
* `get_seo` reports the provider, stored title/description/canonical and `seo_version`. `update_seo` requires the current version and changes only supplied fields; empty strings clear them. Preview with `dry_run` before applying. Draft policies remain enforced; live/private/scheduled edits require publication permission.
* **Storage only** keeps existing `_vwsm_*` metadata behavior and makes no effective-output claim. **Standalone** opts into public singular title/description/canonical rendering and yields to recognized Yoast, Rank Math, AIOSEO, SEOPress or The SEO Framework ownership. It is not a full sitemap/schema/redirection suite. **Yoast** uses only its fixed native get/update post SEO abilities and vendor permissions; tested with Yoast 28.7. Yoast must have indexables enabled/built; local/staging environments may intentionally disable those abilities. No vendor table writes, provider credential storage or execute-any-ability wrapper is included. Other vendor write adapters remain future work.

Native Abilities adds the five read/draft tools (`list_media`, `get_media`, `set_featured_image`, `get_seo`, `update_seo`) when their modules are enabled. Review them per user; public intake and shared image edits remain outside that draft-only bridge. Optional MCP Adapter exposure keeps the same consent checks.

Prompt: "Find my draft about [topic]. Read its version, list accessible images and preview a featured-image selection. Save only the reviewed draft. Do not upload or change shared images. Read get_seo, suggest a title/description, preview with dry_run, then apply only the approved fields with its fresh seo_version. Leave canonical and publication status unchanged."

Image/SEO responses report supported previous values; no universal undo or transaction across third-party editors/save hooks is promised. Mutation locks serialize this workflow's writers only. After publication, verify the actual page source and purge any independent hosting/CDN cache as needed.



= Does this plugin store an OpenAI, Anthropic or xAI API key? =

No. This plugin does not store or use any AI/SI provider API keys. Your agents or AI/SI apps connect to this plugin. Plugin does NOT connect directly to AI/SI services.

= Can I use it with my free account or paid subscription? =

Yes, you can connect agents or applications (i.e. ChatGPT, Claude, Grok Bot) that use your free account or paid subscription from their providers (i.e. OpenAI, Anthropic, xAI).

= What agents or applications can use this MCP server? =

Use a compatible Streamable HTTP MCP client. Client availability depends on the provider, product version and account. Release 1.3.1 was verified with the official TypeScript MCP SDK 2.3.1, including TLS, discovery, authorization, refresh and revocation. The setup tabs provide guidance for popular clients; this does not guarantee every app version or account tier.

= How does authentication work? =

The plugin includes site-owned Local OAuth with explicit scopes and versioned individual tool selection, plus optional Turnkey OAuth and WordPress Application Passwords. Turnkey OAuth uses a compatible Relay & OAuth Server for shared GPT/MCP workflows. Application Passwords use WordPress core HTTP Basic Authentication over HTTPS. Developers can add more authentication flows with the documented hooks.

= Why must an existing local OAuth connection reconnect? =

Version 1.3.1 requires an explicit, versioned selection of individual tools. Existing settings, client registrations and audit data remain, but tokens issued without these permissions require a one-time reconnection. Only selected unchanged tools remain usable; newly added tools, contract changes and expanded publication permission require another review. Token refresh cannot expand access. These per-tool grants apply to included Local OAuth, not native WordPress Application Passwords or the optional relay service.

= How should an agent edit or recover content? =

Read the item with get_content, review its content_version, preview the intended change with dry_run, and pass that version as expected_version when saving through Local OAuth. A stale version returns a conflict instead of overwriting a later edit. Creating content defaults to draft. Responses include a request ID and, where available, an audit log ID. Supported update snapshots can be reverted/reset only if the current owned fields match the expected snapshot and permissions still allow the operation. This is not an undo guarantee for third-party effects or unsupported fields.

= What remains after uninstall? =

Site content, users, settings, client registrations and audit data are retained. Local access/refresh tokens are revoked and a reinstall requires a new permission review. Plugin cleanup jobs are removed. Deactivating the plugin alone does not delete customer data.

= Can the API publish posts immediately? =

Not by default. Creating published content or changing an already live item is blocked unless an administrator enables **Allow publish** in the plugin settings. The onboarding instructions and GPT/Claude guidance also reflect whether publishing is enabled.

= Why does ChatGPT, Claude, or Codex get a 403 on logs? =

The `/logs` endpoint is restricted by the log access settings. This is intentional. A dedicated Editor account can still create/edit content, but cannot access operational audit data unless that access is enabled.

= Does the plugin require HTTPS? =

Yes, by default plugin REST endpoints (including the OpenAPI and MCP endpoints) require HTTPS. A development-only setting can allow HTTP if needed on a local/dev environment.

= How quickly are revoked external OAuth bearer tokens rejected? =

External bearer-token validation uses a short cache to reduce remote validation traffic. The cache TTL is configurable in settings (`External token cache (seconds)`), so revoked tokens are typically rejected after that cache window expires.

= Can I set up everything from the plugin without visiting Users > Profile? =

Yes. You can create the dedicated user and create the Application Password directly from the onboarding page. A profile link is still provided for later review/revocation.

= Does the free plugin manage CRM support tickets? =

No CRM ticket-management code is bundled in this free plugin. The free plugin provides generic hooks that let other plugins register their own AI tools. Live Support Tickets is a separate free WordPress.org plugin; if it or another installed plugin registers tools through the documented hooks, those tools are available according to that plugin's own settings and permissions.

= What content types are supported? =

Posts and pages by default (both enabled). Free includes explicitly enabled public custom post types in the Content settings tab. Non-public/system types are excluded. Developers can extend tool behavior with hooks such as `vwsm_allowed_content_types`, `vwsm_mcp_extra_tools`, `vwsm_mcp_dispatch_tool`, `vwsm_openapi_components`, and `vwsm_openapi_document`.

= Does it include an AI chat interface inside WordPress? =

No. You need to use ChatGPT, Claude, Codex, or another compatible external AI application. This plugin only provides REST endpoints, an MCP endpoint, and onboarding for those external AI applications.

= Does the Claude connector work on mobile? =

Yes. Once you set up and authorize the connector in Claude.ai on desktop, it is automatically available in the Claude iOS and Android mobile apps — no additional setup is needed.

= How to report issues, request assistance or suggest features? =
[Consult VideoWhisper](https://consult.videowhisper.com) for assistance, reports or feature suggestions. 

= Where do I report security bugs found in this plugin? =
Please report security bugs found in the source code of the plugin through the [Patchstack Vulnerability Disclosure Program](https://patchstack.com/database/vdp/a1aec875-e2db-48fe-b5d2-d3d2c8c75e43). The Patchstack team will assist you with verification, CVE assignment, and notify the developers of this plugin.

== Frontend connection help ==

The [vwsm_user_connect] page provides section links, expandable app setup,
MCP URL copy buttons and a permission-aware tool list. Grok.com uses its custom
connector setup. Grok Bot has a separate Connect apps interface; custom MCP
availability depends on the product/account. Follow the linked provider guides.
Native WordPress abilities and optional MCP Adapter exposure have separate
administrator reviews. A connection can permit fewer tools than the account.
Personalized shortcode pages send no-cache headers; exclude them from any
reverse-proxy or full-page cache that ignores WordPress cache controls.

== Changelog ==

= 1.6.0 =
* Add a credential-free connection doctor with endpoint/config copy, an optional anonymous reachability check, tool catalog guidance and redacted export.
* Add opt-in image library reads, draft featured-image selection, bounded public image intake and versioned shared metadata edits. Public uploads/shared edits stay outside Safe Drafts.
* Add reviewed effective SEO tools, opt-in standalone tags and a Yoast native-Abilities adapter. New tools never inherit old grants; relay exposure remains separately gated.

= 1.5.2 =
* Fixed MCP content permission checks to use the tool target instead of the JSON-RPC correlation ID. Added an explicit shared-account Refresh connection action. Clearer frontend connection index, Grok/Grok Bot guidance, copy feedback and a permission-aware Site Manager tool/native ability list. AI-first wording.


= 1.5.1 =
* Added permission-filtered CRM metadata to plugins_list and context for tools registered through legacy MCP hooks; no new actions or permissions are granted.
* Fixed an authenticated tool-discovery crash when an integration supplies JSON Schema properties as an object. Both array and object maps retain their preview metadata and permission checks.


= 1.5.0 =
* Added opt-in native WordPress Abilities for eleven owned editorial read/draft tools; no Adapter dependency or generic ability imports.
* Added administrator-reviewed, site/user-bound Read Only and Safe Drafts tool policies with versioned contract fingerprints and immediate revocation.
* Added separate per-user MCP Adapter exposure, native authentication guidance and a copyable draft workflow prompt.
* Reused shared authorization, object permissions, optimistic versions, rate limits, audit and publication safety across native REST, CLI and optional Adapter execution.


= 1.4.1 =

* Require WordPress 6.9+ and PHP 8.2+ for the modern platform baseline. Existing connection policies and retained data are unchanged.

= 1.4.0 =
* Add Local OAuth permission modes, including server-enforced Safe Drafts and read-only restrictions, preserved during refresh and protected against older-provider downgrade.
* Include public custom post types, taxonomy tools, revisions, authenticated previews, and trash/draft restoration in Free through shared action/MCP policy.
* Validate mapped creation and taxonomy permissions, existing term ownership, payload bounds and current content versions before writes.
* Keep new editorial tools out of existing unversioned relay grants; update content tool contracts for explicit reconsent.
* Add OAuth permission-mode and Free Content settings screenshots.

= 1.3.1 =
* Require explicit versioned tool selection for local OAuth; prevent new or changed tools and token refresh from widening an old grant.
* Include local OAuth in Free with read-only fresh-install defaults, exact callback/resource validation and S256 PKCE. Existing local connections need one permission review.
* Add content versions, stale-edit protection, request/audit receipts and guarded recovery of supported snapshots.
* Preserve REST code-block backslashes, reject malformed payloads and protect live edits with publication policy and WordPress capabilities.
* Initialize cold network sites safely and support standard metadata discovery for subdirectories and active same-origin subsites.
* Revoke local credentials on uninstall while retaining customer content, users, settings and audit data.

= 1.3.0 =
* Include local OAuth in Free with legacy grant/storage/endpoint compatibility and a matching Pro 1.1.0 companion.
* Start fresh local onboarding read-only; let users explicitly select requested write/admin scopes.
* Validate OAuth resource requests, bind consent to the exact request, serialize code/refresh consumption and prevent cached token responses.
* Align grouped OpenAPI routes and direct tool dispatch with final registry availability; unknown extension names no longer imply read-only access.


= 1.2.14 =
* Clear the per-site database version during uninstall so audit tables are recreated correctly after network reinstallation.
* Preserve existing, promoted and shared network operator accounts during uninstall; reassign managed single-site operator content before cleanup.
* Security: enforce OAuth read/write scopes across REST, MCP and integrations; reject out-of-audience routes and empty-scope administrator access.

= 1.2.13 =

* Added the basic per-user agent context. Each authorized WordPress user can now maintain a short private context from `[vwsm_user_connect]`; it is included in that user's site context and is never shared with other site users.
* Kept the administrator-managed shared site context bounded at 5,000 characters, reserving larger structured, on-demand workspaces for compatible advanced extensions.

= 1.2.12 =

* Added default-enabled Grok custom MCP connector support, official xAI/Grok links, and OAuth-first onboarding guidance.
* Renamed user-facing AI tool/chatbot labels to AI/SI Agents and added the free AI/SI or AI automatic-content-tag selector.

= 1.2.11 =

* Security: enforced object-level WordPress capabilities for MCP and REST action-bridge content reads and updates.
* Security: content listings now return only posts editable by the authenticated user and restrict non-editors of others' posts to their own content.
* Security: enforced read-only mode for all content create and update paths, including MCP and the REST action bridge.

= 1.2.10 =

* Added shared `featured_media` support to create and update content contracts. Omit it to preserve the current image or pass `0` to clear it explicitly.

= 1.2.9 =

* Kept the Custom MCP safety notice provider-neutral and moved the ChatGPT Developer Mode and Claude connector documentation links into their respective enabled provider sections.

= 1.2.8 =

* Added a short, user-facing feature explanation at the start of the `[vwsm_user_connect]` shortcode. It explains that users can connect ChatGPT, Claude, Codex, or another compatible AI chat app or agent to manage enabled site features, including supported content editing, through normal prompts.

= 1.2.7 =

* Added user-facing ChatGPT custom MCP connector instructions, including the direct ChatGPT Apps/Connectors link, Developer Mode guidance, OAuth/tool-scan steps, documentation links, and an elevated-risk warning.
* Clarified that Codex CLI/IDE MCP configuration is separate from adding a connector to ChatGPT Chat or Work conversations.

= 1.2.6 =

* Added enabled-by-default AI retrieved-content safety guidance for MCP and Custom GPT setup, with an administrator opt-out for intentional site-context instructions or false positives.
* Local MCP content and comment retrieval now prepend a clear trust-boundary notice telling the AI to warn the chat user and refrain from suspicious consequential actions.

= 1.2.5 =

* Removed bundled Live Support Tickets CRM implementation from the free plugin; plugin-specific tools now belong in the extending plugin or add-on that registers them through hooks.
* Added explicit REST permission callbacks for the shared MCP endpoint and OpenAPI action bridge.
* Rejected action bridge requests where a body `action` attempts to override the route tool.
* Added plain-language external service disclosures with Terms of Use and Privacy Policy links.

= 1.2.4 =

* Updated the plugin display name to start with the VideoWhisper brand name.
* Moved screenshot assets to the WordPress.org SVN assets directory.
* Kept frontend and admin JavaScript/CSS loaded through WordPress enqueue APIs.
* Fixed Stable tag and version metadata for WordPress.org packaging.
* Added translator context comments and tightened review-tool findings.

= 1.0.8 =

* Added a dynamic agent guide endpoint and MCP guide resources generated from the shared AI action registry
* Site context now includes `available_tools` and `available_action_modules` for the current site settings and authenticated user
* Maintenance release that refreshes plugin version metadata and rebuilds the installable distribution package without development files or docs

= 1.0.4 =

* Added Codex onboarding and MCP setup guidance alongside ChatGPT and Claude
* Tightened default rate limits to 10 reads/minute, 5 writes/minute, and 30 writes/hour
* Site context and rate-limit rejections now expose current rate-limit details for AI tools
* Updated FansPaysite support wording for theme-specific shortcode styling
* Maintenance release for the current Turnkey OAuth and shared GPT onboarding flow
* Refined release metadata and packaging for the latest Site Manager distribution build

= 1.0.2 =

* Turnkey OAuth now reads shared ChatGPT and shared Claude MCP details from the connected Site Manager Server instead of relying on client-side local settings
* Turnkey onboarding links and activation guidance now surface server-provided shared GPT state more consistently

= 1.0.1 =

* Added VideoWhisper top admin-bar integration with Site Manager shortcuts
* Updated shared VideoWhisper contact/admin-bar links to use consult.videowhisper.com

= 0.4.0 =

* Added: MCP GET endpoint with SSE support per MCP Streamable HTTP transport spec (2025-03-26) — required for Claude.ai, Claude Desktop, and Claude CLI to connect
* Added: Claude Desktop and Claude CLI setup instructions in the onboarding panel (Claude.ai / Desktop / CLI tabs)
* Added: Note that Claude.ai connector also works in Claude mobile apps (iOS and Android)
* Fixed: Onboarding notice now correctly detects the onboarding page using `get_current_screen()` instead of `filter_input()` which could return null on some server configurations

= 0.3.1 =

* Fixed: Moved inline JavaScript on the onboarding page to an enqueued external file using wp_enqueue_script() and wp_localize_script()
* Fixed: REST permission callback for /content endpoint now checks the post-type-specific capability (e.g. edit_pages for pages) instead of always checking edit_posts

= 0.2.0 =

* Added admin Logs page in wp-admin
* Added configurable audit log retention with daily cleanup
* Simplified onboarding with ChatGPT/Claude tabs
* Updated ChatGPT action setup guidance and sharing safety notes
* Moved advanced options to extension hooks and add-on integration points
* Added/expanded extension hooks documentation for third-party add-ons
* Policy/readiness cleanup for WordPress.org checks

= 0.1.0 =

* Initial release
* Direct Mode REST endpoints for content, settings, logs, and OpenAPI
* ChatGPT / GPT Actions onboarding with generated OpenAPI schema URL
* One-click dedicated user + Application Password onboarding helpers
* GPT Builder step-by-step setup instructions with copy/paste values
* HTTPS enforcement for plugin endpoints (with development override)
* Draft-first workflow with optional publish gate
* Audit logging and admin settings controls

== Upgrade Notice ==

= 1.5.1 =
Fixes a tool-discovery crash affecting integrations with object-shaped JSON Schemas. Existing tool permissions and Safe Drafts are unchanged.


= 1.5.0 =
Native Abilities are off by default. Review a dedicated user's tools under Site Manager > Native Abilities. MCP Adapter is optional and needs separate per-user opt-in. Existing Site Manager OAuth grants and manual publishing remain unchanged.


= 1.4.1 =
Upgrade WordPress to 6.9+ and PHP to 8.2+ before updating. This establishes the native Abilities API baseline; the optional integration remains separate. Existing content and connection safety policies remain.

= 1.4.0 =
Reconnect content-tool connections to review changed schemas and choose Read Only, Safe Drafts or Custom. New editorial tools are direct-site only. Update Pro to 1.1.1 for matching Free CPT controls. Trash restoration always returns a draft. Review older snapshots manually if needed.

= 1.3.1 =
Local OAuth is now included in Free. Reconnect existing local clients once to review individual tools. Update Free before or with Pro 1.1.0. Settings and customer data remain. Local edits require the latest content_version as expected_version; live changes need publication permission.

= 1.3.0 =
Local OAuth moved into Free. Version 1.3.1 adds explicit tool review; reconnect older local connections. Fresh installations start read-only. Existing site choices remain.

= 1.2.14 =
Security update for OAuth permissions. Update related Site Manager Pro and Server components together.


= 1.2.9 =

Shows ChatGPT and Claude setup clarifications only in the relevant enabled provider section.

= 1.2.8 =

Adds a concise explanation at the start of the frontend AI connection page, clarifying the supported chat-app and site-management scope.

= 1.2.7 =

Adds clear ChatGPT custom-connector guidance, safety documentation, and the distinction between ChatGPT connectors and Codex CLI/IDE MCP configuration.

= 1.2.5 =

Compliance update for WordPress.org review: removes plugin-specific locked feature code from the free plugin, tightens shared route permissions, and documents optional external services.

= 1.2.4 =

WordPress.org review compliance update for plugin naming, asset placement, enqueue usage, and stable tag metadata.

= 1.0.8 =

Maintenance release with refreshed version metadata and a clean installable distribution package.

= 1.0.4 =

Maintenance release that refreshes Site Manager packaging and current Turnkey/shared GPT onboarding metadata.

= 1.0.2 =

Turnkey OAuth now uses server-provided shared GPT and MCP details more consistently across settings and onboarding.

= 1.0.1 =

Adds top VideoWhisper admin-bar access for Site Manager and updates the shared contact links.

= 0.4.0 =

Adds MCP GET/SSE endpoint required for Claude.ai, Claude Desktop, and Claude CLI connections. Also fixes onboarding notice detection on some server configurations.

= 0.3.1 =

Security and compliance fixes: enqueued scripts and tightened REST permission checks per WordPress.org review.

= 0.2.0 =

Improved onboarding, logging, settings controls, and WordPress.org compliance updates.

== Screenshots ==
1. Claude updating WP site pages. 
2. ChatGPT listing sites available to operate.
3. Onboarding screen with authentication method, Claude / GPT. 
4. Frontend user connection instructions to chatbots. 
5. Shared GPT for muti site support.
6. Local OAuth quick permission modes and individual tool consent.
7. Free Content settings with explicit public custom post type enablement.
8. Native WordPress Abilities: reviewed per-user Read Only/Safe Drafts tools and optional MCP Adapter exposure.
9. Connection doctor: endpoint/configuration copy, local policy and client catalog guidance.

== Privacy ==

Native Abilities availability is stored in site options. Reviewed policies are private user metadata scoped to the site; they contain selected tool fingerprints, mode, native version, audience, user and epoch, plus the optional Adapter exposure choice. No Application Password is copied into these policies.

Local OAuth stores client names, registered callbacks, registration IP addresses, user/client IDs, granted scopes, versioned tool selections and permission mode, token expiry and last-use timestamps in this site database. Access/refresh tokens use keyed hashes and confidential client secrets use password hashes. Credentials are returned only during issuance and are not included in tool/audit payloads. Administrators can revoke tokens and remove clients from Local OAuth. Deactivating Pro does not remove a Free-owned local connection.


This plugin stores the following data on your WordPress site:

* Plugin settings in WordPress options (for example: publish, rate limit, HTTPS, IP allowlist, authentication, and provider URL settings)
* Audit log entries in a custom database table (`*_vwsm_audit_logs`)
* Optional dedicated operator user ID reference in WordPress options (when using onboarding helper)
* Short-lived transient for one-time Application Password display after creation (plaintext is not stored long-term)
* Short-lived transient cache for external bearer-token validation, when Turnkey OAuth is used
* Optional connected service account tokens, site keys, server URLs, and provider policy links used for remote account and Turnkey OAuth workflows
* A private `vwsm_user_context` user-meta value (up to 2,000 characters) when a user saves My Agent Context from `[vwsm_user_connect]`

Audit logs may include (depending on settings):

* Authenticated WordPress user ID
* Request route and method
* Sanitized request/response summaries
* Timestamp and IP address

This plugin does not send data to third-party AI services by itself.
This plugin does not include telemetry/analytics tracking by default.

Site owners are responsible for:

* Securing the site with HTTPS
* Managing WordPress users and Application Passwords
* Configuring GPT sharing safely (recommended: **Only Me**)
* Reviewing the privacy implications of any external AI service connected to the site's API

== External services ==

= Optional user-selected image source =

Only explicitly executed approved image intake sends a WordPress HTTP GET to the administrator-approved HTTPS source supplied by the agent/user. The source receives the URL (including any query), server network address and WordPress HTTP user-agent. Host validation may resolve DNS, including during a dry run. This feature supplies no WordPress login cookie, Application Password or OAuth token. The administrator chooses the destination and must review its terms/privacy policy. Manual editing, library reads, standalone SEO and disabled intake require no external image service. Source URLs and idempotency keys are redacted from audit summaries. The optional Connection doctor probe contacts only this site's MCP endpoint without credentials.


This plugin can optionally connect to external services only when an administrator chooses a workflow that uses them, mainly as relay for multi site management. The default external services listed below are provided for free registration-based onboarding and multi site relay functionality. They do not require payment to use with the free plugin. Site administrators can also configure another compatible third-party Relay & OAuth Server URL or add custom services through the documented WordPress hooks.

= Promptaur Relay & OAuth Server =

Default service URL: `https://server.promptaur.com`

This service is used for optional multi-site relay routing (manage multiple sites from same session), shared Turnkey OAuth, shared GPT/shared MCP onboarding, and bearer-token validation on this type of setup. It makes setup simpler by allowing users to connect through one shared OAuth login and, when enabled by the service, use pre-existing shared GPT or MCP connector configuration instead of creating their own.

Data sent to this service:

* When registering a site: the WordPress site URL, site name, and optional account or server registration token entered/configured by the administrator.
* When registering a GPT/OAuth client: the site key, site secret, client name, and GPT callback URL supplied in onboarding.
* When validating OAuth bearer tokens: the bearer access token plus the site's registered site key and site secret. The plugin caches validation briefly according to the configured token cache TTL.
* When loading Turnkey configuration, status, disconnect, or user connection data: the site key, site secret, and the specific account/site/user connection values needed for that request.

Terms of Use: https://server.promptaur.com/terms-of-use/
Privacy Policy: https://server.promptaur.com/privacy-policy/

= VideoWhisper Remote Connect =

Default service URL: `https://consult.videowhisper.com`

This optional onboarding service is used by the VideoWhisper Remote Connect wizard to register or log in a contact, import connection settings, and simplify account/site setup for multi-site relay server. It is a free registration-based service used to improve onboarding; it is not required for direct Application Password setup.

Data sent to this service from the onboarding page:

* The client plugin identifier, WordPress site URL, and normalized site domain.
* Registration/login details entered by the administrator, such as name, email address, PIN/confirmation code, website/domain, and form fields returned by the service configuration.
* Remote account tokens returned by the service when the administrator chooses to import settings or push the current site URL/account state.

Terms of Use: https://consult.videowhisper.com/terms-of-use/
Privacy Policy: https://consult.videowhisper.com/privacy-policy/
