Gumroad MCP server
85 operations0 webhooks
Sell and manage digital products: products, sales, subscribers, licenses, offer codes, variants, emails, workflows, payouts and tax forms.
Try Gumroad with your agent
Connect Gumroad, then paste this into Claude, ChatGPT or Cursor. For ideas from other apps, see the use cases.
Using Corsair, show me what you can do in Gumroad on my account, then run one read-only example and show me the result.
Gumroad tools and triggers
Tools are what your agent can do in Gumroad through Corsair's MCP server. Triggers are the Gumroad events a routine can start from.
Products
- Categories ListRead-only
List every product category; a category path feeds the category parameter when creating or updating products
products.categoriesList
- Covers AddWrite
Attach a cover to a product from a public image/video or YouTube/Vimeo URL
products.coversAdd
- Covers DeleteDestructive
Permanently delete one of a product's covers by id
products.coversDelete
- CreateWrite
Create a product with name, price in cents, type, tags, refund policy, rich content pages and attached files
products.create
- DeleteDestructive
Permanently delete a product
products.delete
- DisableDestructive
Unpublish (disable) an existing product
products.disable
- EnableWrite
Publish (enable) an existing product
products.enable
- GetRead-only
Get one product by id, including description, price, tags and purchasing-power-parity prices
products.get
- ListRead-only
List the authenticated user's Gumroad products with price, publication state and sales counts
products.list
- Reviews ListRead-only
List one product's reviews with rating, message and the seller's public reply
products.reviewsList
- Thumbnail DeleteDestructive
Remove a product's thumbnail
products.thumbnailDelete
- Thumbnail SetWrite
Set a product's thumbnail from a public image URL or a direct-upload signed blob id
products.thumbnailSet
- UpdateWrite
Update a product; files and tags are full replacements, and custom_html or cover_ids can be rewritten
products.update
Variant Categories
- CreateWrite
Create a variant category on a product by title
variantCategories.create
- DeleteDestructive
Permanently delete a product's variant category
variantCategories.delete
- GetRead-only
Read one of a product's variant categories by id
variantCategories.get
- ListRead-only
List a product's variant categories
variantCategories.list
- UpdateWrite
Rename one of a product's variant categories
variantCategories.update
- Variants CreateWrite
Create a variant with a name, price difference in cents and optional purchase cap
variantCategories.variantsCreate
- Variants DeleteDestructive
Permanently delete a variant
variantCategories.variantsDelete
- Variants GetRead-only
Read one variant by id
variantCategories.variantsGet
- Variants ListRead-only
List the variants in one of a product's variant categories
variantCategories.variantsList
- Variants UpdateWrite
Update a variant name, price difference or purchase cap
variantCategories.variantsUpdate
Emails
- CreateDestructive
Create a draft audience email by subject, HTML body and audience, or send it immediately with publish=true
emails.create
- DeleteDestructive
Delete an audience email
emails.delete
- GetRead-only
Read one audience email by id
emails.get
- ListRead-only
List the seller's audience emails, optionally filtered to published, scheduled or draft state
emails.list
- PreviewWrite
Send a preview of an audience email to the seller's own address
emails.preview
- ScheduleWrite
Schedule a draft audience email to publish at a set time in the seller's timezone
emails.schedule
- SendDestructive
Publish a draft audience email and send it to its audience
emails.send
- UnscheduleWrite
Cancel a scheduled audience email and turn it back into a draft
emails.unschedule
Offer Codes
- Create For ProductWrite
Create a fixed-amount or percentage offer code for a product, optionally universal, automatic and scheduled
offerCodes.createForProduct
- Delete For ProductDestructive
Permanently delete one of a product's offer codes
offerCodes.deleteForProduct
- GetRead-only
Read one store-wide offer code by id
offerCodes.get
- Get For ProductRead-only
Read one of a product's offer codes by id
offerCodes.getForProduct
- ListRead-only
List the store's non-deleted offer codes, newest first, optionally filtered to automatic sales
offerCodes.list
- List For ProductRead-only
List all of a product's offer codes with amounts and redemption counts
offerCodes.listForProduct
- UpdateWrite
Update a store-wide offer code schedule, usage cap or minimum; the amount and universality cannot change
offerCodes.update
- Update For ProductWrite
Update one of a product's offer codes: usage cap, minimum, automatic application and validity window
offerCodes.updateForProduct
Sales
- GetRead-only
Get one sale by id with price, fees, taxes, refund and chargeback state
sales.get
- ListRead-only
List successful sales, filterable by date range, product, buyer email, order id, name or license key
sales.list
- Mark As ShippedWrite
Mark a physical sale as shipped with an optional tracking URL
sales.markAsShipped
- RefundDestructive
Refund a sale fully, or partially with amount_cents; returns the updated sale
sales.refund
- Resend ReceiptWrite
Resend the purchase receipt to the customer's email
sales.resendReceipt
- Revoke AccessDestructive
Revoke the buyer's access to a sale without refunding it (refused for refunded, physical or subscription sales)
sales.revokeAccess
- Undo Revoke AccessWrite
Restore a buyer's access to a previously revoked sale
sales.undoRevokeAccess
User
- Custom Html GetRead-only
Read the profile's custom HTML landing page plus a rendered fallback of the current storefront
user.customHtmlGet
- Custom Html PreviewWrite
Sanitize profile HTML and return the sanitized result without saving anything
user.customHtmlPreview
- Custom Html UpdateWrite
Publish or clear the profile custom HTML landing page; the response carries a sanitization report and the previous HTML for rollback
user.customHtmlUpdate
- GetRead-only
Read the authenticated user's profile: name, bio, links and (with view_sales) email
user.get
- Refund Policy GetRead-only
Read the account-level refund policy
user.refundPolicyGet
- Refund Policy UpdateWrite
Update the account-level refund policy period and its fine print (max 3000 characters)
user.refundPolicyUpdate
Licenses
- Decrement Uses CountWrite
Decrement a license key use counter and read its purchase
licenses.decrementUsesCount
- DisableDestructive
Disable a license key so it fails verification, and read its purchase
licenses.disable
- EnableWrite
Re-enable a disabled license key and read its purchase
licenses.enable
- RotateWrite
Rotate a license key to a new one; the previous key stops validating immediately
licenses.rotate
- VerifyWrite
Verify a license key against a product and read its purchase; increments the license use counter unless increment_uses_count is "false"
licenses.verify
Custom Fields
- CreateWrite
Add a custom field to a product's checkout, optionally required
customFields.create
- DeleteDestructive
Permanently delete a product's custom field by name
customFields.delete
- ListRead-only
List a product's checkout custom fields
customFields.list
- UpdateWrite
Flip whether one of a product's custom fields is required
customFields.update
Resource Subscriptions
- ListRead-only
List active subscriptions for one resource event type
resourceSubscriptions.list
- SubscribeWrite
Subscribe a post URL to one of the 8 resource event types (sales, refunds, disputes, subscription changes); receiving deliveries is out of scope
resourceSubscriptions.subscribe
- Test EventWrite
Queue a sample event for a resource subscription post URL
resourceSubscriptions.testEvent
- UnsubscribeDestructive
Delete a resource subscription by id
resourceSubscriptions.unsubscribe
Workflows
- Emails AddWrite
Append one email step to a workflow with a delay in hours, days, weeks or months
workflows.emailsAdd
- Emails UpdateWrite
Update one workflow email step subject, body or delay without changing publication state
workflows.emailsUpdate
- GetRead-only
Read one workflow with its email steps and delivery statistics
workflows.get
- ListRead-only
List the seller's active workflows, newest first
workflows.list
Files
- AbortWrite
Cancel a multipart upload started by files.presign
files.abort
- CompleteWrite
Finalize a multipart upload with the S3 upload id, key and part etags, returning the canonical file URL
files.complete
- PresignWrite
Start a multipart file upload and get presigned S3 URLs per 100 MB part (max 20 GB); the binary PUTs to S3 are client-side
files.presign
Media
- CreateWrite
Add a media library file from a public image URL or a direct-upload signed blob id
media.create
- DeleteDestructive
Delete a media library file by id
media.delete
- ListRead-only
List the authenticated user's media library files
media.list
Payouts
- GetRead-only
Read one payout with its sale ids and optional per-transaction breakdown lines
payouts.get
- ListRead-only
List payouts with amount, currency, status and bank destination, filterable by date range
payouts.list
- UpcomingRead-only
Read the up to two upcoming payouts with their transaction lines
payouts.upcoming
Public
- ProductRead-only
Read the public product page data for a permalink (price, covers, description, reviews); no authentication required
public.product
- ProfileRead-only
Read a creator's public profile with up to 100 visible products; no authentication required
public.profile
Subscribers
- GetRead-only
Read one subscriber by id with status, recurrence and license key
subscribers.get
- ListRead-only
List one product's subscribers with status, recurrence and license key
subscribers.list
Tax Forms
- DownloadRead-only
Download a tax form PDF for a year and form type as base64 with filename and content type
taxForms.download
- ListRead-only
List generated tax forms (1099-K, 1099-MISC) for one tax year or every year
taxForms.list
Earnings
- GetRead-only
Read the annual earnings breakdown (gross, fees, taxes, affiliate credit, net) for one tax year
earnings.get
Connect Gumroad to Claude, ChatGPT or Cursor
- 1
Connect Gumroad in Corsair
Add your Gumroad API key once in Corsair. Corsair stores the credential encrypted and makes the Gumroad API calls for your agent, so it never goes into a prompt or a config file. Connect Gumroad
If your link lets the agent add apps, you can skip this: it gives you a sign-in link the first time it needs Gumroad. On a ChatGPT personal plan, connect Gumroad here first.
- 2
Add Corsair's MCP server to your agent
Every client uses the same address:
https://mcp.corsair.dev/mcpOpen Customize → Connectors → Add custom connector, paste the address, then select Connect.Add a custom MCP server with the address and choose OAuth. Personal plans get read tools only.Add to CursorOr add this to~/.cursor/mcp.json. Cursor opens Corsair to sign in the first time it connects.{ "mcpServers": { "corsair": { "url": "https://mcp.corsair.dev/mcp" } } }Run this, then run/mcpin Claude Code to sign in.claude mcp add --transport http corsair https://mcp.corsair.dev/mcpCodex, Gemini CLI, VS Code, Zed and other clients with OAuth sign-in work the same way. Clients without it, such as GitHub Copilot's coding agent, use a link's own address and an API key. Setup for every client
- 3
Sign in and choose what needs your approval
Your client opens Corsair to sign in. Pick a link: the apps your agent can use and a mode that decides what it may do without asking. In the default Cautious mode, Gumroad's read and write operations run right away and its 16 destructive operations wait for your approval. Strict mode asks before every write and refuses destructive operations, and Read mode allows reads only.
FAQ
Install corsair and @corsair-dev/gumroad, add the Gumroad plugin, and connect with an API key. Then call methods like corsair.gumroad.api.customFields.create() from your app. Corsair keeps each tenant isolated.
Yes. Gumroad requires an API key from your Gumroad account or developer dashboard. Create credentials with access that matches what you automate, then paste them into Corsair or connect through managed auth in Hub.
Yes. One Corsair client can hit Gumroad, GitHub, Notion, Stripe, and the rest. Trigger Gumroad from a webhook, push updates to Slack, or chain actions across plugins. Same tenant context across integrations, plain TypeScript.
Teams use Corsair for sell and manage digital products: products, sales, subscribers, licenses, offer codes, variants, emails, workflows, payouts and tax forms. Common builds include sync jobs, admin tooling, and agents that call Gumroad APIs from your backend.
The SDK is open source. Self-host and you pay Corsair nothing for the integration layer. Hub bills for hosted auth and execution, not per Gumroad API call. Hub has a generous free tier. For hobby projects you can probably run the whole thing on free. Paid plans start to matter with more tenants or heavier traffic.
We maintain @corsair-dev/gumroad in the open repo. When Gumroad ships API changes, upgrade the package. Your call sites stay typed. You should not need to rewrite the integration layer each time.
No. Corsair does not read your Gumroad data or hold individual access credentials. Credentials stay in your database. API calls run on your instance. We do not store Gumroad data on your behalf.
Yes. Add https://mcp.corsair.dev/mcp as a custom connector or MCP server in Claude, ChatGPT, Cursor, VS Code, Claude Code, Codex or any client that supports remote MCP servers with OAuth sign-in, then sign in to Corsair. On ChatGPT personal plans, custom servers currently get read tools only.
Yes. Put Gumroad on a link in Strict mode and every write waits for your approval, while destructive actions are refused. The default Cautious mode asks only before the 16 destructive Gumroad operations. You can change a link's mode at hub.corsair.dev/me.