Manage Memberful members, subscriptions, plans, passes and coupons via the GraphQL API.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
MUTATES Memberful data: change WHEN a subscription expires (extend or shorten access). expiresAt is a Unix timestamp in SECONDS (Int). Memberful GraphQL: subscriptionChangeExpirationTime(id, expiresAt).
The subscription id (required).
New expiration as a Unix timestamp in SECONDS (Int, required).
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
MUTATES Memberful data: change WHEN a subscription expires (extend or shorten access). expiresAt is a Unix timestamp in SECONDS (Int). Memberful GraphQL: subscriptionChangeExpirationTime(id, expiresAt).
| Argument | Type | Description |
|---|---|---|
| id* | string | The subscription id (required). |
| expiresAt* | integer | New expiration as a Unix timestamp in SECONDS (Int, required). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"expiresAt"
],
"properties": {
"id": {
"type": "string",
"description": "The subscription id (required)."
},
"expiresAt": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "New expiration as a Unix timestamp in SECONDS (Int, required)."
}
}
}MUTATES Memberful data: create one or more coupon codes for a discount. Provide the discount id (discountId) and the coupon code strings. Memberful GraphQL: createCoupons(discountId, coupons).
| Argument | Type | Description |
|---|---|---|
| codes* | array | Coupon code strings to create (at least one, required). |
| discountId | string | The discount id to attach the coupons to. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"codes"
],
"properties": {
"codes": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Coupon code strings to create (at least one, required)."
},
"discountId": {
"type": "string",
"description": "The discount id to attach the coupons to."
}
}
}MUTATES Memberful data: create a new member with an email (and optional full name). Memberful GraphQL: memberCreate(email, fullName).
| Argument | Type | Description |
|---|---|---|
| email* | string | The new member's email (required). |
| fullName | string | The new member's full name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"description": "The new member's email (required)."
},
"fullName": {
"type": "string",
"description": "The new member's full name."
}
}
}Fetch one Memberful member by id: profile, Stripe customer id, unrestricted-access flag, total spend, metadata, address, and their subscriptions (each with plan). Memberful GraphQL: member(id).
| Argument | Type | Description |
|---|---|---|
| id* | string | The member id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The member id."
}
}
}Fetch one subscription by id: status, activated/expires/trial timestamps, plan, member, orders, coupon. Memberful GraphQL: subscription(id).
| Argument | Type | Description |
|---|---|---|
| id* | string | The subscription id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The subscription id."
}
}
}MUTATES Memberful data (potentially): escape hatch to run an arbitrary Memberful GraphQL operation — including any mutation — against your account's /api/graphql endpoint with optional variables. Prefer memberful_query for read-only calls.
| Argument | Type | Description |
|---|---|---|
| query* | string | A GraphQL query or mutation document. |
| variables | object | Variables object for the operation. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "A GraphQL query or mutation document."
},
"variables": {
"type": "object",
"description": "Variables object for the operation.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}List members (Relay connection): each edge has a cursor + node (profile, Stripe customer id, unrestricted-access flag, total spend, and their subscriptions). Paginate with `first` + `after` (pass the last edge's `cursor`); `first` defaults to 50. Set `activeOnly` to return only members with an ACTIVE membership state. For member-state filters beyond active, use memberful_query. Memberful GraphQL: members connection.
| Argument | Type | Description |
|---|---|---|
| last | integer | Max members to return, from the end. |
| after | string | Cursor for the next page (the `cursor` of the last edge from a prior call). |
| first | integer | Max members to return, from the start (page size). |
| before | string | Cursor for the previous page. |
| activeOnly | boolean | Only return members with an ACTIVE membership state. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"last": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max members to return, from the end."
},
"after": {
"type": "string",
"description": "Cursor for the next page (the `cursor` of the last edge from a prior call)."
},
"first": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max members to return, from the start (page size)."
},
"before": {
"type": "string",
"description": "Cursor for the previous page."
},
"activeOnly": {
"type": "boolean",
"description": "Only return members with an ACTIVE membership state."
}
}
}List all passes (Memberful dashboard 'Plans' — the access groups a member subscribes to): id, name. Memberful GraphQL: passes.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List all plans (Memberful dashboard 'Prices'): name, interval, price (cents), for-sale flag, plan group. Memberful GraphQL: plans.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List subscriptions (Relay connection): each edge has a cursor + node (status, expires/created timestamps, plan, member). Paginate with `first` + `after` (pass the last edge's `cursor`); `first` defaults to 50. NOTE: this uses the top-level `subscriptions` connection, which is sourced from the community SDK — validate against a live account. Memberful GraphQL: subscriptions connection.
| Argument | Type | Description |
|---|---|---|
| last | integer | Max subscriptions to return, from the end. |
| after | string | Cursor for the next page (the `cursor` of the last edge from a prior call). |
| first | integer | Max subscriptions to return, from the start (page size). |
| before | string | Cursor for the previous page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"last": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max subscriptions to return, from the end."
},
"after": {
"type": "string",
"description": "Cursor for the next page (the `cursor` of the last edge from a prior call)."
},
"first": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max subscriptions to return, from the start (page size)."
},
"before": {
"type": "string",
"description": "Cursor for the previous page."
}
}
}Escape hatch: run an arbitrary Memberful GraphQL QUERY (read-only) against your account's /api/graphql endpoint with optional variables. Mutations are REJECTED — use the dedicated write tools or memberful_graphql for those. Useful for fields not covered by the curated read tools (e.g. member-state filters beyond active).
| Argument | Type | Description |
|---|---|---|
| query* | string | A GraphQL query document (must be a query, not a mutation). |
| variables | object | Variables object for the query. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "A GraphQL query document (must be a query, not a mutation)."
},
"variables": {
"type": "object",
"description": "Variables object for the query.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}MUTATES Memberful data: update a member's metadata (a JSON string; max 50 keys, 40-char keys, 500-char values). Only metadata is supported here; for other inline member fields use memberful_graphql. Memberful GraphQL: memberUpdate(id, metadata).
| Argument | Type | Description |
|---|---|---|
| id* | string | The member id (required). |
| metadata | string | Metadata as a JSON string (max 50 keys, 40-char keys, 500-char values). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The member id (required)."
},
"metadata": {
"type": "string",
"description": "Metadata as a JSON string (max 50 keys, 40-char keys, 500-char values)."
}
}
}