WordPress plugin intelligence profile

Mokhai – Agent Readiness Kit

Publish a clean Markdown version of every page for AI agents — linked from llms.txt with per-page descriptions — plus schema and a readiness score.

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 7.0
Current version0.8.1
WordPress coverageTested up to WordPress 7.0
Minimum stackWP 6.9 · PHP 7.4
Directory statusactive
Last directory update24 Jul 20263mo ago
Active installationsNewAdoption metric — not a quality score
WordPress.org ratingNo WordPress.org ratings yet
Official packageDirect from WordPress.org

Repository metrics are context, not quality scores. Active installations measure adoption and can strongly reflect a plugin’s age and historical popularity. Ratings, recent updates and “Tested up to” metadata also do not guarantee modern code, error-free operation, security, feature completeness or suitability for a particular site. Why active installs don’t tell the whole story →

WP PlugIndex currently records Mokhai – Agent Readiness Kit version 0.8.1 as active, updated 3mo ago and tested up to WordPress 7.0.

Overview

About this plugin

Mokhai is an open-source WordPress plugin that turns your site into a first-class citizen of the AI-agent web — readable today, actionable next. A single Context Profile (configured once under Tools → Context) is the source of truth for every agent-facing surface — what’s exposed, how it’s served, and how it’s scored.

The core move: Mokhai publishes a Markdown version of every page on your site. When an AI assistant fetches a typical WordPress page it receives 50–100 KB of theme markup — menus, sliders, scripts — with your actual content buried inside. md form and carries a per-page description, so an agent reading your index gets a curated map of your content AND the readable version of each page in one hop.

txt entry — is what the rest of the plugin audits, scores, and advertises.

Mokhai ships seven coherent modules, all driven by one Context Profile:

  • Markdown Views — publishes a clean Markdown version of every public URL, with three URL forms (.md path,?format=md query, Accept: text/markdown content negotiation) and uniform 404 on denial. Per-post cache with content-hash invalidation, Gutenberg sidebar preview, WP-CLI command, REST endpoint for admin tooling.
  • LLMs Index — /llms.txt generator that publishes a discovery surface for AI agents, where every entry links to the page’s Markdown version and carries a description — curated by you or drafted by an optional LLM-powered pass from the post content. Conflict detection against robots.txt, plus an editorial entries admin UI for adding non-WordPress URLs.
  • Context Score — 0–100 readiness audit across seven weighted sub-scores (discoverability, description coverage, schema coverage, exposure safety, integration health, Markdown conversion quality, multi-channel discovery), surfaced in an admin page, Site Health, and wp mokhai context-score recompute. Includes an optional LLM-generated narrative (with a rule-based fallback) explaining the score and the highest-leverage fixes.
  • Schema Coordination — detects whether your SEO plugin already emits JSON-LD; if not, optionally emits a native WebSite + Organization + per-content schema set so the schema sub-score is achievable without a third-party SEO plugin. Defers gracefully when an SEO plugin is already covering the surface.
  • AI Assistant Preview — an admin pane that shows any post exactly as an AI assistant consumes it: raw HTML, the Markdown View, and the live /llms.txt line side by side, plus an on-demand “sample AI summary” so you can sanity-check what an agent would say about the page.
  • Agent Abilities + MCP — exposes core plugin operations (audit run, profile read, exposure toggle, /llms.txt regenerate, Markdown preview) through the WordPress Abilities API, and surfaces them to MCP clients via the WordPress MCP adapter. Every ability is manage_options -gated.
  • Multi-channel discovery — a seventh Context Score sub-score crediting additional agent-discovery surfaces ( ai.txt, /.well-known/ declarations, OpenAPI) beyond /llms.txt, so a site running several discovery channels scores higher than one running only one.

0+, with no paid tier and no hosted backend. Every module is independently toggleable from the Context Profile. No content leaves your server.

txt, the rule-based score, the gap-fill schema) runs fully locally without an AI provider.

Markdown Views

Markdown Views exposes any public URL as a clean Markdown variant. txt) and wants the raw content without HTML chrome, header/footer/sidebar markup, or JavaScript-rendered widgets.

Three URL forms

All three return the same body. Pick whichever matches your client.

  • https://example.com/about-us.md — path-form (requires pretty permalinks; aligned with the llms.txt ecosystem convention)
  • https://example.com/about-us/?format=md — query-form (works regardless of permalink structure)
  • Accept: text/markdown header on the canonical URL — content-negotiation form

