{"id":325042,"date":"2026-06-17T02:15:17","date_gmt":"2026-06-17T02:15:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/npcink-ai-client-adapter\/"},"modified":"2026-10-13T02:35:34","modified_gmt":"2026-10-13T02:35:34","slug":"npcink-ai-client-adapter","status":"publish","type":"plugin","link":"https:\/\/kea.wordpress.org\/plugins\/npcink-ai-client-adapter\/","author":16786901,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.4.2","stable_tag":"0.4.2","tested":"7.1.3","requires":"7.0","requires_php":"8.0","requires_plugins":null,"header_name":"Npcink AI Client Adapter","header_author":"Npcink","header_description":"Thin AI client adapter for Npcink Governance Core and WordPress Abilities execution.","assets_banners_color":"d3ede6","last_updated":"2026-10-13 02:35:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":424,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.0":{"tag":"0.3.0","author":"muze233","date":"2026-06-17 02:14:58","revision":3575131},"0.3.1":{"tag":"0.3.1","author":"muze233","date":"2026-06-17 08:33:47","revision":3575448},"0.3.2":{"tag":"0.3.2","author":"muze233","date":"2026-06-21 12:10:07","revision":3580629},"0.4.0":{"tag":"0.4.0","author":"muze233","date":"2026-10-01 19:49:30","revision":3723782},"0.4.1":{"tag":"0.4.1","author":"muze233","date":"2026-10-10 01:23:06","revision":3737497},"0.4.2":{"tag":"0.4.2","author":"muze233","date":"2026-10-13 02:35:34","revision":3742786}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3580629,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3580629,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3580629,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3580629,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.0","0.3.1","0.3.2","0.4.0","0.4.1","0.4.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3580629,"resolution":"1","location":"assets","locale":"","width":1440,"height":840},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3580629,"resolution":"2","location":"assets","locale":"","width":1440,"height":840},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3580629,"resolution":"3","location":"assets","locale":"","width":1440,"height":840}},"screenshots":{"1":"Adapter connection overview with site readiness, active device count, and the recommended signed key-pair pairing flow.","2":"Active key-pair devices with device identifiers, last-used timestamps, status labels, revoke actions, and a revoked-device summary.","3":"WordPress Application Password fallback connection flow for clients that use a dedicated secret field or credential vault."}},"plugin_section":[],"plugin_tags":[2353,569,258885,23853],"plugin_category":[],"plugin_contributors":[265919],"plugin_business_model":[],"class_list":["post-325042","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-automation","plugin_tags-governance","plugin_tags-rest-api","plugin_contributors-muze233","plugin_committers-muze233"],"banners":{"banner":"https:\/\/ps.w.org\/npcink-ai-client-adapter\/assets\/banner-772x250.png?rev=3580629","banner_2x":"https:\/\/ps.w.org\/npcink-ai-client-adapter\/assets\/banner-1544x500.png?rev=3580629","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/npcink-ai-client-adapter\/assets\/icon-128x128.png?rev=3580629","icon_2x":"https:\/\/ps.w.org\/npcink-ai-client-adapter\/assets\/icon-256x256.png?rev=3580629","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/npcink-ai-client-adapter\/assets\/screenshot-1.png?rev=3580629","caption":"Adapter connection overview with site readiness, active device count, and the recommended signed key-pair pairing flow."},{"src":"https:\/\/ps.w.org\/npcink-ai-client-adapter\/assets\/screenshot-2.png?rev=3580629","caption":"Active key-pair devices with device identifiers, last-used timestamps, status labels, revoke actions, and a revoked-device summary."},{"src":"https:\/\/ps.w.org\/npcink-ai-client-adapter\/assets\/screenshot-3.png?rev=3580629","caption":"WordPress Application Password fallback connection flow for clients that use a dedicated secret field or credential vault."}],"raw_content":"<!--section=description-->\n<p>Npcink AI Client Adapter connects local AI clients, such as OpenClaw-compatible tools, to a WordPress site through a focused REST adapter.<\/p>\n\n<p>It is designed for sites that use Npcink Governance Core for reviewable AI operations and WordPress Abilities API providers, such as Npcink Abilities Toolkit, for concrete WordPress capabilities. The Adapter gives clients one stable WordPress REST surface for checking readiness, reading governance guidance, running approved read abilities, creating governed proposals, and executing supported writes only after Core approval and commit-preflight.<\/p>\n\n<p>The default connection path uses signed key-pair pairing so the AI client does not need to receive a WordPress Application Password. A WordPress Application Password fallback is available for clients that already have a dedicated secret field or credential vault.<\/p>\n\n<p>Adapter is intentionally thin. It does not define abilities, store approval truth, run workflow queues, act as an MCP server, manage model providers, store prompts, or execute arbitrary final write mutations. Governance remains in Npcink Governance Core. Ability definitions and callbacks remain in Npcink Abilities Toolkit or another WordPress Abilities API provider.<\/p>\n\n<p>Adapter exposes a machine-readable <code>client_policy<\/code> on health, help, and the connection manifest so compatible clients can consume explicit route, output, sensitive-read, and write-flow boundaries. The local CLI also redacts profile paths, key ids, signing headers, tokens, passwords, and secrets from output, and its <code>mcp<\/code> subcommand runs a client-side stdio MCP server over the same signed profile with governed read, propose, preflight, and execute-after-human-approval tools only.<\/p>\n\n<p>Current governed execution support covers explicit Adapter profiles after Core approval and commit-preflight: <code>npcink-abilities-toolkit\/trash-post<\/code>, <code>npcink-abilities-toolkit\/create-draft<\/code>, <code>npcink-abilities-toolkit\/update-post<\/code>, <code>npcink-abilities-toolkit\/patch-post-content<\/code>, <code>npcink-abilities-toolkit\/update-post-blocks<\/code>, <code>npcink-abilities-toolkit\/update-template-blocks<\/code>, <code>npcink-abilities-toolkit\/upsert-template-blocks<\/code>, <code>npcink-abilities-toolkit\/update-template-part-blocks<\/code>, <code>npcink-abilities-toolkit\/patch-setting-value<\/code>, <code>npcink-abilities-toolkit\/set-post-seo-meta<\/code>, <code>npcink-abilities-toolkit\/adopt-article-audio<\/code>, <code>npcink-abilities-toolkit\/set-post-slug<\/code>, <code>npcink-abilities-toolkit\/set-post-terms<\/code>, <code>npcink-abilities-toolkit\/delete-term<\/code>, <code>npcink-abilities-toolkit\/update-media-details<\/code>, <code>npcink-abilities-toolkit\/upload-media-from-url<\/code>, <code>npcink-abilities-toolkit\/set-post-featured-image<\/code>, <code>npcink-abilities-toolkit\/optimize-media-asset<\/code>, <code>npcink-abilities-toolkit\/replace-media-file<\/code>, <code>npcink-abilities-toolkit\/restore-media-backup<\/code>, <code>npcink-abilities-toolkit\/adopt-cloud-media-derivative<\/code>, <code>npcink-abilities-toolkit\/rename-media-file<\/code>, <code>npcink-abilities-toolkit\/delete-media-permanently<\/code>, <code>npcink-abilities-toolkit\/reply-comment<\/code>, <code>npcink-abilities-toolkit\/trash-comment<\/code>, and <code>npcink-abilities-toolkit\/approve-comment<\/code>.<\/p>\n\n<p>Key features:<\/p>\n\n<ul>\n<li>Connect OpenClaw-compatible and similar local AI clients to WordPress through one Adapter REST namespace.<\/li>\n<li>Check Adapter readiness and dependency status before a client starts work.<\/li>\n<li>Expose a machine-readable <code>client_policy<\/code> so clients can understand route, read, write, and sensitive-data boundaries.<\/li>\n<li>Route approved direct-read requests through the WordPress Abilities API.<\/li>\n<li>Forward governed write requests to Npcink Governance Core proposal and commit-preflight endpoints.<\/li>\n<li>Support human-approved final execution for explicit, supported execution profiles after Core approval, plus a unified approve-and-execute action reserved for WordPress administrator sessions.<\/li>\n<li>Prefer signed key-pair pairing for local clients, with an Application Password fallback when appropriate.<\/li>\n<li>Keep channel, governance, ability, cloud, and model-provider responsibilities separate.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate <code>npcink-abilities-toolkit<\/code>.<\/li>\n<li>Install and activate <code>npcink-governance-core<\/code>.<\/li>\n<li>Install and activate Npcink AI Client Adapter.<\/li>\n<li>Open Npcink &gt; Adapter to create the local AI client handoff.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20adapter%20approve%20proposals%3F\"><h3>Does Adapter approve proposals?<\/h3><\/dt>\n<dd><p>Adapter provides an <code>approve-and-execute<\/code> action for supported execution profiles, reserved for WordPress administrator sessions. Signed AI clients cannot approve their own proposals: a human approves in the Npcink Governance Core admin and the client then calls the execute route. Npcink Governance Core remains the governance backend for proposal storage, approval, commit-preflight, and audit.\nExecution abilities are declared by Npcink Abilities Toolkit and approved by Npcink Governance Core; Adapter supplies only the post-preflight channel.<\/p><\/dd>\n<dt id=\"does%20adapter%20execute%20arbitrary%20abilities%3F\"><h3>Does Adapter execute arbitrary abilities?<\/h3><\/dt>\n<dd><p>No. Adapter executes only explicit, supported execution profiles after Core approval and commit-preflight. It is not a generic ability executor and does not bypass Core governance.<\/p><\/dd>\n<dt id=\"do%20i%20need%20other%20npcink%20plugins%3F\"><h3>Do I need other Npcink plugins?<\/h3><\/dt>\n<dd><p>Yes. Npcink Abilities Toolkit provides the ability definitions and callbacks used by the Adapter. Npcink Governance Core is required for governed proposals, approval, commit-preflight, and audit.<\/p><\/dd>\n<dt id=\"which%20ai%20clients%20can%20connect%3F\"><h3>Which AI clients can connect?<\/h3><\/dt>\n<dd><p>Adapter is built for OpenClaw-compatible local clients and similar tools that can call authenticated WordPress REST endpoints and consume the Adapter <code>client_policy<\/code>.<\/p><\/dd>\n<dt id=\"does%20adapter%20send%20my%20wordpress%20password%20to%20an%20ai%20client%3F\"><h3>Does Adapter send my WordPress password to an AI client?<\/h3><\/dt>\n<dd><p>The recommended signed key-pair path avoids giving the client a WordPress Application Password. Adapter stores only the approved public key. The Application Password path remains available as a fallback for clients with a dedicated secret field or credential vault.<\/p><\/dd>\n<dt id=\"does%20adapter%20run%20ai%20models%20or%20store%20prompts%3F\"><h3>Does Adapter run AI models or store prompts?<\/h3><\/dt>\n<dd><p>No. Adapter is a channel layer. It does not provide model routing, prompt management, provider credentials, workflow queues, or hosted AI execution.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20dependencies%20are%20missing%3F\"><h3>What happens if dependencies are missing?<\/h3><\/dt>\n<dd><p>Adapter health and help routes can report dependency status. Routes that require Npcink Governance Core or a WordPress Abilities API provider fail closed with a structured missing dependency error.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>Reject non-numeric <code>limit<\/code> query parameters on proposal and sensitive read-request list routes with the standard WordPress REST 400 error envelope instead of silently coercing them to <code>1<\/code>.<\/li>\n<li>Unify consumer-facing REST error details and complete <code>\/help<\/code> and connection-manifest discovery for the shipped route surface, including actionable administrator-session and malformed-id responses.<\/li>\n<li>Synchronize consumer documentation with the 26 explicit post-Core execution profiles and add a route-drift release gate.<\/li>\n<li>Surface missing dependencies, contract mismatches, and recent client errors in the Adapter admin page; clean up tracked fallback Application Password credentials on revocation and uninstall.<\/li>\n<li>Mark the 0.4.0 administrator-session restriction for unified <code>approve-and-execute<\/code> as a breaking change for signed clients.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Verification integrity with Governance Core 0.3.0 (ADR-012\/ADR-013): executions request execution-attached verification reads at commit preflight and present them on action results; after execution, block readbacks that could not be verified get a Core-recorded, result-bound second chance (provisional-record supplement), so objects created inside the same batch verify through Core-minted evidence instead of degrading. The recorded readback metadata always reflects the latest attempt, and the supplement re-runs log through the same request context as the first pass. Verification-read features require Governance Core 0.3.0 or newer.<\/li>\n<li>Adopt the Governance Core 0.2.x\/0.3.0 REST contract changes: recoverable preflight handoffs (409 envelope with correlation id and expiry), <code>app_auth_expired<\/code> hints, the 429 retry relay honoring delay-seconds <code>Retry-After<\/code>, <code>contract:read<\/code> fallback, and audit offset passthrough.<\/li>\n<li>Administrator review hardening from the 2026-10 AI review backlog: server-side <code>ability_id<\/code> enforcement on governed routes, hardened governed-write locks and handoff consumption, structured CLI schema enforcement with redaction, and admin-surface fixes.<\/li>\n<li>Complete the zh_CN catalog (0 fuzzy, 0 untranslated) and gate translation coverage at release.<\/li>\n<li>Split the controller into behavior-preserving domain services (signing auth, execution records, upstream dispatch, dependency status, preflight handoffs, read governance, proposal review, contract metadata) and promote static analysis (PHPStan, PHPCS) plus the delivered-review triage gate to required CI.<\/li>\n<li>Return structured, actionable authentication errors for signed requests: credential completeness, clock skew, and body-hash mismatches now carry distinct stable codes with <code>reason<\/code> and <code>next_step<\/code> data instead of a generic <code>rest_forbidden<\/code>; key-record and signature failures share one pre-verification code so key liveness is never observable without the private key; scope and nonce-replay causes are reported only after the signature verifies. Requests without credentials receive <code>npcink_openclaw_adapter_authentication_required<\/code> pointing at the device-pairing entry, and logged-in non-administrator accounts receive <code>npcink_openclaw_adapter_privilege_required<\/code>.<\/li>\n<li>Pairing rate-limit responses now set the standard <code>Retry-After<\/code> response header alongside the existing error data.<\/li>\n<li>Remove stale <code>GET \/terms<\/code>\/<code>GET \/term<\/code> purpose strings from <code>\/help<\/code> route discovery.<\/li>\n<li>Companion CLI 0.6.0: failed Adapter responses now print the full error envelope including <code>data.operator_feedback<\/code>, <code>next_step<\/code>, and <code>retry_after<\/code> (redacted); the bounded AI image ratio crop recipe helper now mirrors the reviewed recipe contract locally because Adapter <code>\/help<\/code> no longer carries recipe playbooks.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Restrict the unified approve-and-execute action to WordPress administrator sessions. Signed AI clients now wait for human approval in the Npcink Governance Core admin and then call the execute route; signed attempts on the unified route fail closed with <code>npcink_openclaw_adapter_approve_requires_admin_session<\/code>.<\/li>\n<li>Add <code>client_policy.boundary_enforcement<\/code> (client policy version 2) so clients can distinguish enforced key-pair connections from conventional WordPress-native credentials.<\/li>\n<li>Add the connection readiness checklist and CLI boundary status reporting.<\/li>\n<li>Document the governed MCP tool surface of the companion CLI (<code>@npcink\/openclaw-adapter-cli<\/code> 0.5.0): read, propose, preflight, and execute-after-human-approval tools only, with no self-approval tool.<\/li>\n<\/ul>\n\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>Harden release packaging, uninstall cleanup, and batch execution contract checks.<\/li>\n<li>Preserve actionable, redacted CLI output when the signed local acceptance fixture fails.<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Close the release-candidate boundary by keeping media derivative transport outside Adapter and retaining only reviewed adoption handoff.<\/li>\n<li>Require explicit signed-client execute scope for final Adapter write routes.<\/li>\n<li>Restore Core capability forwarding and default execution response compatibility for consumer smoke coverage.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Bind Adapter final execution to Core approval and commit-preflight execution handoffs.<\/li>\n<li>Forward signed local client fingerprints to trusted Core app-token requests and fail closed on mismatched Core contexts.<\/li>\n<li>Validate Core dependency contract semantics for site and signed-client bindings before reporting dependency readiness.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Add Adapter-declared Core and Abilities Toolkit compatibility floors to the machine-readable contract metadata.<\/li>\n<li>Record a signed local AI client create-draft proposal, approve-and-execute, readback, and cleanup acceptance pass.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Add contract snapshot smoke coverage across health, help, and connection manifest responses.<\/li>\n<li>Reject batch write actions that request <code>core_proxy_execute=true<\/code> before Adapter execution.<\/li>\n<li>Expand negative smoke coverage for <code>core_proxy_execute<\/code> and <code>commit_execution<\/code> batch fail-closed behavior.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Add machine-readable Adapter contract metadata and stable contract hashes on health, help, and manifest responses.<\/li>\n<li>Add the local AI client acceptance command for non-destructive Adapter\/Core boundary checks.<\/li>\n<li>Align block theme visual acceptance, batch review feedback, and release package smoke documentation with the governed execution profile boundary.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Add local AI client CLI helper commands, output redaction, and machine-readable client policy.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial thin AI client adapter for Npcink Governance Core and WordPress Abilities API routing.<\/li>\n<\/ul>","raw_excerpt":"Connect local AI clients such as OpenClaw to governed WordPress abilities through a thin REST adapter.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/325042","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=325042"}],"author":[{"embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/muze233"}],"wp:attachment":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=325042"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=325042"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=325042"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=325042"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=325042"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=325042"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}