@yawlabs/lemonsqueezy-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LEMONSQUEEZY_API_KEY | No | LemonSqueezy API token. | |
| LEMONSQUEEZY_API_KEY_COMMAND | No | Command whose stdout produces the API key. Overrides LEMONSQUEEZY_API_KEY. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ls_get_userA | Get the authenticated user's information including name, email, and avatar. |
| ls_get_storeA | Get a specific store by ID, including name, slug, currency, and sales statistics. |
| ls_list_storesA | List all stores for the authenticated user. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. Cross-store note: LEMONSQUEEZY_ALLOWED_STORE_IDS does NOT gate this tool -- it has no storeId field and no parent ID filter to scope by, so it returns every store the API key can see, including stores outside the allowlist. Pair with a scoped LemonSqueezy API key for true cross-store enforcement -- the API key's visibility is the true boundary. |
| ls_get_customerA | Get a specific customer by ID, including name, email, city, country, MRR, total revenue, and customer portal URL. |
| ls_list_customersA | List all customers, optionally filtered by store or email. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. |
| ls_create_customerA | Create a new customer in a store. |
| ls_update_customerA | Update an existing customer's name, email, city, region, country, or status. The only supported status value is 'archived'; setting it here is the same operation as ls_archive_customer and is treated as destructive (rate-limited and audited). Other field edits are not. |
| ls_archive_customerA | Archive a customer. Sets their status to 'archived'. This is reversible by updating their status back. |
| ls_get_productA | Get a specific product by ID, including name, description, price, and status. |
| ls_list_productsA | List all products, optionally filtered by store. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. |
| ls_get_variantA | Get a specific product variant by ID, including price, billing interval, and trial settings. |
| ls_list_variantsA | List all variants, optionally filtered by product. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. Cross-store note: when LEMONSQUEEZY_ALLOWED_STORE_IDS is set, this tool requires at least one of: productId. Even with that set, Pair with a scoped LemonSqueezy API key for true cross-store enforcement -- the API key's visibility is the true boundary. |
| ls_get_priceA | Get a specific price by ID, including amount, currency, and billing interval. |
| ls_list_pricesA | List all prices, optionally filtered by variant. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. Cross-store note: when LEMONSQUEEZY_ALLOWED_STORE_IDS is set, this tool requires at least one of: variantId. Even with that set, Pair with a scoped LemonSqueezy API key for true cross-store enforcement -- the API key's visibility is the true boundary. |
| ls_get_fileA | Get a specific file by ID, including name, size, download URL, and associated variant. |
| ls_list_filesA | List all files, optionally filtered by variant. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. Cross-store note: when LEMONSQUEEZY_ALLOWED_STORE_IDS is set, this tool requires at least one of: variantId. Even with that set, Pair with a scoped LemonSqueezy API key for true cross-store enforcement -- the API key's visibility is the true boundary. |
| ls_get_orderA | Get a specific order by ID, including status, total, currency, customer info, and payment details. |
| ls_list_ordersA | List all orders, optionally filtered by store or user email. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. |
| ls_generate_order_invoiceB | Generate a PDF invoice for an order. Returns a download URL for the invoice. |
| ls_refund_orderA | Issue a refund for an order. This is irreversible — the refund amount is in cents (e.g. 1000 = $10.00). |
| ls_get_order_itemA | Get a specific order item by ID, including product name, variant, price, and quantity. |
| ls_list_order_itemsA | List all order items, optionally filtered by order or product. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. Cross-store note: when LEMONSQUEEZY_ALLOWED_STORE_IDS is set, this tool requires at least one of: orderId, productId, variantId. Even with that set, Pair with a scoped LemonSqueezy API key for true cross-store enforcement -- the API key's visibility is the true boundary. |
| ls_get_subscriptionA | Get a specific subscription by ID, including status, billing interval, renewal date, and customer info. |
| ls_list_subscriptionsA | List all subscriptions, optionally filtered by store, order, product, variant, or status. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. |
| ls_update_subscriptionA | Update a subscription. Can change the variant (plan switch), pause/unpause, set billing anchor, or update invoice details. Pausing ( |
| ls_cancel_subscriptionA | Cancel a subscription. The subscription remains active until the end of the current billing period, then expires. |
| ls_get_subscription_invoiceA | Get a specific subscription invoice by ID, including status, total, billing reason, and payment details. |
| ls_list_subscription_invoicesA | List all subscription invoices, optionally filtered by store, subscription, or status. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. |
| ls_generate_subscription_invoiceA | Generate a PDF invoice for a subscription invoice. Returns a download URL. |
| ls_refund_subscription_invoiceA | Issue a refund for a subscription invoice. This is irreversible — the refund amount is in cents (e.g. 1000 = $10.00). |
| ls_get_subscription_itemA | Get a specific subscription item by ID, including quantity, pricing, and associated subscription. |
| ls_list_subscription_itemsA | List all subscription items, optionally filtered by subscription or price. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. Cross-store note: when LEMONSQUEEZY_ALLOWED_STORE_IDS is set, this tool requires at least one of: subscriptionId, priceId. Even with that set, Pair with a scoped LemonSqueezy API key for true cross-store enforcement -- the API key's visibility is the true boundary. |
| ls_update_subscription_itemA | Update a subscription item's quantity. Used for seat-based or quantity-based billing. |
| ls_get_subscription_item_usageA | Get the current usage for a metered subscription item within the current billing period. |
| ls_get_usage_recordA | Get a specific usage record by ID, including quantity and action type. |
| ls_list_usage_recordsA | List all usage records, optionally filtered by subscription item. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. Cross-store note: when LEMONSQUEEZY_ALLOWED_STORE_IDS is set, this tool requires at least one of: subscriptionItemId. Even with that set, Pair with a scoped LemonSqueezy API key for true cross-store enforcement -- the API key's visibility is the true boundary. |
| ls_create_usage_recordA | Report usage for a metered subscription item. Use 'increment' action to add to the current usage, or 'set' to replace it. |
| ls_get_discountA | Get a specific discount by ID, including code, amount, type, and usage limits. |
| ls_list_discountsA | List all discounts, optionally filtered by store. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. |
| ls_create_discountB | Create a new discount code. Supports percentage or fixed amount discounts with optional duration and usage limits. |
| ls_delete_discountA | Permanently delete a discount. This is irreversible. |
| ls_get_discount_redemptionA | Get a specific discount redemption by ID, showing when and where a discount was used. |
| ls_list_discount_redemptionsA | List all discount redemptions, optionally filtered by discount or order. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. Cross-store note: when LEMONSQUEEZY_ALLOWED_STORE_IDS is set, this tool requires at least one of: discountId, orderId. Even with that set, Pair with a scoped LemonSqueezy API key for true cross-store enforcement -- the API key's visibility is the true boundary. |
| ls_get_license_keyA | Get a specific license key by ID, including key value, status, activation limit, and expiry date. |
| ls_list_license_keysA | List all license keys, optionally filtered by store, order, or product. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. |
| ls_update_license_keyB | Update a license key's activation limit, expiry date, or disabled status. Setting |
| ls_get_license_key_instanceA | Get a specific license key instance (activation) by ID, including instance name and creation date. |
| ls_list_license_key_instancesA | List all license key instances (activations), optionally filtered by license key. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. Cross-store note: when LEMONSQUEEZY_ALLOWED_STORE_IDS is set, this tool requires at least one of: licenseKeyId. Even with that set, Pair with a scoped LemonSqueezy API key for true cross-store enforcement -- the API key's visibility is the true boundary. |
| ls_get_checkoutA | Get a specific checkout by ID, including URL, expiry, and custom data. |
| ls_list_checkoutsA | List all checkouts, optionally filtered by store or variant. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. |
| ls_create_checkoutA | Create a new checkout URL for a product variant. Returns a URL where the customer can complete their purchase. Supports custom pricing, prefilled customer data, and checkout customization. |
| ls_get_webhookA | Get a specific webhook by ID, including URL, events, and last sent timestamp. |
| ls_list_webhooksA | List all webhooks, optionally filtered by store. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. |
| ls_create_webhookA | Create a new webhook to receive event notifications. The signing secret is returned only once — save it immediately. |
| ls_update_webhookA | Update an existing webhook's URL, events, or secret. Setting |
| ls_delete_webhookA | Permanently delete a webhook. This is irreversible. |
| ls_activate_licenseA | Activate a license key for an instance. Does not require an API key — uses the license key itself for auth. |
| ls_validate_licenseA | Validate a license key or specific instance. Does not require an API key — uses the license key itself for auth. |
| ls_deactivate_licenseA | Deactivate a license key instance. Does not require an API key — uses the license key itself for auth. |
| ls_get_affiliateA | Get a specific affiliate by ID, including commission rate, status, and earnings. |
| ls_list_affiliatesA | List all affiliates for the authenticated user's stores, optionally filtered by user email. Results are paginated — check meta.page in the response for currentPage, lastPage, and total. Cross-store note: LEMONSQUEEZY_ALLOWED_STORE_IDS does NOT gate this tool -- it has no storeId field and no parent ID filter to scope by, so it returns affiliates tied to every store the API key can see, including non-allowed ones. Pair with a scoped LemonSqueezy API key for true cross-store enforcement -- the API key's visibility is the true boundary. |
| ls_sink_events_listA | List webhook events the sink has received, optionally filtered. Use |
| ls_sink_event_mark_processedA | Mark a sink event as processed by your consumer. Idempotent. |
| ls_sink_statsA | Get sink totals: total events, unprocessed count, last-received timestamp. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Recent destructive-call audit log | The most recent destructive tool calls and their outcomes (rate limit, refund cap, etc.). Bounded ring buffer; resets on server restart. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/YawLabs/lemonsqueezy-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server