The 200 response always carries Content-Type: text/markdown; charset=utf-8, X-Robots-Tag: noindex (so search engines don’t index the raw view as a duplicate of the HTML), and Cache-Control: no-store, must-revalidate.

Exposure rules

A URL returns 404 with no body — never a partial content leak — when any of the following is true:

  • The post’s CPT is not in the Context Profile’s “Exposed CPTs” list
  • The post’s status is not in the “Exposed statuses” list (defaults to publish only)
  • The post is password-protected
  • The mokhai_post_is_noindexed filter returns true (Mokhai auto-detects per-post noindex from Yoast, Rank Math, and AIOSEO and drops the post from agent surfaces; mokhai_post_is_noindexed is the extension point for additional sources)
  • The Markdown Views module is toggled off in the Context Profile

All denial paths produce the same 404 shape — admin debugging via the REST endpoint or the wp mokhai md preview command surfaces the specific reason.

Inspection surfaces

  • Gutenberg sidebar panel — opens automatically in the document settings sidebar when editing a post. Shows the current MD rendering, the visibility verdict, and the cache state (cached vs miss, walker version, generated_at).
  • WP-CLI — wp mokhai md preview <post-id-or-url>. Supports --format=wrapped for YAML-front-matter output suitable for piping into LLM tooling, --show-meta for cache diagnostics on stderr, and --bypass-exposure (requires manage_options) for inspecting hidden posts without serving them.
  • REST endpoint — GET /wp-json/mokhai/v1/markdown-views/preview?post=<id>. Authentication via WP cookie / nonce; permission gated on edit_post for the target post. Used by the Gutenberg sidebar; available to third-party admin tooling.

LLMs Index (/llms.txt)

txt discovery surface for AI agents — the de-facto convention for declaring which URLs on a site are worth fetching as agent context. The generator is driven by the Context Profile: only CPTs and statuses you’ve exposed appear in the index. txt already covers the same paths; an admin notice points to the conflict so coverage isn’t silently inconsistent.

Editorial entries

Most sites have URLs that aren’t WordPress posts but are valuable agent context — pricing pages, brand guidelines, support knowledge bases hosted elsewhere. txt alongside the auto-generated post entries.

LLM-powered descriptions

Optionally, an LLM pass drafts the per-entry descriptions from the post content (uses the WP AI Client provider configured at the site level). The deterministic floor — title-only, no description — runs without an AI provider.

g. ”). txt.

Adjust the threshold with the mokhai_description_min_content_chars filter.

WP-CLI

  • wp mokhai llms-txt status — current generation state, conflict report, entry count
  • wp mokhai llms-txt regen — force regeneration
  • wp mokhai llms-txt preview — output the current /llms.txt content to stdout

Context Score

”. It combines seven weighted sub-scores:

  • Discoverability (weight 10) — /llms.txt cache populated, at least one CPT exposed, entries published, no rewrite conflicts overriding the route
  • Description coverage (weight 15) — share of exposed entries that have a curated description (post excerpt or LLM-generated cache from the descriptions module)
  • Schema coverage (weight 10) — JSON-LD is being emitted, either by a detected SEO plugin (Yoast / Rank Math / AIOSEO / The SEO Framework) or by Mokhai’s native gap-fill emitter when the Context Profile toggle is on
  • Exposure safety (weight 15) — exposed statuses are limited to publish (no risky non-publish exposures) and at least one CPT is configured explicitly rather than implicitly
  • Integration health (weight 15) — LLM features ↔ AI Client posture are consistent (no silent-degrade trap) and no /llms.txt conflicts are unresolved
  • Markdown conversion quality (weight 25) — mean quality score across the Markdown Views cache and the percentage of cached posts above the cleanup threshold
  • Multi-channel discovery (weight 10) — how many of the four plugin-served agent-discovery surfaces are present ( /llms.txt, ai.txt, /.well-known/ai-layer, /.well-known/llms-policy.json ); all four = 100, so a plugin-only site can reach full marks. OpenAPI is detected and credited as a bonus channel for sites exposing an API but does not change the score. Sibling-provider plugins (e.g. AI Layer) are detected and credited via the filterable mokhai_multi_channel_providers registry.

