API Reference

The WPMaven connector

Every business WPMaven runs is agent-callable. Your own AI, such as Claude or ChatGPT, or any client that speaks the Model Context Protocol (MCP), connects to your WPMaven account through our official connector and works on your site: it reads it, writes posts and pages, and publishes them.

Endpoint POST https://api.wpmaven.ai/mcp JSON-RPC 2.0 over HTTP, with a connector token from your dashboard as a bearer token.

Quick start

1

Create a token

In your WPMaven dashboard, open Settings, then Connect your AI. Name a token, for example "Claude on my laptop", and press Create token. Copy it right away: it is shown once.

2

Add the connector

In your AI client, add a remote MCP server at the endpoint above, and use your token as the credential.

3

Ask for it

Ask in your own words, for example "publish a post on my site about this week's opening hours". A draft is free; a publish uses one action from your plan.

Connect claude.ai

  1. In claude.ai, open Settings, then Connectors, and choose Add custom connector.
  2. Paste the endpoint, https://api.wpmaven.ai/mcp, and use a connector token as the credential.
  3. The WPMaven tools appear among Claude's tools. Ask Claude something like "publish a post on my site about this week's opening hours". That is it.

ChatGPT and other clients

ChatGPT: developer-mode connectors work the same way: add the same endpoint and token there. ChatGPT asks you to confirm each write by hand before it goes through.

Any other MCP client connects the same way: point it at the endpoint and send your token in the Authorization header, as Bearer wpm_mcp_.... Two things never change, whichever client you use: your AI can only touch your own sites, and a failed call never uses an action.

Tokens

  • You create, see and revoke tokens in your dashboard, under Settings, Connect your AI. Each one has a name and shows when it was created and last used.
  • A token starts with wpm_mcp_ and is shown once, when you create it. We keep only a fingerprint of it, so nobody can show it to you again: if you lose it, revoke it and create another.
  • A token works on the sites of the account that created it, and on nothing else. Your AI signs in with the token instead of your account.
  • Create one token per assistant, so you can revoke each one on its own. Revoking takes effect at once, and every token ends with the account.
  • Only the account owner creates tokens.

Tools

Six tools, listed by tools/list. Reading is free. Writing a draft is free. Publishing uses one action.

ToolWhat it doesArgumentsCost
get_site_infoThe site's name, address, plan and description. Call it first, to see which site the token works on.site (optional)Free
get_action_statusThis month's actions: included, used, packs in reserve, what remains and when the allowance resets, with the month's pages or articles.noneFree
list_recent_postsThe latest posts on the site: id, title, status and address.limit (1 to 50, 10 if not given), siteFree
create_postWrites a blog post, as a draft or published.title, content (HTML or block markup), status (draft or publish), excerpt (optional), siteDraft: free. Publish: 1 action
create_pageWrites a page, as a draft or published.title, content, status (draft or publish), siteDraft: free. Publish: 1 action
publish_postTakes a draft post or page live.postId (the WordPress id), site1 action, nothing if it is already live

More than one business? Pass site with the site's address or its WPMaven id. Without it, an account with several sites gets the list of its sites to choose from. Only businesses that are running can be reached.

Every answer carries a sentence your AI can read back to you, in content, and the same facts as data in structuredContent: for a publish, the id, the address, the status and whether it used an action.

Actions and approvals

  • Your token is your yes. What your AI publishes through it goes live at once: it does not wait under Waiting for you, the way your operators' work does. Ask it to publish only what you want live, or have it write drafts and publish them yourself.
  • A publish is one action from your monthly allowance, the same as your operators' work, and a published post or page is also one of the month's pages or articles on your plan (see pricing). Drafts are free, and a failed call never uses an action.
  • When the month's actions or pages are used up, the call still succeeds: its answer says nothing went live, when the allowance resets, and how to keep going (an action pack or a bigger plan, under Billing). Your AI can keep writing drafts in the meantime.
  • During your $1 first week, a page or article your AI publishes is saved as a draft and goes live on day 8, when your plan starts, if you continue. The answer says so, with the date.
  • If a payment did not go through, the plan's included actions pause until the card is updated under Billing. Actions from packs can still be used.

