# AI Engine for WordPress

> Free MCP server for WordPress: Claude and ChatGPT connect with OAuth. No account, cap or API key.

- name: com.meowapps/ai-engine
- version: 3.8.8
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 90/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.meowapps%2Fai-engine
- tools: https://api.protogrid.dev/v1/servers/com.meowapps%2Fai-engine/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "ai-engine": {
      "type": "http",
      "url": "https://connect.meowapps.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-18d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 90/100 (strong)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list carries no ttlMs, so clients re-fetch it

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 88 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 30 of 30 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: wp_get_post_types (idempotentHint); wp_get_taxonomies (idempotentHint); wp_update_comment (idempotentHint); …
- pass `tools.token_cost`: about 4,192 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 30, about 4,192 tokens to load them all
- tool set hash: d3308ee81b729310804db6b35c267256
- badge: [![protogrid quality](https://protogrid.dev/badge/com.meowapps/ai-engine.svg)](https://protogrid.dev/servers/com.meowapps/ai-engine)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://connect.meowapps.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (30)

- `wp_add_post_terms`: Attach terms to a post. With append set to true they are added to the existing terms; otherwise they replace all terms of that taxonomy on the post.
- `wp_alter_post`: Find and replace text inside one field of a post (for example its content), without sending the whole content again. Supports regular expressions with regex set to true and modifiers in flags.
- `wp_count_media`: Count the items in the Media Library, optionally within a date range.
- `wp_count_posts`: Count posts by status (published, draft, scheduled, pending, private, trash) for one post type. The default post type is post.
- `wp_count_terms`: Count the terms in a taxonomy.
- `wp_create_comment`: Add a comment to a post. post_id and comment_content are required; author name, email, URL and approval status are optional.
- `wp_create_note`: Add an editor note to a block of a post (WordPress 6.9 or later), as shown in the editor's Notes panel. Locate the block with anchor_text (a short exact snippet of its text) or block_index, or reply to an existing note with parent_id.
- `wp_create_post`: Create a post, page or item of another post type. post_title is required. post_content accepts HTML, blocks or Markdown. The status is draft unless post_status says otherwise, and the type is post unless post_type says otherwise. meta_input sets custom fields.
- `wp_create_term`: Create a term in a taxonomy, such as a new category or tag, with an optional slug, description and parent.
- `wp_delete_post`: Move a post, page or item of another post type to the trash by ID. It can be restored from the trash in WordPress.
- `wp_get_comments`: List comments with their post, author, content, date and approval status. Filter by post_id, status, search text, user_id or author_email. Returns 10 unless limit is set. With type set to "note", it lists the editor notes on posts, where an approval status of 1 means the note thread is resolved.
- `wp_get_media`: List items in the Media Library with their ID, title and URL. Filter by search text, uploader or date range. Returns 10 unless limit is set.
- `wp_get_post`: Get one post or page by ID: title, content, status, dates and permalink. Set content_format to "prose" to return the text without block markup.
- `wp_get_post_meta`: Get the custom fields of a post by ID. Pass key to read a single field; without it, all custom fields are returned.
- `wp_get_posts`: List posts, pages or another post type, newest first. Returns ID, title, status, excerpt and link for each, without the full content. Filter by post_type, post_status, search text, author (user ID or slug) or a date range. Returns 10 items unless limit is set; page with offset or paged.
- `wp_get_post_snapshot`: Get everything about one post by ID: all fields, custom fields, terms, featured image and author. Use include or exclude to limit the sections returned.
- `wp_get_post_terms`: List the terms attached to a post, optionally for one taxonomy only.
- `wp_get_post_types`: List the public post types on the site with their key and label, such as post, page or product.
- `wp_get_site_info`: Get the site's name, tagline, address and time zone.
- `wp_get_taxonomies`: List the taxonomies available for a post type, such as categories and tags.
- `wp_get_terms`: List the terms of a taxonomy (for example every category), optionally filtered by search text or parent term.
- `wp_list_block_patterns`: List the block patterns available on the site (ready-made layouts from WordPress, the theme and plugins), with name, title, categories and description. Filter by search text or category. Set include_content to true to also get each pattern's block markup, which can be placed in a post with Update post or Edit post text.
- `wp_set_featured_image`: Set the featured image of a post to a Media Library item, or remove it when media_id is empty.
- `wp_update_comment`: Update a comment by ID: its content or its approval status (approve, hold or mark as spam).
- `wp_update_media`: Update the title, caption, description or alt text of a Media Library item.
- `wp_update_note`: Edit the text of an editor note, or mark its thread as resolved or reopen it.
- `wp_update_post`: Update an existing post by ID: title, content, excerpt, status, slug, date or custom fields. Pass the fields to change in fields and custom fields in meta_input. Set schedule_for to schedule publication. Passing post_category replaces all of the post's categories.
- `wp_update_term`: Update the name, slug, description or parent of an existing term.
- `wp_upload_media`: Add a file to the Media Library, either from a public URL that WordPress downloads or from base64 content with a filename. Optional title, description and alt text.
- `wp_write_blocks`: Write block editor content to an existing post from a list of block specs. Types and fields: paragraph (content), heading (content, level 1-6), list (items, ordered), quote (content, citation), image (url, alt, caption), buttons (buttons: text, url), group (blocks), columns (columns: arrays of blocks), separator, spacer (height), code (content), html (content). mode is replace (default), append or prepend.
