The MemberPress AI Foundation MCP server exposes a catalog of tools that an AI client calls to read and manage MemberPress data. Each tool declares a name, a JSON input schema, and annotations that classify it as read-only, a write, or destructive.
This reference lists every tool, grouped by domain, with its purpose, key parameters, required scope, and required WordPress capability. It is the companion to the Agent Safety Measures Reference, which explains how scopes, capabilities, and the confirmation flow are enforced.
How the Tool List Works
A client retrieves the catalog by calling the tools/list method against the MCP endpoint. Two factors determine which tools appear in the response:
- Connection access level (scope filtering). The server returns only the tools the connection's scope permits. A read-only connection (including any Application Password connection) sees only read tools. A connection with write scopes additionally sees the write and destructive tools its scopes cover. A tool is also hidden when the token owner lacks its required WordPress capability —
memberpress_delete_memberdoes not appear for a user withoutdelete_users. - Active add-ons (add-on gating). Tools belonging to an add-on register only while that add-on is active. A site without MemberPress Courses, for example, does not expose the course tools.
Because of these two factors, the number of tools a site exposes varies. The catalog builds up by add-on:
| Inscripción | Authenticated tools | Public tools |
|---|---|---|
| Core (no add-ons) | 41 | 2 |
| + MemberPress Courses | +8 | +2 |
| + Corporate Accounts | +3 | — |
| + Downloads | +2 | — |
| Everything active | 54 (39 read, 9 non-destructive write, 6 destructive) | 4 |
Tool Classifications
Every tool carries annotations that classify it:
| Classification | Annotation | Comportamiento |
|---|---|---|
| Leer | readOnlyHint: true | Retrieves data. Never changes state. Available to every connection. |
| Non-destructive write | readOnlyHint: false, destructiveHint: false | Creates or updates. Defaults to a preview; pass execute: true to run live. |
| Destructive | readOnlyHint: false, destructiveHint: true | Deletes, refunds, cancels, or resets. Requires the two-step confirmation-token flow. |
The write and destructive execution mechanics are documented in the Agent Safety Measures Reference. This reference focuses on what each tool is and what it accepts.
Tool Response Format
A client runs a tool with the tools/call method. The result returns in the standard MCP envelope: a result.content array whose first element is a text block. That block's texto field holds the tool's data as a JSON string the client must parse. This differs from the tools/list shape, which returns tool definitions directly.
The envelope from a memberpress_list_members call:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{ "type": "text", "text": "{ ...escaped JSON string... }" }
]
}
}
Parsing the texto string yields the payload — a miembros array with sibling pagination fields:
{
"members": [
{
"id": 50,
"email": "member@example.com",
"username": "member50",
"first_name": "Example",
"last_name": "Member",
"registered_at": "2023-08-21 17:18:31",
"active_memberships": [ { "id": 2332, "title": "Basic Membership" } ]
}
],
"total": 8,
"page": 1,
"per_page": 3,
"pages": 3
}
Pagination fields (total, página, por_página, páginas) sit beside the data array, not inside a wrapper object.
Read Tools
Read tools retrieve data and never change state. They are available on every connection, including read-only Application Password connections. All read tools carry readOnlyHint: true, destructiveHint: false, idempotentHint: true, and require only the leer scope (always granted).
Parameters shown as obligatorio must be supplied. List tools share a common pagination pattern: página (default 1) and por_página (default 20, max 100).
Miembros
| Herramienta | Purpose | Key parameters |
|---|---|---|
memberpress_get_member | Full details for one member, including active subscriptions and accessible memberships. | identifier (member ID or email); include_transactions (bool, default false) |
memberpress_list_members | List members with filtering. Paginated. | busque en, estado (active/inactive/all), membership_id, página, por_página |
memberpress_export_members | Export members as a paginated JSON array. | membership_id, estado, date_from, date_to, página, por_página (default 50) |
Afiliaciones
| Herramienta | Purpose | Key parameters |
|---|---|---|
memberpress_get_membership | Full details for a membership/product: pricing, trial, group, access rules, member count. | membership_id |
memberpress_list_memberships | List memberships/products with status filter. Paginated. | estado (publish/draft/all), página, por_página |
memberpress_get_membership_stats | Statistics across all memberships: active subscribers, total revenue, average revenue per member. | (none) |
Suscripciones
| Herramienta | Purpose | Key parameters |
|---|---|---|
memberpress_get_subscription | Full subscription details: user, product, trial status, transaction history. | subscription_id |
memberpress_list_subscriptions | List subscriptions with filtering. Paginated. | member_id, membership_id, estado (pending/active/suspended/cancelled/all), date_from, date_to, página, por_página |
Transacciones
| Herramienta | Purpose | Key parameters |
|---|---|---|
memberpress_get_transaction | Full transaction details: user, product, subscription, financial data. | transaction_id |
memberpress_list_transactions | List transactions with filtering. Paginated. | member_id, membership_id, subscription_id, estado (pending/complete/failed/refunded/all), date_from, date_to, página, por_página |
Rules and Access
| Herramienta | Purpose | Key parameters |
|---|---|---|
memberpress_list_rules | List access rules with filtering. Paginated. | membership_id, tipo_regla, página, por_página |
memberpress_get_protected_content | All protected-content rules and whether a member has access to each. | member_id |
memberpress_list_protected_urls | List content-protection rules with protected content and required memberships. Paginated. | página, por_página |
memberpress_check_access | Whether a user has access to a specific post/page. | usuario_id, post_id |
Cupones
| Herramienta | Purpose | Key parameters |
|---|---|---|
memberpress_list_coupons | List coupons with status filter, discount details, usage stats. Paginated. | estado (active/expired/all), página, por_página |
Reports and Analytics
| Herramienta | Purpose | Key parameters |
|---|---|---|
memberpress_get_revenue_report | Revenue for a date range, broken down by period. | date_from, date_to, periodo (daily/weekly/monthly/yearly), membership_id |
memberpress_get_churn_report | Cancelled/suspended/new subscriptions and churn rate for a date range. | date_from, date_to, membership_id |
memberpress_revenue_analysis | Transaction totals, revenue by product, monthly trends. | date_from, date_to, membership_ids (array) |
memberpress_churn_prediction | Subscription status counts, cancellation rates, average time before cancel, churn by product. | membership_id |
memberpress_cohort_analysis | Signups grouped by month with retention, cancellations, revenue per cohort. | date_from, date_to |
memberpress_ltv_analysis | Per-subscription revenue and duration grouped by product, for LTV estimation. | membership_id |
memberpress_member_engagement | Transaction frequency, subscription status distribution, activity patterns. | membership_id, días (max 365, default 90) |
memberpress_renewal_forecast | Upcoming expirations in 30-day buckets with historical renewal rates. | membership_id |
memberpress_failed_payment_analysis | Failed and refunded transactions by product, month, gateway, vs. successful volume. | date_from, date_to |
memberpress_content_performance | Protected-content counts, member-to-content ratios, churn per membership. | date_from, date_to |
memberpress_smart_query | Site context data for answering a natural-language question about membership data. | question |
En date_from / date_to are omitted, analytics tools fall back to a default date range rather than requiring explicit dates.
Sistema
| Herramienta | Purpose | Key parameters |
|---|---|---|
memberpress_get_system_info | Diagnostics: PHP/WordPress/MemberPress versions, active add-ons, payment gateway names, database table status, counts. | (none) |
memberpress_list_webhooks | List configured webhooks with URLs, events, enabled status. | (none) |
memberpress_list_reminders | List configured email reminders with trigger events, timing, status, memberships. | (none) |
Courses (requires MemberPress Courses)
| Herramienta | Purpose | Key parameters |
|---|---|---|
memberpress_get_course | Course details: sections, lessons, memberships, completion rate. | course_id |
memberpress_list_courses | List courses with filtering. Paginated. | busque en, estado (publish/draft/all), página, por_página |
memberpress_get_lesson | Lesson details: section, parent course, availability. | lesson_id |
memberpress_list_lessons | List lessons filtered by course or section. Paginated. | course_id, section_id, página, por_página |
memberpress_get_student_progress | A student's per-lesson progress on a course. | usuario_id, course_id |
memberpress_list_course_students | Students enrolled in a course with completion status. Paginated. | course_id, página, por_página |
Corporate Accounts (requires MemberPress Corporate Accounts)
| Herramienta | Purpose | Key parameters |
|---|---|---|
memberpress_get_corporate_account | Corporate account by owner user ID: sub-account usage and list. | usuario_id |
memberpress_list_sub_accounts | Sub-accounts for a corporate account. Paginated. | corporate_account_id, página, por_página |
Downloads (requires MemberPress Downloads)
| Herramienta | Purpose | Key parameters |
|---|---|---|
memberpress_list_downloads | List downloadable files with filtering: title, filename, download count, memberships. Paginated. | membership_id, página, por_página |
memberpress_get_download_stats | Stats for one download: count, file info, memberships, file size. | file_id |
Write Tools (Non-Destructive)
Non-destructive write tools create or update data. Each defaults to a preview: calling it returns what *would* happen without changing anything. To run live, pass execute: true. Each requires a specific write scope and a WordPress capability. The scope gate runs first and rejects with SCOPE_INSUFFICIENT; the capability gate then rejects with CAPABILITY_INSUFFICIENT.
These tools are not available on read-only connections (including Application Password connections). A connection must be issued the relevant write scope through the wizard at a Full Access ceiling.
Some parameters are documented from the inventory below; full input schemas for every write tool still require a Full Access live capture or a per-tool preview (the read-only capture connection could not enumerate write-tool schemas).
| Herramienta | Purpose | Alcance | Capacidad |
|---|---|---|---|
memberpress_create_member | Create a member. | write:members | create_users |
memberpress_update_member | Update a member. Only the fields the caller sends change; omitted fields are left untouched. | write:members | edit_users |
memberpress_create_coupon | Create a coupon. | write:content | manage_options |
memberpress_create_subscription | Enroll an existing member in a membership. | write:members | edit_users |
memberpress_create_rule | Create an access rule. | write:content | manage_options |
memberpress_create_webhook | Create a webhook. | write:webhooks | manage_options |
memberpress_import_members | Bulk-import members. | write:imports | create_users |
memberpress_complete_lesson | Mark a lesson complete for a student. | write:courses | edit_users |
memberpress_toggle_reminder | Enable/disable an email reminder. | write:webhooks | manage_options |
Destructive Tools
Destructive tools delete, refund, cancel, or reset data. They carry destructiveHint: true y no puede be executed with a simple parameter. Each requires the two-step confirmation-token flow: the first call returns a preview plus a single-use confirmation_token; a second call passing confirm: "<token>" with identical arguments runs the operation live. Tokens expire after 60 seconds, are single-use, and are bound to the exact tool, arguments, and user.
Reversible actions are exempt from the confirmation gate. Two action values undo rather than destroy, and execute without a token: memberpress_manage_subscription con action: "resume"y memberpress_manage_sub_account con action: "add". Every other action on these tools — and every call to the other four destructive tools — requires the token flow.
Destructive tools are also subject to the kill switch: when destructive writes are paused, every destructive tool is refused with WRITES_PAUSED, regardless of scope or a valid token. See the Agent Safety Measures Reference.
Documented parameters appear in the next section; full input schemas still require a Full Access live capture or a per-tool preview.
| Herramienta | Purpose | Alcance | Capacidad |
|---|---|---|---|
memberpress_delete_member | Delete a member (calls wp_delete_user; MemberPress cascade-cleans rows, transactions, subscriptions, events). Refuses to delete the calling user or any user with administrator capabilities. | write:members | delete_users — declared as an explicit tool-level gate; the tool is hidden from tools/list for users without it |
memberpress_delete_webhook | Delete a webhook. | write:webhooks | manage_options |
memberpress_manage_subscription | Cancel/suspend/resume a subscription. | write:billing | manage_options |
memberpress_refund_transaction | Refund a transaction. | write:billing | manage_options |
memberpress_manage_sub_account | Manage a corporate sub-account. | write:members | manage_options |
memberpress_reset_course_progress | Reset a student's course progress. | write:courses | edit_users |
Documented Parameters and Behavior
The following parameter and behavior details are sourced from the codebase inventory and engineering confirmations. They are not a complete schema for every tool; remaining parameters are confirmed by per-tool preview.
memberpress_create_coupon—tipo_descuento∈{percent, dollar},modo_descuento∈{standard, first-payment}(defaultstandard), plusimporte_descuentoand an optionalmembership_idsarray (restricts the coupon to specific products). Legacy values (flat,primero,todos) are hard-rejected. Carriesexecute.memberpress_create_subscription— enrolls an *existing* member in a membership (member + product required); refuses duplicate enrollment; always usesgateway='manual'(admin-granted access, not a billing event); branches on one-time vs. recurring products. Carriesexecute.memberpress_import_members— accepts a top-levelenviar_correo_electrónico_de_bienvenidaboolean (defaultfalso); the WordPress welcome email fires once per newly-created member after provisioning. Existing users matched by email are not recreated. Carriesexecute.memberpress_delete_member—member_id; callswp_delete_user, letting MemberPress'sdeleted_userhook cascade-clean related rows. Confirmation-token flow only.memberpress_manage_subscription— an action selector covering cancel/suspend/resume;curriculum vitaeis a non-destructive variant that skips the destructive gate. Confirmation-token flow for destructive actions.memberpress_manage_sub_account— an action selector;añadais a non-destructive variant that skips the destructive gate.memberpress_refund_transaction—transaction_idrequired; optionalcancel_subscriptionboolean. Response side-effect: when the transaction has an associated subscription ANDcancel_subscriptionwas *not* passed, the response (preview and live) addssubscription_listing_may_show_inactive: truey unsubscription_listing_note. This flag and note concern only how the WP admin Subscriptions list displays status — that column derives from the latest transaction's status, not from the subscription record — and are skipped whencancel_subscription: true. The flag does not describe access behavior: refunding the latest transaction that backs a subscription ends the member's access for that term. This response shape must appear in any refund example. Confirmation-token flow only.
Public Tools
The unauthenticated public endpoint (/wp-json/mp-mcp/v1/public-mcp) exposes a separate, curated set of 4 read-only tools for use without a token. They return only public catalog data — pricing and signup links — and never member, transaction, or admin data. All four are memberpress_-prefixed and carry readOnlyHint: true.
These four names also exist in the authenticated read surface, but the public versions are distinct: simpler schemas, public-specific descriptions, and results limited to items opted into the public catalog.
| Herramienta | Purpose | Key parameters |
|---|---|---|
memberpress_list_memberships | List publicly-available membership plans with pricing and signup URLs. | (none) |
memberpress_get_membership | Details for a public membership plan: pricing, trial info, signup URL. | membership_id |
memberpress_list_courses | List publicly-available courses. | (none) |
memberpress_get_course | Details for a public course: overview and lesson count. | course_id |
The public catalog is curated at two levels: an admin enables it globally (MCP Settings → “Enable public AI catalog endpoint,” default off), and each membership or course can be excluded individually by unchecking “Show in public AI catalog” on its edit screen. A get_membership/get_course call for an item not in the public catalog returns no data.
Add-On Gating
Add-on tools register only while their add-on is active, detected by a probe for the add-on's main class:
| Complemento | Detection class | Herramientas |
|---|---|---|
| Cursos | memberpress\courses\models\Course | course/lesson tools |
| Cuentas de empresa | MPCA_Corporate_Account | corporate tools |
| Descargas | memberpress\downloads\models\File | download tools |
A site that lacks an add-on simply does not expose its tools — calling an unregistered tool returns the standard JSON-RPC unknown-method error.
Scope Reference
The wizard issues connections with one or more scopes. Read is always granted; write scopes are granted only at a Full Access ceiling.
The wizard's Access-step checkboxes map one-to-one to these scopes — each checkbox's value is the internal scope string, stored verbatim on the token:
| Wizard bucket | Scope issued |
|---|---|
| Read everything | leer (always granted) |
| Edit content | write:content |
| Manage members | write:members |
| Billing operations | write:billing |
| Bulk imports | write:imports |
| Manage webhooks | write:webhooks |
| Course progress | write:courses |
There is no separate scope for coupons, reminders, or corporate operations — coupons fold into write:content, email reminders into write:webhooks, and corporate sub-accounts into write:members.
| Alcance | Grants |
|---|---|
leer | All read tools. Always granted. |
write:members | Member create/update/delete tools. |
write:billing | Subscription management and transaction refund tools. |
write:content | Access rule and coupon tools. |
write:webhooks | Webhook create/delete and email reminder tools. |
write:imports | Member import tool. |
write:courses | Course progress tools. Renders in the wizard only when Courses is active. |
full | Legacy meta-scope. Satisfies any write:* request. Preserved for back-compat. |
Capability Reference
Beyond scope, each write tool enforces the WordPress capability of the token's owner. A token with the right scope but an owner lacking the capability is rejected with CAPABILITY_INSUFFICIENT.
| Capacidad | Herramientas |
|---|---|
create_users | create_member, import_members |
edit_users | update_member, create_subscription, complete_lesson, reset_course_progress |
delete_users | delete_member — explicit tool-level gate; hidden from tools/list without it |
manage_options | manage_subscription, refund_transaction, create_rule, create_coupon, create_webhook, delete_webhook, toggle_reminder, manage_sub_account |
Related Documentation
- Guía general y de configuración de MemberPress AI Foundation — what AI Foundation provides and how to install it;
- Conexión de clientes de IA a MemberPress – Referencia para desarrolladores — authentication and per-client setup;
- Medidas de seguridad para los agentes de MemberPress AI Foundation — scopes, the access ceiling, confirmation tokens, and the kill switch;
- Errores y resolución de problemas del MCP MemberPress — error codes including
CAPABILITY_INSUFFICIENTyWRITES_PAUSED.