Endpoint and protocol

  • POST https://api.wpmaven.ai/mcp, with Content-Type: application/json and Authorization: Bearer wpm_mcp_....
  • JSON-RPC 2.0 over MCP's Streamable HTTP transport, without state: one request or notification per POST, and every answer is a single JSON object. There are no sessions, no event streams and no batches.
  • Protocol revisions: 2026-07-28 (the current one), 2025-11-25, 2025-06-18 and 2025-03-26. Send the MCP-Protocol-Version header; a request without it is read as 2025-03-26.
  • Clients on 2025-11-25 or earlier open with initialize, which is answered without creating a session; an Mcp-Session-Id header is ignored. A notification (a message with no id) gets 202 and no body.
  • On 2026-07-28, every request carries io.modelcontextprotocol/protocolVersion and io.modelcontextprotocol/clientCapabilities in params._meta, and the Mcp-Method header (with Mcp-Name on tools/call) matches the body.
  • Methods: initialize, ping, tools/list and tools/call. A GET or DELETE on the endpoint gets 405 with a short hint, and a request from a web page on another site is refused.

Limits

  • 60 requests a minute for each token. Past that, the answer is 429 with a Retry-After header in seconds.
  • One message per request.
  • list_recent_posts returns 50 posts at most.

Errors

A problem with the request itself is a JSON-RPC error. A problem with the work, such as a site that cannot be reached, is a normal answer with isError: true and a sentence that says what happened, so your AI can tell you or try again. An allowance that is used up is not an error at all (see above).

CodeHTTPWhat it means
-31001401No token, or one that is unknown or revoked. The answer carries a WWW-Authenticate header.
-31002429More than 60 requests in a minute for this token. Wait for Retry-After.
-32700400The body is not valid JSON.
-32600400, 403 or 415Not a single JSON-RPC 2.0 message, an id that is null, a request from a web page on another site (403), or a body that is not JSON (415).
-32601404 on 2026-07-28, else 200A method the endpoint does not have.
-32602400 on 2026-07-28, else 200A tool that does not exist, or the _meta fields missing on 2026-07-28.
-32020400A header that does not match the body (MCP-Protocol-Version, Mcp-Method or Mcp-Name).
-32022400A protocol revision the endpoint does not speak. The error lists the ones it does.
-32603500Something failed on our side. Try again shortly.

Examples

With your token in WPMAVEN_TOKEN. These use revision 2025-06-18, which needs no _meta fields.

List the tools

curl -s https://api.wpmaven.ai/mcp \
  -H "Authorization: Bearer $WPMAVEN_TOKEN" \
  -H "Content-Type: application/json" \
  -H "MCP-Protocol-Version: 2025-06-18" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Write a draft post (free)

curl -s https://api.wpmaven.ai/mcp \
  -H "Authorization: Bearer $WPMAVEN_TOKEN" \
  -H "Content-Type: application/json" \
  -H "MCP-Protocol-Version: 2025-06-18" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"create_post","arguments":{"title":"Opening hours this week","content":"<p>We open at 9 every day this week.</p>","status":"draft"}}}'

The answer looks like this:

{"jsonrpc":"2.0","id":2,"result":{"resultType":"complete",
 "content":[{"type":"text","text":"Created the draft post \"Opening hours this week\" (id 42). Drafts are free; use publish_post to take it live (1 action)."}],
 "structuredContent":{"id":42,"url":null,"status":"draft","metered":false},
 "_meta":{"io.modelcontextprotocol/serverInfo":{"name":"wpmaven","version":"1.0.0"}}}}

The same kind of call on revision 2026-07-28

curl -s https://api.wpmaven.ai/mcp \
  -H "Authorization: Bearer $WPMAVEN_TOKEN" \
  -H "Content-Type: application/json" \
  -H "MCP-Protocol-Version: 2026-07-28" \
  -H "Mcp-Method: tools/call" \
  -H "Mcp-Name: get_action_status" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_action_status","arguments":{},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}'

What the connector does not do

  • It works on your site's content: posts and pages. It does not post to your social channels; your operators do that, with your yes.
  • It does not change your site's settings, plugins or theme, and it does not change your plan or your billing.
  • It reaches only the sites of the account that created the token.

Building on it

Technology partners connect their own product to WPMaven through this connector, with a technical contact on our side during the integration. See the partner program, or write to us about what you are building.