The score is surfaced in three places:

  • Tools → Context → Context Score — the full breakdown with per-sub-score detail
  • Site Health — the headline score and the highest-leverage area to improve
  • WP-CLI — wp mokhai context-score recompute for scripted audits

An LLM-generated narrative (uses the WP AI Client provider) explains the score in plain English and names the highest-leverage fixes. A rule-based narrative ships as a fallback for sites without an AI provider configured.

Schema Coordination

When you have an SEO plugin (Yoast, Rank Math, AIOSEO, The SEO Framework) active and emitting JSON-LD, Mokhai defers schema emission to them entirely — no competing markup, no duplicate type declarations. When no SEO plugin is emitting schema, Mokhai can optionally emit a native WebSite + Organization + per-content schema set so the schema sub-score in Context Score is achievable without a third-party SEO plugin.

The toggle lives in the Context Profile; default is off (gap-fill behaviour kicks in only when explicitly enabled).

AI Assistant Preview

txt line for that entry. A “Sample AI Summary” box generates an on-demand, synchronous summary using the configured WP AI Client provider (no cron, no background queue — it runs and caches in place), so you can sanity-check the agent’s-eye view of a page before publishing. The summary degrades gracefully (a structured hint, never a raw error) when no AI provider is configured.

Agent Abilities (MCP)

9+): audit-run, profile-read, profile-set-exposure, llms-txt-regenerate, and md-view-preview. Each is a thin wrapper over an existing service, gated on manage_options, and exposed via the core wp-abilities/v1 REST surface. public ), making the plugin’s operations callable by agent runtimes — a step from agent- readable toward agent- usable.

The MCP flag is inert when no adapter is present, so the abilities work standalone.

Privacy and Storage

Mokhai stores rendered Markdown in a custom table named {$wpdb->prefix}mokhai_md_cache, with one row per published post that has been requested at least once as Markdown — holding the Markdown body, an integrity hash of the source content, and the timestamp at which it was generated. The cache is invalidated automatically when a post is saved, trashed, or deleted.

Context Score audit results are cached in the mokhai_context_score_cache wp_options entry (the most-recent breakdown only — overwritten on each recompute).

No content leaves your server. The plugin makes no external HTTP calls and ships no third-party analytics. txt, rule-based score narrative, gap-fill schema) all run fully locally without an AI provider.

Both cache tables are dropped on plugin uninstall (not on deactivation — deactivate is reversible, uninstall is the explicit “I’m done” gesture).

Configuration

Under Tools → Context, set:

  • Exposed CPTs — the list of post types to expose to agents. Default: empty (safe-by-default — a fresh install exposes nothing).
  • Exposed statuses — the list of post statuses to expose. Default: publish only.

txt entry descriptions), and the native Schema emission toggle (default off — opt in to satisfy Context Score’s schema sub-score without a third-party SEO plugin). Each toggle gracefully degrades when the WP AI Client is unconfigured.

To turn Markdown Views off without uninstalling:

wp eval "$p = get_option('mokhai_context_profile'); $p['markdown_views_enabled'] = false; update_option('mokhai_context_profile', $p);"

The module respects the toggle without latency — flipping back to true is instant; the cache table is preserved across toggle cycles.

WordPress.org metadata

Plugin tags

Topics listed for this plugin in the WordPress.org directory.

  • llms txt
  • agents
  • ai
  • llms.txt
  • markdown
  • schema
Compatibility & maintenance

Compatibility & maintenance

Tested up to WordPress 7.0

Not yet marked as tested with WordPress 7.1. WordPress.org currently lists Tested up to 7.0.

Current WordPress releaseWordPress 7.1
WordPress.org Tested up to7.0
Minimum requirementsWordPress 6.9 · PHP 7.4
Update activity24 Jul 20263mo ago

“Tested up to” is directory metadata supplied by the plugin author. WP PlugIndex does not turn an older declaration into a claim that the plugin is incompatible.

Changes recorded by WP PlugIndex

Recent tracked changes

No tracked version or compatibility changes have been recorded by WP PlugIndex yet.

Tracking & source

WP PlugIndex tracks public WordPress.org directory metadata and records selected version, compatibility and availability changes as they are detected.

Plugin watchlist

Watch this plugin

Sign in to your WP PlugIndex account or create a free account. Free accounts can watch up to 5 plugins and see what changed.

Watch limit

Watchlist limit reached

You have reached your current active watch limit.