---
title: Agent Skills
description: Install agent skills so your AI agent knows how to use the Memberstack CLI and related tools.
slug: /docs/agent-skills
publishedOn: 2026-02-19T00:00:00.000Z
updatedOn: 2026-02-20T00:00:00.000Z
keywords: memberstack, agent-skills, ai, cli, claude, codex, cursor
---
# Agent Skills
Memberstack CLI [#memberstack-cli]
Add the Memberstack CLI agent skill so your AI agent knows exactly how to use the CLI.
If you have the Memberstack CLI installed, you can add the skill directly:
```bash
memberstack skills add memberstack-cli
```
Or use the skills CLI with your preferred package runner:
npm
pnpm
yarn
bun
```bash
npx skills add Flash-Brew-Digital/memberstack-skills --skill memberstack-cli
```
```bash
pnpm dlx skills add Flash-Brew-Digital/memberstack-skills --skill memberstack-cli
```
```bash
yarn dlx skills add Flash-Brew-Digital/memberstack-skills --skill memberstack-cli
```
```bash
bun x skills add Flash-Brew-Digital/memberstack-skills --skill memberstack-cli
```
Works with OpenAI Codex, Claude Code, Gemini CLI, GitHub Copilot, Cursor, and dozens of other agents that support the open Agent Skills standard.
Other Skills [#other-skills]
Additional skills for the Memberstack ecosystem.
Teach your AI agent the Memberstack Admin REST API so it can help you build integrations, automate workflows, and manage your Memberstack data programmatically.
```bash
memberstack skills add memberstack-admin-api
```
Community Skills [#community-skills]
Agent skills built by the community for the wider ecosystem.
Built by 224 Industries for building with Webflow.
The professional skills kit for Webflow.
FAQ [#faq]
Agent Skills are folders of instructions, scripts, and resources that agents can discover and use to do things more accurately and efficiently.
Skills work with any agent that supports the open Agent Skills standard. This includes OpenAI Codex, Claude Code, Gemini CLI, GitHub Copilot, Cursor, and dozens of others.
By installing these skills, your AI agent will have a deeper understanding of Memberstack and how to use the CLI plus related tools, allowing it to perform tasks more effectively and with greater accuracy.
---
title: Apps
description: Manage Memberstack apps.
slug: /docs/apps
publishedOn: 2026-02-17T00:00:00.000Z
updatedOn: 2026-02-19T00:00:00.000Z
keywords: memberstack, apps, settings, cli, oauth
---
# Apps
```
memberstack apps [options]
```
apps current [#apps-current]
Show the current app.
```bash
memberstack apps current
```
apps create [#apps-create]
Create a new app.
```bash
memberstack apps create [options]
```
Options [#options]
| Option | Description |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
| `--name ` | App name |
| `--stack ` | Tech stack: `REACT`, `WEBFLOW`, `VANILLA`, `WORDPRESS` |
| `--wordpress-page-builder ` | WordPress page builder: `GUTENBERG`, `ELEMENTOR`, `DIVI`, `BEAVER_BUILDER`, `BRICKS`, `CORNERSTONE`, `OTHER` |
| `--template-id ` | Template ID to use |
Example [#example]
```bash
memberstack apps create --name "My App" --stack REACT
```
apps update [#apps-update]
Update the current app.
```bash
memberstack apps update [options]
```
Options [#options-1]
| Option | Description |
| --------------------------------------- | ------------------------------------------------------ |
| `--name ` | App name |
| `--stack ` | Tech stack: `REACT`, `WEBFLOW`, `VANILLA`, `WORDPRESS` |
| `--status ` | App status: `ACTIVE`, `DELETED` |
| `--wordpress-page-builder ` | WordPress page builder |
| `--business-entity-name ` | Business entity name |
| `--terms-of-service-url ` | Terms of service URL |
| `--privacy-policy-url ` | Privacy policy URL |
| `--prevent-disposable-emails` | Prevent disposable emails |
| `--no-prevent-disposable-emails` | Allow disposable emails |
| `--captcha-enabled` | Enable captcha |
| `--no-captcha-enabled` | Disable captcha |
| `--require-user-2fa` | Require user 2FA |
| `--no-require-user-2fa` | Disable required 2FA |
| `--disable-concurrent-logins` | Disable concurrent logins |
| `--no-disable-concurrent-logins` | Allow concurrent logins |
| `--member-session-duration-days ` | Member session duration in days |
| `--allow-member-self-delete` | Allow members to self-delete |
| `--no-allow-member-self-delete` | Prevent member self-deletion |
Example [#example-1]
```bash
memberstack apps update --name "Acme App" --captcha-enabled --require-user-2fa
```
apps delete [#apps-delete]
Delete an app.
```bash
memberstack apps delete --app-id
```
Options [#options-2]
| Option | Description |
| ------------------ | ---------------- |
| `--app-id ` | App ID to delete |
apps restore [#apps-restore]
Restore a deleted app.
```bash
memberstack apps restore --app-id
```
Options [#options-3]
| Option | Description |
| ------------------ | ----------------- |
| `--app-id ` | App ID to restore |
FAQ [#faq]
Yes. You can create, update, delete, and restore apps using the `apps` command. Use `apps current` to see which app you're working with. To switch apps, log out and log back in with a different account.
Deleting an app with `apps delete` removes it from your account. If you need to recover a deleted app, use `apps restore` with the app ID to bring it back.
You can set your app's tech stack to `REACT`, `WEBFLOW`, `VANILLA`, or `WORDPRESS` when creating or updating an app. WordPress apps also support specifying a page builder such as Gutenberg, Elementor, Divi, Beaver Builder, Bricks, or Cornerstone.
---
title: Authentication
description: Manage OAuth authentication with the CLI.
slug: /docs/auth
publishedOn: 2026-02-17T00:00:00.000Z
updatedOn: 2026-02-21T00:00:00.000Z
keywords: memberstack, oauth, authentication, auth, cli
---
# Authentication
```
memberstack auth [options]
```
The CLI supports OAuth authentication with your Memberstack account.
auth login [#auth-login]
Authenticate with Memberstack via the browser-based OAuth flow.
```bash
memberstack auth login
```
Description [#description]
Opens your default browser to the Memberstack authorization page.
Tokens are stored locally at `~/.memberstack/auth.json` with restricted file permissions. The access token is used for authenticated requests directly to the Memberstack API only, your credentials are never sent to third-party services.
Example [#example]
```bash
$ memberstack auth login
Opening browser for authentication...
✔ Authentication successful
```
auth logout [#auth-logout]
Remove stored authentication tokens.
```bash
memberstack auth logout
```
Description [#description-1]
Revokes the current refresh token (best-effort) and deletes the local token file at `~/.memberstack/auth.json`.
Example [#example-1]
```bash
$ memberstack auth logout
✔ Logged out successfully
```
auth status [#auth-status]
Show current authentication status.
```bash
memberstack auth status
```
Description [#description-2]
Displays whether you are currently authenticated, your app ID, token expiration time, refresh token availability, and token validity.
Example [#example-2]
```bash
$ memberstack auth status
Authentication Status
Status: Logged in
App ID: app_abc123
Access Token: Expires in 45 minutes
Refresh Token: Available
Token Valid: Yes
```
auth update-profile [#auth-update-profile]
Update your profile (first name, last name, email).
```bash
memberstack auth update-profile [options]
```
Options [#options]
| Option | Description |
| --------------------- | -------------------- |
| `--first-name ` | Update first name |
| `--last-name ` | Update last name |
| `--email ` | Update email address |
Examples [#examples]
```bash
memberstack auth update-profile --first-name Jane
memberstack auth update-profile --first-name Jane --last-name Doe --email jane@example.com
```
FAQ [#faq]
Run `memberstack auth login`. This opens your browser to authenticate with Memberstack via OAuth. Once approved, tokens are stored locally and you can start running commands.
Tokens are stored locally at `~/.memberstack/auth.json` with restricted file permissions. Your credentials are used only for authenticated requests to the Memberstack API and are never sent to third-party services.
Run `memberstack auth status` to check your token status. If your access token has expired, the CLI will attempt to refresh it automatically using your refresh token. If that fails, run `memberstack auth login` again.
---
title: Command Reference
description: Every Memberstack CLI command at a glance. Quick reference for auth, apps, members, plans, prices, and more.
slug: /docs/commands
publishedOn: 2026-02-19T00:00:00.000Z
updatedOn: 2026-02-22T00:00:00.000Z
keywords: memberstack, cli, commands, reference, api, terminal
---
# Command Reference
```
memberstack [subcommand] [parameters] [options]
```
Global Options [#global-options]
Global options are available to use with multiple Memberstack CLI commands.
| Flag | Alias | Description |
| --------------- | ----- | ------------------------------------------------------ |
| `--mode ` | | Set environment mode (`sandbox` or `live`) |
| `--live` | | Shorthand for `--mode live` |
| `--sandbox` | | Shorthand for `--mode sandbox` |
| `--json` | `-j` | Output raw JSON instead of formatted tables |
| `--quiet` | `-q` | Suppress banner and non-essential output |
| `--no-color` | | Disable color output (respects the NO\_COLOR standard) |
| `--help` | `-h` | Show help for any command |
| `--version` | `-V` | Show the installed CLI version |
Pagination & Bulk Flags [#pagination--bulk-flags]
These flags only apply to specific commands:
| Flag | Applies to | Description |
| ------------------ | --------------- | ------------------------------------------------------- |
| `--after ` | List commands | Pagination cursor for fetching the next page of results |
| `--all` | List commands | Auto-paginate through all results |
| `--dry-run` | Bulk operations | Preview changes without applying them |
[Learn more about global options](/docs/global-options)
Authentication [#authentication]
Manage OAuth login, logout, session status, and profile updates.
| Command | Description |
| --------------------------------- | ---------------------------------------------------- |
| `memberstack auth login` | Open browser-based OAuth flow |
| `memberstack auth logout` | Revoke tokens and delete local credentials |
| `memberstack auth status` | Show current auth state, app ID, and token expiry |
| `memberstack auth update-profile` | Update your profile (name, email) |
| `memberstack whoami` | Display authenticated email, app ID, and environment |
[Learn more about the auth command](/docs/auth)
Apps [#apps]
Manage your Memberstack applications.
| Command | Description |
| -------------------------- | --------------------- |
| `memberstack apps current` | Show the current app |
| `memberstack apps create` | Create a new app |
| `memberstack apps update` | Update app settings |
| `memberstack apps delete` | Delete an app |
| `memberstack apps restore` | Restore a deleted app |
[Learn more about the apps command](/docs/apps)
Plans [#plans]
Manage membership plans.
| Command | Description |
| ------------------------------- | ------------------------------------- |
| `memberstack plans list` | List all plans (filterable by status) |
| `memberstack plans get ` | Get a plan by ID |
| `memberstack plans create` | Create a new plan |
| `memberstack plans update ` | Update a plan |
| `memberstack plans delete ` | Delete a plan |
| `memberstack plans order` | Reorder plans by priority |
[Learn more about the plans command](/docs/plans)
Prices [#prices]
Manage prices for plans.
| Command | Description |
| ----------------------------------------- | ------------------------- |
| `memberstack prices create` | Create a price for a plan |
| `memberstack prices update ` | Update a price |
| `memberstack prices activate ` | Reactivate a price |
| `memberstack prices deactivate ` | Deactivate a price |
| `memberstack prices delete ` | Delete a price |
[Learn more about the prices command](/docs/prices)
Members [#members]
Manage members, including bulk operations and import/export.
| Command | Description |
| -------------------------------------- | ---------------------------------------- |
| `memberstack members list` | List members with pagination and sorting |
| `memberstack members get ` | Get a member by ID or email |
| `memberstack members create` | Create a new member |
| `memberstack members update ` | Update a member |
| `memberstack members delete ` | Delete a member |
| `memberstack members add-plan ` | Add a free plan to a member |
| `memberstack members remove-plan ` | Remove a free plan from a member |
| `memberstack members count` | Show total member count |
| `memberstack members find` | Find members by custom field or plan |
| `memberstack members stats` | Show member statistics |
| `memberstack members export` | Export all members to CSV or JSON |
| `memberstack members import` | Import members from CSV or JSON |
| `memberstack members bulk-update` | Bulk update members from file |
| `memberstack members bulk-add-plan` | Add a plan to multiple members |
| `memberstack members note ` | Update or clear a member's note |
[Learn more about the members command](/docs/members)
Data Tables [#data-tables]
Manage data tables and their schemas.
| Command | Description |
| ----------------------------------- | ---------------------------------- |
| `memberstack tables list` | List all data tables |
| `memberstack tables get ` | Get a table by key or ID |
| `memberstack tables describe ` | Show table schema and access rules |
| `memberstack tables create` | Create a new table |
| `memberstack tables update ` | Update table name or access rules |
| `memberstack tables delete ` | Delete a table |
[Learn more about the tables command](/docs/tables)
Records [#records]
Manage table records, including queries, bulk operations, and import/export.
| Command | Description |
| --------------------------------------- | ------------------------------------ |
| `memberstack records create ` | Create a record |
| `memberstack records update ` | Update a record |
| `memberstack records delete ` | Delete a record |
| `memberstack records query ` | Query records with raw JSON filters |
| `memberstack records count ` | Count records in a table |
| `memberstack records find ` | Filter records with `--where` syntax |
| `memberstack records export ` | Export records to CSV or JSON |
| `memberstack records import ` | Import records from CSV or JSON |
| `memberstack records bulk-update` | Bulk update records from file |
| `memberstack records bulk-delete ` | Bulk delete records matching filters |
[Learn more about the records command](/docs/records)
Custom Fields [#custom-fields]
Manage custom member fields.
| Command | Description |
| --------------------------------------- | ---------------------- |
| `memberstack custom-fields list` | List all custom fields |
| `memberstack custom-fields create` | Create a custom field |
| `memberstack custom-fields update ` | Update a custom field |
| `memberstack custom-fields delete ` | Delete a custom field |
[Learn more about the custom-fields command](/docs/custom-fields)
Permissions [#permissions]
Manage permissions and link them to plans or members.
| Command | Description |
| --------------------------------------- | --------------------------------- |
| `memberstack permissions list` | List all permissions |
| `memberstack permissions create` | Create a permission |
| `memberstack permissions update ` | Update a permission |
| `memberstack permissions delete ` | Delete a permission |
| `memberstack permissions link-plan` | Link permissions to a plan |
| `memberstack permissions unlink-plan` | Unlink a permission from a plan |
| `memberstack permissions link-member` | Link permissions to a member |
| `memberstack permissions unlink-member` | Unlink a permission from a member |
[Learn more about the permissions command](/docs/permissions)
Auth Providers [#auth-providers]
Manage auth providers (e.g. Google, GitHub, Facebook).
| Command | Description |
| ----------------------------------- | ------------------------------ |
| `memberstack providers list` | List configured auth providers |
| `memberstack providers configure` | Configure an auth provider |
| `memberstack providers remove ` | Remove an auth provider |
[Learn more about the providers command](/docs/providers)
SSO [#sso]
Manage SSO apps.
| Command | Description |
| ----------------------------- | ----------------- |
| `memberstack sso list` | List all SSO apps |
| `memberstack sso create` | Create an SSO app |
| `memberstack sso update ` | Update an SSO app |
| `memberstack sso delete ` | Delete an SSO app |
[Learn more about the sso command](/docs/sso)
Users [#users]
Manage users with access to your app.
| Command | Description |
| ---------------------------------------- | ------------------------------------- |
| `memberstack users list` | List all users with access to the app |
| `memberstack users get ` | Get a user by ID or email |
| `memberstack users add` | Add a user to the app |
| `memberstack users remove ` | Remove a user from the app |
| `memberstack users update-role ` | Update a user's role |
[Learn more about the users command](/docs/users)
Skills [#skills]
Manage Memberstack agent skills.
| Command | Description |
| ----------------------------------- | -------------------------------- |
| `memberstack skills add ` | Add a Memberstack agent skill |
| `memberstack skills remove ` | Remove a Memberstack agent skill |
[Learn more about the skills command](/docs/skills)
Utility [#utility]
Standalone commands for CLI maintenance.
| Command | Description |
| -------------------- | ------------------------------------------------ |
| `memberstack update` | Update the CLI to the latest version |
| `memberstack reset` | Delete local data files and clear authentication |
[Learn more about the update command](/docs/update) · [Learn more about the reset command](/docs/reset)
FAQ [#faq]
The CLI supports commands for authentication, app management, members, plans, prices, data tables, records, custom fields, permissions, auth providers, SSO, users, agent skills, and utility commands (update, reset). Each command group includes subcommands for listing, creating, updating, and deleting resources.
Use `--mode live` or the `--live` shorthand with any command. You can also set the `MEMBERSTACK_MODE` environment variable. Without it, all commands run against your sandbox environment. See [Global Options](/docs/global-options) for details.
Yes. Add the `--json` flag to any command to get raw JSON output instead of formatted tables.
---
title: Custom Fields
description: Manage custom fields for your Memberstack members.
slug: /docs/custom-fields
publishedOn: 2026-02-17T00:00:00.000Z
updatedOn: 2026-02-19T00:00:00.000Z
keywords: memberstack, custom-fields, members, data, cli
---
# Custom Fields
```
memberstack custom-fields [options]
```
custom-fields list [#custom-fields-list]
List all custom fields.
```bash
memberstack custom-fields list
```
Example [#example]
```bash
$ memberstack custom-fields list
[
{
"id": "fld_abc123",
"key": "tier",
"label": "Member Tier",
"visibility": "PUBLIC",
"hidden": false
}
]
```
custom-fields create [#custom-fields-create]
Create a new custom field.
```bash
memberstack custom-fields create --key --label [options]
```
Options [#options]
| Option | Description | Required |
| --------------------------- | --------------------------------------- | -------- |
| `--key ` | Field key | Yes |
| `--label ` | Field label | Yes |
| `--hidden` | Hide the field | No |
| `--visibility ` | Field visibility: `PUBLIC` or `PRIVATE` | No |
| `--restrict-to-admin` | Restrict field to admin access | No |
| `--plan-ids ` | Plan IDs to associate with the field | No |
Examples [#examples]
```bash
memberstack custom-fields create --key tier --label "Member Tier"
memberstack custom-fields create \
--key vip \
--label "VIP Status" \
--visibility PRIVATE \
--restrict-to-admin
memberstack custom-fields create --key type --label "Account Type" --hidden
```
custom-fields update [#custom-fields-update]
Update an existing custom field.
```bash
memberstack custom-fields update [options]
```
Arguments [#arguments]
| Argument | Description | Required |
| -------- | --------------- | -------- |
| `id` | Custom field ID | Yes |
Options [#options-1]
| Option | Description | Required |
| --------------------------- | --------------------------------------- | -------- |
| `--label ` | Field label | Yes |
| `--hidden` | Hide the field | No |
| `--no-hidden` | Show the field | No |
| `--table-hidden` | Hide the field from the table | No |
| `--no-table-hidden` | Show the field in the table | No |
| `--visibility ` | Field visibility: `PUBLIC` or `PRIVATE` | No |
| `--restrict-to-admin` | Restrict field to admin access | No |
| `--no-restrict-to-admin` | Remove admin restriction | No |
Examples [#examples-1]
```bash
memberstack custom-fields update fld_abc123 --label "Updated Tier" --hidden
memberstack custom-fields update fld_abc123 \
--label "Member Status" \
--no-hidden \
--visibility PUBLIC
```
custom-fields delete [#custom-fields-delete]
Delete a custom field.
```bash
memberstack custom-fields delete
```
Arguments [#arguments-1]
| Argument | Description | Required |
| -------- | --------------- | -------- |
| `id` | Custom field ID | Yes |
Example [#example-1]
```bash
memberstack custom-fields delete fld_abc123
```
FAQ [#faq]
Public custom fields are visible to members and can be read client-side (browser). Private custom fields are only accessible server-side or through the admin API. Use private visibility for sensitive data like internal notes or feature flags.
Yes. Use the `--restrict-to-admin` flag when creating or updating a custom field. This prevents members from reading or modifying the field value. Remove the restriction with `--no-restrict-to-admin`.
Yes. When creating a custom field, use `--plan-ids` to associate it with one or more plans. This limits the field to members on those plans.
---
title: Global Options
description: Flags available across Memberstack CLI commands, including environment targeting, output formatting, pagination, and bulk operation previews.
slug: /docs/global-options
publishedOn: 2026-02-20T00:00:00.000Z
updatedOn: 2026-02-21T00:00:00.000Z
keywords: memberstack, cli, global options, flags, live, json, pagination, dry-run, quiet, no-color, mode
---
# Global Options
Mode [#mode]
The `--mode` option, or `MEMBERSTACK_MODE` environment variable, can be used to set the environment mode to `sandbox` or `live`. The default mode is `sandbox`.
```bash
memberstack members list --mode live
MEMBERSTACK_MODE=live memberstack members list
```
Live [#live]
The `--live` option is a shorthand for `--mode live`.
```bash
memberstack members list --live
memberstack plans list --live
```
Sandbox [#sandbox]
The `--sandbox` option is a shorthand for `--mode sandbox`.
```bash
MEMBERSTACK_MODE=live memberstack members list --sandbox
```
JSON [#json]
The `--json` option, shorthand `-j`, or `MEMBERSTACK_JSON` environment variable, can be used to output raw JSON instead of formatted tables.
```bash
memberstack members list --json
memberstack members list -j | jq '.data[].email'
```
Quiet [#quiet]
The `--quiet` option, shorthand `-q`, can be used to suppress the banner and non-essential output.
```bash
memberstack members list --quiet
memberstack members count -q
```
No Color [#no-color]
The `--no-color` option, or `NO_COLOR=1` environment variable, can be used to execute commands with no color. This respects the NO\_COLOR standard.
```bash
memberstack members list --no-color
```
Help [#help]
The `--help` option, shorthand `-h`, can be used to display more information about commands.
```bash
memberstack --help
memberstack members --help
memberstack members list -h
```
Version [#version]
The `--version` option, shorthand `-V`, shows the installed CLI version.
```bash
$ memberstack --version
1.1.0
```
After [#after]
The `--after` option can be used to paginate through list results using a cursor. When more results are available, the output includes an `endCursor` value. Pass that value to `--after` to fetch the next page.
```bash
memberstack members list
memberstack members list --after eyJpZCI6Im1lbV8xMjM0NTY3ODkwIn0
```
All [#all]
The `--all` option can be used to auto-paginate through all list results in a single command. Do not combine with `--after`.
```bash
memberstack members list --all
memberstack plans list --all
```
Dry Run [#dry-run]
The `--dry-run` option can be used to preview bulk operations without applying changes. Supported by `bulk-update`, `bulk-add-plan`, and `bulk-delete`.
```bash
memberstack members bulk-update --file updates.csv --dry-run
memberstack members bulk-add-plan --plan pln_abc123 --filter no-plan --dry-run
```
FAQ [#faq]
No. `--mode`, `--live`, `--sandbox`, `--json`, `--quiet`, and `--no-color` work with every command. `--after` and `--all` only apply to list commands, and `--dry-run` only applies to bulk operations. See the [Command Reference](/docs/commands) for details on each command.
No. `--all` auto-paginates from the beginning. Use `--after` only when you want to manually control pagination with a cursor.
No. `--dry-run` simulates the operation and shows what would happen without applying any changes. It is safe to run at any time.
Yes. Set `MEMBERSTACK_MODE` to `sandbox` or `live`. The `--live` and `--sandbox` flags override the environment variable.
---
title: Quick Start
description: Install the Memberstack CLI and start managing your account from the terminal in under a minute.
slug: /docs
publishedOn: 2026-02-17T00:00:00.000Z
updatedOn: 2026-02-19T00:00:00.000Z
keywords: memberstack, cli, quick-start, install, oauth, commands
---
# Quick Start
Introduction [#introduction]
**Memberstack CLI** is an open-source command-line tool for managing your Memberstack account from the terminal.
} title="What is Memberstack CLI" href="/docs/what-is-memberstack-cli">
Learn why the CLI exists, what problems it solves, how it works under the hood, and what you can do with it.
} title="Agent Skills" href="/docs/agent-skills">
Install skills so your AI agent knows how to use every CLI command. Works with Codex, Claude Code, and more.
} title="Command Reference" href="/docs/commands">
Every command at a glance with descriptions and usage patterns, organized by resource type.
} title="Global Options" href="/docs/global-options">
Flags for environment targeting, output formatting, pagination, and bulk previews.
A CLI is lighter, cheaper on tokens, and easier to set up than MCP servers for AI agents. [Learn more](/docs/what-is-memberstack-cli#why-not-mcp).
Installation [#installation]
npm
pnpm
yarn
bun
```bash
npm install -g memberstack-cli
```
```bash
pnpm add -g memberstack-cli
```
```bash
yarn global add memberstack-cli
```
```bash
bun add --global memberstack-cli
```
Authentication [#authentication]
```bash
memberstack auth login
```
This command allows you to login to your Memberstack account through the Memberstack CLI. See the [Authentication](/docs/auth) page for full details.
Try it out [#try-it-out]
```bash
memberstack whoami
memberstack members list --all
memberstack members create --email user@example.com --password secure123
```
FAQ [#faq]
Yes. It works with OpenAI Codex, Claude Code, Gemini CLI, GitHub Copilot, Cursor, and dozens of other agents. Run `memberstack skills add memberstack-cli` to install the agent skill, or see the [Agent Skills](/docs/agent-skills) page for more options.
No. This is an open-source, community project by Ben Sabic from Flash Brew Digital. It is not affiliated with or endorsed by Memberstack.
By default, the CLI runs commands in your sandbox environment (test mode). Use `--mode live` or the `--live` shorthand to target your live environment. See [Global Options](/docs/global-options) for details.
Your authentication tokens are stored locally at `~/.memberstack/auth.json` with restricted file permissions. They are only used for authenticating your CLI commands and are not shared with any third parties.
---
title: Members
description: Manage members in your Memberstack application.
slug: /docs/members
publishedOn: 2026-02-17T00:00:00.000Z
updatedOn: 2026-02-19T00:00:00.000Z
keywords: memberstack, members, plans, import, export, cli
---
# Members
```
memberstack members [options]
```
members list [#members-list]
List members with optional pagination and sorting.
```bash
memberstack members list [options]
```
Options [#options]
| Option | Description | Default |
| ------------------ | --------------------------------------------- | ------- |
| `--after ` | Pagination cursor (from previous `endCursor`) | — |
| `--order ` | Sort order: `ASC` or `DESC` | `ASC` |
| `--limit ` | Maximum members to return (max 200) | `50` |
| `--all` | Auto-paginate and fetch all members | — |
Examples [#examples]
```bash
memberstack members list
memberstack members list --limit 100 --order DESC
memberstack members list --all
```
Results are written to `members.json` in the current directory.
members get [#members-get]
Get a member by ID or email.
```bash
memberstack members get
```
Arguments [#arguments]
| Argument | Description | Required |
| ------------- | -------------------------------------- | -------- |
| `id_or_email` | Member ID (`mem_...`) or email address | Yes |
Examples [#examples-1]
```bash
memberstack members get mem_abc123
memberstack members get user@example.com
```
members create [#members-create]
Create a new member.
```bash
memberstack members create [options]
```
Options [#options-1]
| Option | Description | Required |
| ----------------------------- | --------------------------------- | -------- |
| `--email ` | Member email address | Yes |
| `--password ` | Member password | Yes |
| `--plans ` | Plan ID to connect (repeatable) | No |
| `--custom-fields ` | Custom field value (repeatable) | No |
| `--meta-data ` | Metadata field value (repeatable) | No |
| `--login-redirect ` | Login redirect URL | No |
Examples [#examples-2]
```bash
memberstack members create --email user@example.com --password secure123
memberstack members create \
--email user@example.com \
--password secure123 \
--plans pln_abc123 \
--custom-fields tier=premium \
--meta-data ref=partner
```
members update [#members-update]
Update an existing member.
```bash
memberstack members update [options]
```
Arguments [#arguments-1]
| Argument | Description | Required |
| -------- | --------------------- | -------- |
| `id` | Member ID (`mem_...`) | Yes |
Options [#options-2]
| Option | Description |
| ----------------------------- | --------------------------------- |
| `--email ` | Update email address |
| `--custom-fields ` | Custom field value (repeatable) |
| `--meta-data ` | Metadata field value (repeatable) |
| `--json-data ` | Additional JSON data as a string |
| `--login-redirect ` | Login redirect URL |
Examples [#examples-3]
```bash
memberstack members update mem_abc123 --email newemail@example.com
memberstack members update mem_abc123 --custom-fields tier=gold
```
members delete [#members-delete]
Delete a member.
```bash
memberstack members delete
```
Arguments [#arguments-2]
| Argument | Description | Required |
| -------- | --------------------- | -------- |
| `id` | Member ID (`mem_...`) | Yes |
Examples [#examples-4]
```bash
memberstack members delete mem_abc123
```
members add-plan [#members-add-plan]
Add a free plan to a member.
```bash
memberstack members add-plan --plan-id
```
Arguments [#arguments-3]
| Argument | Description | Required |
| -------- | --------------------- | -------- |
| `id` | Member ID (`mem_...`) | Yes |
Options [#options-3]
| Option | Description | Required |
| -------------------- | -------------------------- | -------- |
| `--plan-id ` | Plan ID to add (`pln_...`) | Yes |
Example [#example]
```bash
memberstack members add-plan mem_abc123 --plan-id pln_xyz789
```
members remove-plan [#members-remove-plan]
Remove a free plan from a member.
```bash
memberstack members remove-plan --plan-id
```
Arguments [#arguments-4]
| Argument | Description | Required |
| -------- | --------------------- | -------- |
| `id` | Member ID (`mem_...`) | Yes |
Options [#options-4]
| Option | Description | Required |
| -------------------- | ----------------------------- | -------- |
| `--plan-id ` | Plan ID to remove (`pln_...`) | Yes |
Example [#example-1]
```bash
memberstack members remove-plan mem_abc123 --plan-id pln_xyz789
```
members count [#members-count]
Show total member count.
```bash
memberstack members count
```
Example [#example-2]
```bash
$ memberstack members count
Total members: 1,234
```
members find [#members-find]
Find members by custom field values or plan.
```bash
memberstack members find [options]
```
Options [#options-5]
| Option | Description |
| --------------------- | ----------------------------------- |
| `--field ` | Filter by custom field (repeatable) |
| `--plan ` | Filter by plan ID |
Examples [#examples-5]
```bash
memberstack members find --plan pln_abc123
memberstack members find --field tier=premium --field status=active
```
members stats [#members-stats]
Show member statistics.
```bash
memberstack members stats
```
Description [#description]
Displays an overview of member activity including total count, active vs inactive members, recent signups, and a breakdown by plan.
Example [#example-3]
```bash
$ memberstack members stats
Member Statistics
Total members: 1,234
Active members: 1,100
Inactive members: 134
Signups (7 days): 42
Signups (30 days): 187
Members by Plan:
Free Plan: 800
Pro Plan: 300
Enterprise: 100
No Plan: 34
```
members export [#members-export]
Export all members to CSV or JSON.
```bash
memberstack members export [options]
```
Options [#options-6]
| Option | Description | Default |
| ------------------- | ------------------------------ | ------------------------------- |
| `--format ` | Output format: `csv` or `json` | `json` |
| `--output ` | Output file path | `members.json` or `members.csv` |
Examples [#examples-6]
```bash
memberstack members export
memberstack members export --format csv --output members-backup.csv
```
Exported CSV files flatten nested fields with `customFields.*` and `metaData.*` prefixes.
members import [#members-import]
Import members from a CSV or JSON file.
```bash
memberstack members import --file
```
Options [#options-7]
| Option | Description | Required |
| --------------- | ----------------------------- | -------- |
| `--file ` | Input file path (CSV or JSON) | Yes |
File Format [#file-format]
**Required fields:** `email`, `password`
**Optional fields:** `plans` (comma-separated plan IDs), `loginRedirect`, `customFields.*`, `metaData.*`
Examples [#examples-7]
```bash
memberstack members import --file members.csv
memberstack members import --file members.json
```
members bulk-update [#members-bulk-update]
Bulk update members from a CSV or JSON file.
```bash
memberstack members bulk-update --file [options]
```
Options [#options-8]
| Option | Description | Required |
| --------------- | ------------------------------------- | -------- |
| `--file ` | Input file with member updates | Yes |
| `--dry-run` | Preview changes without applying them | No |
File Format [#file-format-1]
**Required fields:** `id`
**Optional fields:** `email`, `loginRedirect`, `customFields.*`, `metaData.*`
Examples [#examples-8]
```bash
memberstack members bulk-update --file updates.csv
memberstack members bulk-update --file updates.csv --dry-run
```
members bulk-add-plan [#members-bulk-add-plan]
Add a plan to multiple members at once.
```bash
memberstack members bulk-add-plan --plan --filter [options]
```
Options [#options-9]
| Option | Description | Required |
| ------------------- | --------------------------------- | -------- |
| `--plan ` | Plan ID to add (`pln_...`) | Yes |
| `--filter ` | Member filter: `no-plan` or `all` | Yes |
| `--dry-run` | Preview without applying changes | No |
Examples [#examples-9]
```bash
memberstack members bulk-add-plan --plan pln_abc123 --filter no-plan
memberstack members bulk-add-plan --plan pln_abc123 --filter all --dry-run
```
members note [#members-note]
Update a member's note.
```bash
memberstack members note [options]
```
Arguments [#arguments-5]
| Argument | Description | Required |
| -------- | --------------------- | -------- |
| `id` | Member ID (`mem_...`) | Yes |
Options [#options-10]
| Option | Description |
| --------------- | ---------------------------------- |
| `--text ` | Note text (omit to clear the note) |
Examples [#examples-10]
```bash
memberstack members note mem_abc123 --text "VIP customer, handle with care"
memberstack members note mem_abc123
```
FAQ [#faq]
Run `memberstack members export` to export all members as JSON. Add `--format csv` for CSV output. You can also specify a custom file path with `--output`, otherwise it defaults to members.json or members.csv in the current directory.
Yes. Use `memberstack members bulk-update --file updates.csv` to update members in bulk. Each row must include the member ID. Add `--dry-run` to preview changes before applying them.
Use `memberstack members find --field key=value` to search by custom field. You can combine multiple field filters and also filter by plan ID with `--plan`.
Import files (CSV or JSON) require `email` and `password` fields. Optional fields include `plans` (comma-separated plan IDs), `loginRedirect`, and any custom fields or metadata using the `customFields.*` and `metaData.*` prefixes.
---
title: Permissions
description: Manage permissions and link them to plans or members.
slug: /docs/permissions
publishedOn: 2026-02-22T00:00:00.000Z
updatedOn: 2026-02-22T00:00:00.000Z
keywords: memberstack, permissions, plans, members, cli
---
# Permissions
```
memberstack permissions [options]
```
permissions list [#permissions-list]
List all permissions.
```bash
memberstack permissions list
```
Example [#example]
```bash
$ memberstack permissions list
ID Name Description
perm_abc123 edit-posts Can edit posts
perm_def456 view-dashboard Can view the dashboard
```
permissions create [#permissions-create]
Create a permission.
```bash
memberstack permissions create [options]
```
Options [#options]
| Option | Description | Required |
| ---------------------- | ---------------------- | -------- |
| `--name ` | Permission name | Yes |
| `--description ` | Permission description | No |
Examples [#examples]
```bash
memberstack permissions create --name edit-posts
memberstack permissions create --name view-dashboard --description "Can view the dashboard"
```
permissions update [#permissions-update]
Update a permission.
```bash
memberstack permissions update [options]
```
Arguments [#arguments]
| Argument | Description | Required |
| -------------- | ----------------------- | -------- |
| `permissionId` | Permission ID to update | Yes |
Options [#options-1]
| Option | Description |
| ---------------------- | ---------------------- |
| `--name ` | Permission name |
| `--description ` | Permission description |
Example [#example-1]
```bash
memberstack permissions update perm_abc123 --name edit-all-posts --description "Can edit all posts"
```
permissions delete [#permissions-delete]
Delete a permission.
```bash
memberstack permissions delete
```
Arguments [#arguments-1]
| Argument | Description | Required |
| -------------- | ----------------------- | -------- |
| `permissionId` | Permission ID to delete | Yes |
Example [#example-2]
```bash
memberstack permissions delete perm_abc123
```
permissions link-plan [#permissions-link-plan]
Link permissions to a plan.
```bash
memberstack permissions link-plan [options]
```
Options [#options-2]
| Option | Description | Required |
| ---------------------- | -------------------------- | -------- |
| `--plan-id ` | Plan ID | Yes |
| `--permission-id ` | Permission ID (repeatable) | Yes |
Examples [#examples-1]
```bash
memberstack permissions link-plan --plan-id pln_abc123 --permission-id perm_def456
memberstack permissions link-plan --plan-id pln_abc123 --permission-id perm_def456 --permission-id perm_ghi789
```
permissions unlink-plan [#permissions-unlink-plan]
Unlink a permission from a plan.
```bash
memberstack permissions unlink-plan [options]
```
Options [#options-3]
| Option | Description | Required |
| ---------------------- | ------------- | -------- |
| `--plan-id ` | Plan ID | Yes |
| `--permission-id ` | Permission ID | Yes |
Example [#example-3]
```bash
memberstack permissions unlink-plan --plan-id pln_abc123 --permission-id perm_def456
```
permissions link-member [#permissions-link-member]
Link permissions to a member.
```bash
memberstack permissions link-member [options]
```
Options [#options-4]
| Option | Description | Required |
| ---------------------- | -------------------------- | -------- |
| `--member-id ` | Member ID | Yes |
| `--permission-id ` | Permission ID (repeatable) | Yes |
Examples [#examples-2]
```bash
memberstack permissions link-member --member-id mem_abc123 --permission-id perm_def456
memberstack permissions link-member --member-id mem_abc123 --permission-id perm_def456 --permission-id perm_ghi789
```
permissions unlink-member [#permissions-unlink-member]
Unlink a permission from a member.
```bash
memberstack permissions unlink-member [options]
```
Options [#options-5]
| Option | Description | Required |
| ---------------------- | ------------- | -------- |
| `--member-id ` | Member ID | Yes |
| `--permission-id ` | Permission ID | Yes |
Example [#example-4]
```bash
memberstack permissions unlink-member --member-id mem_abc123 --permission-id perm_def456
```
FAQ [#faq]
Permissions are named access controls you create and then link to plans or individual members. They let you gate content or features based on what a member has access to.
Yes. The `link-plan` and `link-member` commands accept multiple `--permission-id` flags to link several permissions in a single command.
Linking to a plan gives the permission to every member on that plan. Linking to a member gives the permission to that specific member only, regardless of their plan.
---
title: Plans
description: Manage Memberstack plans.
slug: /docs/plans
publishedOn: 2026-02-17T00:00:00.000Z
updatedOn: 2026-02-19T00:00:00.000Z
keywords: memberstack, plans, billing, subscriptions, cli
---
# Plans
```
memberstack plans [options]
```
plans list [#plans-list]
List all plans.
```bash
memberstack plans list [options]
```
Options [#options]
| Option | Description |
| -------------------- | --------------------------------------------- |
| `--status ` | Filter by status: `ALL`, `ACTIVE`, `INACTIVE` |
| `--order-by ` | Order by field: `PRIORITY`, `CREATED_AT` |
plans get [#plans-get]
Get a plan by ID.
```bash
memberstack plans get
```
Arguments [#arguments]
| Argument | Description |
| -------- | ----------- |
| `id` | Plan ID |
plans create [#plans-create]
Create a new plan.
```bash
memberstack plans create [options]
```
Options [#options-1]
| Option | Description |
| ----------------------------------------- | ------------------------------- |
| `--name ` | Plan name |
| `--description ` | Plan description |
| `--icon ` | Plan icon |
| `--is-paid` | Mark plan as paid |
| `--team-accounts-enabled` | Enable team accounts |
| `--team-account-invite-signup-link ` | Team account invite signup link |
| `--team-account-upgrade-link ` | Team account upgrade link |
Example [#example]
```bash
memberstack plans create --name "Pro" --description "Professional tier" --is-paid
```
plans update [#plans-update]
Update a plan.
```bash
memberstack plans update [options]
```
Arguments [#arguments-1]
| Argument | Description |
| -------- | ----------- |
| `id` | Plan ID |
Options [#options-2]
| Option | Description |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--name ` | Plan name |
| `--description ` | Plan description |
| `--icon ` | Plan icon |
| `--status ` | Plan status: `ACTIVE`, `INACTIVE` |
| `--limit-members` | Enable member limit |
| `--no-limit-members` | Disable member limit |
| `--member-limit ` | Maximum number of members |
| `--team-account-upgrade-link ` | Team account upgrade link |
| `--team-account-invite-signup-link ` | Team account invite signup link |
| `--restrict-to-admin` | Restrict plan to admin |
| `--no-restrict-to-admin` | Remove admin restriction |
| `--redirect ` | Set redirect URL (repeatable). Keys: `afterSignup`, `afterLogin`, `afterLogout`, `afterPurchase`, `afterCancel`, `afterReplace`, `verificationRequired` |
| `--permission-id ` | Permission ID (repeatable; replaces all permissions) |
| `--allowed-domain ` | Allowed email domain (repeatable; replaces all domains) |
Example [#example-1]
```bash
memberstack plans update pln_abc123 --status ACTIVE --restrict-to-admin
```
plans delete [#plans-delete]
Delete a plan.
```bash
memberstack plans delete
```
Arguments [#arguments-2]
| Argument | Description |
| -------- | ----------- |
| `id` | Plan ID |
plans order [#plans-order]
Reorder plans by priority.
```bash
memberstack plans order --plan [--plan ...]
```
Options [#options-3]
| Option | Description |
| -------------------------- | ----------------------------------------------------------------- |
| `--plan ` | Plan ID and priority (repeatable), for example `--plan pln_abc:1` |
Example [#example-2]
```bash
memberstack plans order --plan pln_basic:1 --plan pln_pro:2 --plan pln_enterprise:3
```
FAQ [#faq]
Run `memberstack plans create --name "Pro" --is-paid` to create a paid plan. You can also set a description and icon during creation. Pricing and billing details are configured in the Memberstack dashboard.
Yes. Use `memberstack plans order` with `--plan` flags to set priority for each plan. For example, `--plan pln_basic:1 --plan pln_pro:2 --plan pln_enterprise:3` sets the display order.
Use `memberstack plans update` with the `--restrict-to-admin` flag. This prevents members from self-selecting the plan. Remove the restriction with `--no-restrict-to-admin`.
---
title: Prices
description: Manage prices for your Memberstack plans.
slug: /docs/prices
publishedOn: 2026-02-21T00:00:00.000Z
updatedOn: 2026-02-21T00:00:00.000Z
keywords: memberstack, prices, plans, subscription, billing, cli
---
# Prices
```
memberstack prices [options]
```
prices create [#prices-create]
Create a price for a plan.
```bash
memberstack prices create [options]
```
Options [#options]
| Option | Description | Required |
| ---------------------------------- | -------------------------------------------------- | -------- |
| `--plan-id ` | Plan ID to add the price to | Yes |
| `--name ` | Price name | Yes |
| `--amount ` | Price amount | Yes |
| `--type ` | Price type: `SUBSCRIPTION` or `ONETIME` | Yes |
| `--currency ` | Currency code (e.g. `USD`, `EUR`, `GBP`) | No |
| `--interval-type ` | Billing interval: `YEARLY`, `MONTHLY`, or `WEEKLY` | No |
| `--interval-count ` | Number of intervals between billings | No |
| `--setup-fee-amount ` | Setup fee amount | No |
| `--setup-fee-name ` | Setup fee name | No |
| `--setup-fee-enabled` | Enable setup fee | No |
| `--free-trial-enabled` | Enable free trial | No |
| `--free-trial-requires-card` | Require card for free trial | No |
| `--free-trial-days ` | Free trial duration in days | No |
| `--expiration-count ` | Expiration count | No |
| `--expiration-interval ` | Expiration interval: `MONTHS` or `DAYS` | No |
| `--cancel-at-period-end` | Cancel at period end | No |
Examples [#examples]
```bash
memberstack prices create --plan-id pln_abc123 --name "Monthly" --amount 999 --type SUBSCRIPTION --interval-type MONTHLY
memberstack prices create \
--plan-id pln_abc123 \
--name "One-Time Access" \
--amount 4999 \
--type ONETIME
memberstack prices create \
--plan-id pln_abc123 \
--name "Annual Pro" \
--amount 9999 \
--type SUBSCRIPTION \
--interval-type YEARLY \
--free-trial-enabled \
--free-trial-days 14
```
prices update [#prices-update]
Update a price.
```bash
memberstack prices update [options]
```
Arguments [#arguments]
| Argument | Description | Required |
| --------- | ------------------ | -------- |
| `priceId` | Price ID to update | Yes |
Options [#options-1]
| Option | Description |
| ------------------------------------------------------ | -------------------------------------------------- |
| `--name ` | Price name |
| `--amount ` | Price amount |
| `--type ` | Price type: `SUBSCRIPTION` or `ONETIME` |
| `--currency ` | Currency code |
| `--interval-type ` | Billing interval: `YEARLY`, `MONTHLY`, or `WEEKLY` |
| `--interval-count ` | Number of intervals between billings |
| `--setup-fee-amount ` | Setup fee amount |
| `--setup-fee-name ` | Setup fee name |
| `--setup-fee-enabled` / `--no-setup-fee-enabled` | Enable or disable setup fee |
| `--free-trial-enabled` / `--no-free-trial-enabled` | Enable or disable free trial |
| `--free-trial-requires-card` | Require card for free trial |
| `--free-trial-days ` | Free trial duration in days |
| `--expiration-count ` | Expiration count |
| `--expiration-interval ` | Expiration interval: `MONTHS` or `DAYS` |
| `--cancel-at-period-end` / `--no-cancel-at-period-end` | Cancel at period end |
Examples [#examples-1]
```bash
memberstack prices update prc_abc123 --name "Monthly Pro" --amount 1499
memberstack prices update prc_abc123 --free-trial-enabled --free-trial-days 7
memberstack prices update prc_abc123 --no-free-trial-enabled
```
prices activate [#prices-activate]
Reactivate a price.
```bash
memberstack prices activate
```
Arguments [#arguments-1]
| Argument | Description | Required |
| --------- | ---------------------- | -------- |
| `priceId` | Price ID to reactivate | Yes |
Example [#example]
```bash
memberstack prices activate prc_abc123
```
prices deactivate [#prices-deactivate]
Deactivate a price.
```bash
memberstack prices deactivate
```
Arguments [#arguments-2]
| Argument | Description | Required |
| --------- | ---------------------- | -------- |
| `priceId` | Price ID to deactivate | Yes |
Example [#example-1]
```bash
memberstack prices deactivate prc_abc123
```
prices delete [#prices-delete]
Delete a price.
```bash
memberstack prices delete
```
Arguments [#arguments-3]
| Argument | Description | Required |
| --------- | ------------------ | -------- |
| `priceId` | Price ID to delete | Yes |
Example [#example-2]
```bash
memberstack prices delete prc_abc123
```
FAQ [#faq]
You can create `SUBSCRIPTION` or `ONETIME` prices. Subscription prices support interval billing (yearly, monthly, weekly) and free trials.
Use `memberstack prices create` with `--plan-id` to specify which plan the price belongs to, along with `--name`, `--amount`, and `--type`.
Yes. Use `memberstack prices deactivate` to deactivate a price. You can reactivate it later with `memberstack prices activate`.
---
title: Auth Providers
description: Manage auth providers such as Google, Facebook, GitHub, LinkedIn, Spotify, and Dribbble.
slug: /docs/providers
publishedOn: 2026-02-22T00:00:00.000Z
updatedOn: 2026-02-22T00:00:00.000Z
keywords: memberstack, auth, providers, sso, oauth, google, facebook, github, linkedin, spotify, dribbble, cli
---
# Auth Providers
```
memberstack providers [options]
```
providers list [#providers-list]
List configured auth providers.
```bash
memberstack providers list
```
Example [#example]
```bash
$ memberstack providers list
ID Type Name Enabled Client ID
sso_abc123 GOOGLE Google Login true 123456789.apps.googleusercontent.com
sso_def456 GITHUB GitHub Login false
```
providers configure [#providers-configure]
Configure an auth provider. Use this to set up a new provider or update an existing one.
```bash
memberstack providers configure [options]
```
Options [#options]
| Option | Description | Required |
| -------------------------- | -------------------------------------------------------------------------------- | -------- |
| `--type ` | Provider type: `GOOGLE`, `FACEBOOK`, `GITHUB`, `LINKEDIN`, `SPOTIFY`, `DRIBBBLE` | Yes |
| `--name ` | Display name | No |
| `--client-id ` | OAuth client ID | No |
| `--client-secret ` | OAuth client secret | No |
| `--status ` | Provider status: `enabled`, `disabled` | No |
Setting `--status enabled` requires both `--client-id` and `--client-secret` to be provided.
Examples [#examples]
```bash
# Configure a Google provider with credentials and enable it
memberstack providers configure --type GOOGLE --name "Google Login" --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET --status enabled
# Update the display name of an existing provider
memberstack providers configure --type GITHUB --name "Sign in with GitHub"
# Disable a provider without removing it
memberstack providers configure --type FACEBOOK --status disabled
```
providers remove [#providers-remove]
Remove an auth provider by its configuration ID.
```bash
memberstack providers remove
```
Arguments [#arguments]
| Argument | Description | Required |
| -------- | ------------------------- | -------- |
| `id` | Provider configuration ID | Yes |
Example [#example-1]
```bash
memberstack providers remove sso_abc123
```
FAQ [#faq]
The CLI supports Google, Facebook, GitHub, LinkedIn, Spotify, and Dribbble as auth providers.
Use `memberstack providers configure` with `--type`, `--client-id`, `--client-secret`, and `--status enabled`. Both `--client-id` and `--client-secret` are required when enabling a provider.
Use `memberstack providers configure --type GOOGLE --status disabled`. This keeps the configuration but disables the provider.
---
title: Records
description: Manage data table records in your Memberstack application.
slug: /docs/records
publishedOn: 2026-02-17T00:00:00.000Z
updatedOn: 2026-02-19T00:00:00.000Z
keywords: memberstack, records, tables, data, import, export
---
# Records
```
memberstack records [options]
```
records create [#records-create]
Create a new record in a data table.
```bash
memberstack records create --data [options]
```
Arguments [#arguments]
| Argument | Description | Required |
| ----------- | --------------- | -------- |
| `table_key` | Table key or ID | Yes |
Options [#options]
| Option | Description | Required |
| -------------------- | ------------------------------ | -------- |
| `--data ` | Record field data (repeatable) | Yes |
Example [#example]
```bash
memberstack records create products --data name=Widget --data price=29.99
```
records update [#records-update]
Update a record in a data table.
```bash
memberstack records update --data [options]
```
Arguments [#arguments-1]
| Argument | Description | Required |
| ----------- | --------------- | -------- |
| `table_key` | Table key or ID | Yes |
| `record_id` | Record ID | Yes |
Options [#options-1]
| Option | Description | Required |
| -------------------- | ------------------------------ | -------- |
| `--data ` | Record field data (repeatable) | Yes |
Example [#example-1]
```bash
memberstack records update products rec_abc123 --data price=39.99 --data status=active
```
records delete [#records-delete]
Delete a record from a data table.
```bash
memberstack records delete
```
Arguments [#arguments-2]
| Argument | Description | Required |
| ----------- | --------------- | -------- |
| `table_key` | Table key or ID | Yes |
| `record_id` | Record ID | Yes |
Example [#example-2]
```bash
memberstack records delete products rec_abc123
```
records query [#records-query]
Query records using a JSON query body.
```bash
memberstack records query --query
```
Arguments [#arguments-3]
| Argument | Description | Required |
| ----------- | --------------- | -------- |
| `table_key` | Table key or ID | Yes |
Options [#options-2]
| Option | Description | Required |
| ---------------- | --------------------------- | -------- |
| `--query ` | Query body as a JSON string | Yes |
Examples [#examples]
```bash
# Fetch first 10 records
memberstack records query products --query '{"pagination":{"first":10}}'
# Filter records by field value
memberstack records query products --query '{"filter":{"fieldFilters":{"status":{"equals":"active"}}}}'
# Paginate with cursor
memberstack records query products --query '{"pagination":{"first":10,"after":"cursor_abc"}}'
```
records count [#records-count]
Count records in a data table.
```bash
memberstack records count
```
Arguments [#arguments-4]
| Argument | Description | Required |
| ----------- | --------------- | -------- |
| `table_key` | Table key or ID | Yes |
Example [#example-3]
```bash
$ memberstack records count products
Total records: 256
```
records find [#records-find]
Find records with a friendly filter syntax.
```bash
memberstack records find [options]
```
Arguments [#arguments-5]
| Argument | Description | Required |
| ----------- | --------------- | -------- |
| `table_key` | Table key or ID | Yes |
Options [#options-3]
| Option | Description |
| ------------------ | ---------------------------------------------------- |
| `--where ` | Filter clause: `"field operator value"` (repeatable) |
| `--take ` | Limit number of results |
Supported Operators [#supported-operators]
`equals`, `not`, `in`, `notIn`, `lt`, `lte`, `gt`, `gte`, `contains`, `startsWith`, `endsWith`
Examples [#examples-1]
```bash
memberstack records find products --where "status equals active" --take 10
memberstack records find products --where "price gte 20" --where "category equals electronics"
memberstack records find products --where "name contains widget" --take 20
```
records export [#records-export]
Export all records from a data table.
```bash
memberstack records export [options]
```
Arguments [#arguments-6]
| Argument | Description | Required |
| ----------- | --------------- | -------- |
| `table_key` | Table key or ID | Yes |
Options [#options-4]
| Option | Description | Default |
| ------------------- | ------------------------------ | ----------------------------------- |
| `--format ` | Output format: `csv` or `json` | `json` |
| `--output ` | Output file path | `records-{tableKey}.json` or `.csv` |
Examples [#examples-2]
```bash
memberstack records export products
memberstack records export products --format csv --output products.csv
```
Exported CSV files flatten nested fields with `data.*` prefixes.
records import [#records-import]
Import records into a data table from a file.
```bash
memberstack records import --file
```
Arguments [#arguments-7]
| Argument | Description | Required |
| ----------- | --------------- | -------- |
| `table_key` | Table key or ID | Yes |
Options [#options-5]
| Option | Description | Required |
| --------------- | ----------------------------- | -------- |
| `--file ` | Input file path (CSV or JSON) | Yes |
File Format [#file-format]
CSV column headers can optionally use the `data.*` prefix. Both `name` and `data.name` are accepted.
Examples [#examples-3]
```bash
memberstack records import products --file records.csv
memberstack records import products --file records.json
```
records bulk-update [#records-bulk-update]
Bulk update records from a CSV or JSON file.
```bash
memberstack records bulk-update --file [options]
```
Options [#options-6]
| Option | Description | Required |
| --------------- | ------------------------------------- | -------- |
| `--file ` | Input file with record updates | Yes |
| `--dry-run` | Preview changes without applying them | No |
File Format [#file-format-1]
**Required fields:** `id`
**Optional fields:** `data.*` fields
Examples [#examples-4]
```bash
memberstack records bulk-update --file updates.csv
memberstack records bulk-update --file updates.csv --dry-run
```
records bulk-delete [#records-bulk-delete]
Bulk delete records matching a filter.
```bash
memberstack records bulk-delete [options]
```
Arguments [#arguments-8]
| Argument | Description | Required |
| ----------- | --------------- | -------- |
| `table_key` | Table key or ID | Yes |
Options [#options-7]
| Option | Description |
| ------------------ | ---------------------------------------------------- |
| `--where ` | Filter clause: `"field operator value"` (repeatable) |
| `--dry-run` | Preview deletions without applying them |
Examples [#examples-5]
```bash
memberstack records bulk-delete products --where "status equals archived"
memberstack records bulk-delete products --where "price lt 5" --dry-run
```
FAQ [#faq]
The `query` command accepts a raw JSON query body for full control over filters and pagination. The `find` command provides a friendlier syntax using `--where` clauses with operators like `equals`, `contains`, and `gte`. Use `find` for simple lookups and `query` for advanced filtering.
Yes. Both `records bulk-update` and `records bulk-delete` support a `--dry-run` flag. This shows exactly what would change without modifying any data, so you can verify the operation before committing.
Records can be imported and exported in both CSV and JSON formats. CSV files flatten nested data fields with a `data.*` prefix. When importing, both `name` and `data.name` column headers are accepted.
Use `--where` with a clause in the format `"field operator value"`. Supported operators include `equals`, `not`, `in`, `notIn`, `lt`, `lte`, `gt`, `gte`, `contains`, `startsWith`, and `endsWith`. You can chain multiple `--where` flags to combine filters.
---
title: Reset
description: Delete local data files and clear authentication.
slug: /docs/reset
publishedOn: 2026-02-22T00:00:00.000Z
updatedOn: 2026-02-22T00:00:00.000Z
keywords: memberstack, cli, reset, clear, logout, cleanup
---
# Reset
```
memberstack reset [options]
```
reset [#reset]
Delete local data files and clear authentication.
```bash
memberstack reset [options]
```
Description [#description]
Removes locally generated data files (`members.json`, `members.csv`) if they exist in the current directory and clears your stored authentication tokens. A confirmation prompt is shown before any changes are made.
Options [#options]
| Option | Alias | Description |
| --------- | ----- | ------------------------ |
| `--force` | `-f` | Skip confirmation prompt |
Example [#example]
```bash
$ memberstack reset
This will:
- Delete members.json, members.csv (if present)
- Clear stored authentication tokens
Continue? (y/n) y
✔ Deleted members.json
✔ Cleared authentication tokens
```
Force reset [#force-reset]
```bash
memberstack reset --force
```
FAQ [#faq]
It deletes local data files (`members.json`, `members.csv`) if they exist and clears your stored authentication tokens. You will need to run `memberstack auth login` again after resetting.
Yes. Use the `--force` flag to skip the confirmation prompt and reset immediately.
---
title: Skills
description: Add and remove Memberstack agent skills from the CLI.
slug: /docs/skills
publishedOn: 2026-02-19T00:00:00.000Z
updatedOn: 2026-02-19T00:00:00.000Z
keywords: memberstack, skills, agent, cli, claude, codex
---
# Skills
```
memberstack skills [options]
```
skills add [#skills-add]
Add a Memberstack agent skill to your project.
```bash
memberstack skills add
```
Example [#example]
```bash
memberstack skills add memberstack-cli
```
skills remove [#skills-remove]
Remove a Memberstack agent skill from your project.
```bash
memberstack skills remove
```
Example [#example-1]
```bash
memberstack skills remove memberstack-cli
```
Available Skills [#available-skills]
| Skill | Description |
| ----------------------- | ---------------------------------------------------- |
| `memberstack-cli` | Teaches your AI agent how to use the Memberstack CLI |
| `memberstack-admin-api` | Teaches your AI agent the Memberstack Admin REST API |
FAQ [#faq]
It leverages the skills CLI to add or remove Memberstack agent skills.
Skills are installed to `.agents/` and `.claude/`, so they work with any agent that supports loading skills from those directories.
---
title: SSO
description: Manage SSO apps for your Memberstack application.
slug: /docs/sso
publishedOn: 2026-02-22T00:00:00.000Z
updatedOn: 2026-02-22T00:00:00.000Z
keywords: memberstack, sso, single-sign-on, oauth, cli
---
# SSO
```
memberstack sso [options]
```
sso list [#sso-list]
List all SSO apps.
```bash
memberstack sso list
```
Example [#example]
```bash
$ memberstack sso list
ID Name Client ID
sso_abc123 My App ck_abc123
sso_def456 Staging App ck_def456
```
sso create [#sso-create]
Create an SSO app.
```bash
memberstack sso create [options]
```
Options [#options]
| Option | Description | Required |
| ---------------------- | ------------------------- | -------- |
| `--name ` | App name | Yes |
| `--redirect-uri ` | Redirect URI (repeatable) | Yes |
Examples [#examples]
```bash
memberstack sso create --name "My App" --redirect-uri https://example.com/callback
memberstack sso create --name "My App" --redirect-uri https://example.com/callback --redirect-uri https://staging.example.com/callback
```
sso update [#sso-update]
Update an SSO app.
```bash
memberstack sso update [options]
```
Arguments [#arguments]
| Argument | Description | Required |
| -------- | ----------- | -------- |
| `id` | SSO app ID | Yes |
Options [#options-1]
| Option | Description |
| ---------------------- | -------------------------------------------- |
| `--name ` | App name |
| `--redirect-uri ` | Redirect URI (repeatable; replaces all URIs) |
Example [#example-1]
```bash
memberstack sso update sso_abc123 --name "Production App" --redirect-uri https://example.com/callback
```
sso delete [#sso-delete]
Delete an SSO app.
```bash
memberstack sso delete
```
Arguments [#arguments-1]
| Argument | Description | Required |
| -------- | ----------- | -------- |
| `id` | SSO app ID | Yes |
Example [#example-2]
```bash
memberstack sso delete sso_abc123
```
FAQ [#faq]
SSO apps let your members authenticate through your own OAuth provider. You create an SSO app, set redirect URIs, and use the generated client ID and client secret to integrate with your authentication flow.
Yes. Use the `--redirect-uri` flag multiple times when creating or updating an SSO app to register multiple redirect URIs.
Delete the existing SSO app and create a new one. The new app will receive a fresh client ID and client secret.
---
title: Tables
description: Manage data tables in your Memberstack application.
slug: /docs/tables
publishedOn: 2026-02-17T00:00:00.000Z
updatedOn: 2026-02-19T00:00:00.000Z
keywords: memberstack, tables, data, schema, cli
---
# Tables
```
memberstack tables [options]
```
tables list [#tables-list]
List all data tables.
```bash
memberstack tables list
```
Example [#example]
```bash
$ memberstack tables list
[
{
"id": "tbl_abc123",
"name": "Products",
"key": "products",
...
}
]
```
tables get [#tables-get]
Get a data table by key or ID.
```bash
memberstack tables get
```
Arguments [#arguments]
| Argument | Description | Required |
| ----------- | --------------- | -------- |
| `table_key` | Table key or ID | Yes |
Examples [#examples]
```bash
memberstack tables get products
memberstack tables get tbl_abc123
```
tables describe [#tables-describe]
Show detailed schema information for a table.
```bash
memberstack tables describe
```
Arguments [#arguments-1]
| Argument | Description | Required |
| ----------- | --------------- | -------- |
| `table_key` | Table key or ID | Yes |
Description [#description]
Displays the table name, key, ID, access rules (create, read, update, delete), and all fields with their type, required status, and references.
Example [#example-1]
```bash
$ memberstack tables describe products
Table: Products
Key: products
ID: tbl_abc123
Access Rules:
Create: ADMIN
Read: PUBLIC
Update: ADMIN
Delete: ADMIN
Fields:
name String required
price Number required
category String
owner Relation → members
```
tables create [#tables-create]
Create a new data table.
```bash
memberstack tables create [options]
```
Options [#options]
| Option | Description | Required |
| ---------------------- | -------------------------------- | -------- |
| `--name ` | Table name | Yes |
| `--key ` | Table key (unique identifier) | Yes |
| `--create-rule ` | Access rule for creating records | No |
| `--read-rule ` | Access rule for reading records | No |
| `--update-rule ` | Access rule for updating records | No |
| `--delete-rule ` | Access rule for deleting records | No |
Access rule values: `PUBLIC`, `AUTHENTICATED`, `AUTHENTICATED_OWN`, `ADMIN_ONLY`
Examples [#examples-1]
```bash
memberstack tables create --name "Products" --key products
memberstack tables create --name "Orders" --key orders --create-rule AUTHENTICATED --read-rule PUBLIC
```
tables update [#tables-update]
Update a data table.
```bash
memberstack tables update [options]
```
Arguments [#arguments-2]
| Argument | Description | Required |
| -------- | ----------- | -------- |
| `id` | Table ID | Yes |
Options [#options-1]
| Option | Description |
| ---------------------- | -------------------------------- |
| `--name ` | Table name |
| `--create-rule ` | Access rule for creating records |
| `--read-rule ` | Access rule for reading records |
| `--update-rule ` | Access rule for updating records |
| `--delete-rule ` | Access rule for deleting records |
Access rule values: `PUBLIC`, `AUTHENTICATED`, `AUTHENTICATED_OWN`, `ADMIN_ONLY`
Examples [#examples-2]
```bash
memberstack tables update tbl_abc123 --name "Updated Products"
memberstack tables update tbl_abc123 --delete-rule ADMIN_ONLY --read-rule PUBLIC
```
tables delete [#tables-delete]
Delete a data table.
```bash
memberstack tables delete
```
Arguments [#arguments-3]
| Argument | Description | Required |
| -------- | ----------- | -------- |
| `id` | Table ID | Yes |
Example [#example-2]
```bash
memberstack tables delete tbl_abc123
```
FAQ [#faq]
Run `memberstack tables describe` followed by the table key. This displays the table name, key, ID, access rules for CRUD operations, and all fields with their type, required status, and references.
Tables support four access rule levels for create, read, update, and delete operations: `PUBLIC` (anyone), `AUTHENTICATED` (logged-in users), `AUTHENTICATED_OWN` (own records only), and `ADMIN_ONLY` (admin access).
Yes. Most table commands accept either the table key (e.g., `products`) or the table ID (e.g., `tbl_abc123`). Using keys is shorter and easier to remember.
---
title: Update
description: Update the Memberstack CLI to the latest version.
slug: /docs/update
publishedOn: 2026-02-22T00:00:00.000Z
updatedOn: 2026-02-22T00:00:00.000Z
keywords: memberstack, cli, update, upgrade, version
---
# Update
```
memberstack update
```
update [#update]
Update the Memberstack CLI to the latest version.
```bash
memberstack update
```
Description [#description]
Detects your package manager (npm, pnpm, yarn, or bun) and runs the appropriate global install command to update to the latest version. The current version and detected package manager are displayed before the update begins.
Example [#example]
```bash
$ memberstack update
Current version: 1.2.0
Package manager: npm
✔ Successfully updated Memberstack CLI. Run "memberstack --version" to verify.
```
FAQ [#faq]
Run `memberstack update`. The CLI detects your package manager (npm, pnpm, yarn, or bun) and runs the appropriate global install command automatically.
The update command supports npm, pnpm, yarn, and bun. It auto-detects which one you used to install the CLI and runs the correct update command.
---
title: Users
description: Manage users with access to your Memberstack application.
slug: /docs/users
publishedOn: 2026-02-20T00:00:00.000Z
updatedOn: 2026-02-20T00:00:00.000Z
keywords: memberstack, users, roles, access, cli
---
# Users
```
memberstack users [options]
```
users list [#users-list]
List all users with access to the app.
```bash
memberstack users list
```
Example [#example]
```bash
$ memberstack users list
ID Email First Name Last Name Role
usr_abc123 admin@example.com Jane Doe ADMIN
usr_def456 viewer@example.com John Smith MEMBERS_READ
```
users get [#users-get]
Get a user by ID or email.
```bash
memberstack users get
```
Arguments [#arguments]
| Argument | Description | Required |
| ------------- | ------------------------ | -------- |
| `id_or_email` | User ID or email address | Yes |
Examples [#examples]
```bash
memberstack users get usr_abc123
memberstack users get admin@example.com
```
users add [#users-add]
Add a user to the app.
Users must have an existing Memberstack account before they can be added to an app. They can sign up on the Memberstack website.
```bash
memberstack users add [options]
```
Options [#options]
| Option | Description | Required |
| ----------------- | -------------------------------------------------------------------- | -------- |
| `--email ` | Email address of the user to add | Yes |
| `--role ` | Role to assign: `ADMIN`, `OWNER`, `MEMBERS_WRITE`, or `MEMBERS_READ` | No |
Examples [#examples-1]
```bash
memberstack users add --email user@example.com
memberstack users add --email user@example.com --role ADMIN
```
users remove [#users-remove]
Remove a user from the app.
```bash
memberstack users remove
```
Arguments [#arguments-1]
| Argument | Description | Required |
| -------- | ----------------- | -------- |
| `userId` | User ID to remove | Yes |
Example [#example-1]
```bash
memberstack users remove usr_abc123
```
users update-role [#users-update-role]
Update a user's role.
```bash
memberstack users update-role --role
```
Arguments [#arguments-2]
| Argument | Description | Required |
| -------- | ----------------- | -------- |
| `userId` | User ID to update | Yes |
Options [#options-1]
| Option | Description | Required |
| --------------- | -------------------------------------------------------------- | -------- |
| `--role ` | New role: `ADMIN`, `OWNER`, `MEMBERS_WRITE`, or `MEMBERS_READ` | Yes |
Example [#example-2]
```bash
memberstack users update-role usr_abc123 --role MEMBERS_WRITE
```
FAQ [#faq]
You can assign `ADMIN`, `OWNER`, `MEMBERS_WRITE`, or `MEMBERS_READ`. Use the `--role` option when adding a user or updating their role.
Yes. Use `memberstack users get` with either a user ID or email address.
Use `memberstack users update-role` with the user ID and `--role` flag to assign a new role.
---
title: What is Memberstack CLI
description: An open-source command-line tool for managing your Memberstack account. Handle apps, members, plans, data tables, custom fields, and more from the terminal.
slug: /docs/what-is-memberstack-cli
publishedOn: 2026-02-19T00:00:00.000Z
updatedOn: 2026-02-22T00:00:00.000Z
keywords: memberstack, cli, what-is, overview, open-source, command-line
---
# What is Memberstack CLI
**Memberstack CLI** is an open-source command-line tool that lets you manage your Memberstack account from the terminal. From apps to members to plans to permissions: everything you do in the dashboard, you can do from the command line.
Why use a CLI? [#why-use-a-cli]
The Memberstack dashboard handles day-to-day tasks well. But when you need to work at scale (bulk imports, automated workflows, scripted operations), a web UI slows you down.
The CLI gives you:
* **Speed.** Run a command and get results. No clicking through pages.
* **Automation.** Script member imports, plan updates, and data migrations. Combine with cron jobs, CI/CD pipelines, or shell scripts.
* **Bulk operations.** Import and export members and records in CSV or JSON. Create, update, or delete in bulk with dry-run previews.
* **AI agent support.** Works with OpenAI Codex, Claude Code, Gemini CLI, GitHub Copilot, Cursor, and dozens of other agents. Install the [Agent Skills](/docs/agent-skills) so your agent knows how to use the CLI.
How it works [#how-it-works]
The CLI authenticates through OAuth in your browser, no API keys to manage. Your tokens are stored locally at `~/.memberstack/auth.json` with restricted file permissions and never leave your machine.
Every command targets your **sandbox** environment (test mode) by default. Use `--mode live` or the `--live` shorthand when you're ready to work with your live environment. See [Global Options](/docs/global-options) for all available flags.
```bash
memberstack members list --all # sandbox (test mode)
memberstack members list --all --live # live
```
What you can do [#what-you-can-do]
| Area | Examples |
| ------------------ | -------------------------------------------------------------- |
| **Members** | List, create, update, delete, import/export, bulk operations |
| **Plans** | List, create, update, delete, reorder |
| **Prices** | Create, update, activate, deactivate, delete |
| **Apps** | View current app, create, update, delete, restore |
| **Data tables** | List, create, update, delete, describe schema |
| **Records** | CRUD, query, import/export, bulk operations |
| **Custom fields** | List, create, update, delete |
| **Permissions** | List, create, update, delete, link/unlink to plans and members |
| **Auth providers** | List, configure, remove (Google, GitHub, Facebook, and more) |
| **SSO** | List, create, update, delete SSO apps |
| **Users** | List, get, add, remove, update roles |
| **Skills** | Add and remove agent skills for Claude Code and Codex |
Why not MCP? [#why-not-mcp]
Model Context Protocol (MCP) is the standard for connecting AI agents to external tools. It works, but it comes with trade-offs that a CLI avoids.
* **Context bloat.** MCP servers load every tool definition into the agent's context window upfront. A single server can burn thousands of tokens before the agent even reads your request. Anthropic's own engineering team documented setups where tool definitions consumed 134,000 tokens before optimization.
* **CLIs are nearly free.** A CLI command and its `--help` output cost a few hundred tokens. The same operation as an MCP tool definition costs thousands. That's context your agent can spend on solving problems, not reading schemas.
* **Agents are built for terminals.** Claude Code, Codex, Gemini CLI, Cursor, Copilot — they all run shell commands natively. No server to keep running, no protocol layer. The agent reads the docs, runs the command, and parses the output.
* **No infrastructure.** MCP servers need to be installed, configured, and kept alive. A CLI is a single install. Authenticate once and every agent on your machine can use it immediately.
Who built this? [#who-built-this]
Memberstack CLI is an open-source, community project by Ben Sabic from Flash Brew Digital. It is not affiliated with or endorsed by Memberstack. Contributions are welcome on GitHub.
---
title: Who Am I
description: Show your current authenticated identity.
slug: /docs/whoami
publishedOn: 2026-02-17T00:00:00.000Z
updatedOn: 2026-02-19T00:00:00.000Z
keywords: memberstack, whoami, oauth, identity, cli
---
# Who Am I
```
memberstack whoami
```
whoami [#whoami]
Show the currently authenticated Memberstack user.
```bash
memberstack whoami
```
Description [#description]
Displays your currently authenticated email, app ID, and active environment (sandbox or live). Run `memberstack auth login` first if you are not authenticated yet.
Example [#example]
```bash
$ memberstack whoami
Email: user@example.com
App: app_abc123
Environment: sandbox
```
FAQ [#faq]
The `whoami` command displays your currently authenticated email, app ID, and active environment (sandbox or live). It's a quick way to confirm which account and environment you're working with.
If `whoami` returns an authentication error, your session may have expired. Run `memberstack auth login` to re-authenticate, then try `whoami` again.