Can an AI agent use Gumroad?
As of 6 Oct 2026, an AI agent gets into Gumroad on its own and does 10% of the core work.
- Find: Some docs for agents: llms.txt and an MCP server.
- Access: Sign-up in a browser.
- Use: 10% of the work.
- Pay: No plan to buy.
- Leave: Leaves on its own: Nothing to cancel, deletes its account.
To reach L3 · Does the work: do half of the core work (now 10%).
With an account set up by a person: not measured yet.
What the levels meanDriven 6 Oct 20261 drive so farRules of 15 Oct 2026Claim this page
Written and checked by our agents from this drive's record. How we write.
Who gets in
- Agents on a serverGet in on their own.
- Signed agentsThe sign-up page opens.
- Agents in a person's browserNot measured yet.
Sign-up page checked 12 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from
What an agent can do in Gumroad.
On its own
- Sign up and get an API key with a couple of clicks, no CAPTCHA
- Create, edit and delete draft products on its own
- Add pricing options, discount codes, variants, custom checkout fields and bundles
4 more
- Upload files and attach them to products
- Set up webhooks and a basic storefront profile
- Turn on two-factor login security itself
- Export its own sales report
What it can't, and why
- Make any product actually go live for saleNeeds a payout method, which asks for a real person's ID and address
- Sell, buy, refund or manage anything money-relatedNothing can go live, so there is nothing to buy
- Send marketing emails or automated workflowsAccount needs $100 in past sales first
2 more
- Sell commissions, calls or tipsBlocked until the account is 30 days old
- Get its first API key without opening a browserBoth ways to get a key need a signed-in browser session
Can an AI agent sign up for Gumroad on its own?
Yes, in a browser, without a human. Web form only (email + password) at /signup; no CAPTCHA met; no sign-up API.
Does Gumroad have an MCP server, and can an agent connect to it?
Yes. Gumroad has an official MCP server. The server lists 8 tools, signs an agent in with OAuth and speaks the 26 Mar 2025 MCP spec.
A new agent can get in on its own: in the drive of 6 Oct 2026, our agent signed up, verified and got its key without a person. Through the MCP server, 1 of our agent's 3 attempts worked.
What the drive found
API–OpenAPIMCP · officialCLI–SDKllms.txtWebhooks–SandboxHow does an AI agent get a Gumroad API key?
In the drive of 6 Oct 2026, our agent got its Gumroad API key in a browser, without a person. Token from Settings > Advanced > Applications > Generate access token (web UI). The official CLI also does an OAuth device flow (gumroad auth login), but its Authorize click needs a logged-in browser session.
Can an AI agent delete its Gumroad account?
Yes, in a browser, without a human. Settings > Advanced > Delete your Gumroad account, confirmed in a dialog. Web only. Afterwards the token answered 401 "The access token was revoked" and the storefront returned 404.
Can an AI agent pay for Gumroad?
No plan to buy.
It has a free plan.
What the drive recorded
There is no paid tier for sellers. /pricing: "Direct sales: 10% + 50¢ per sale, $0 monthly". No 402 on the API (401 Bearer), no /.well-known/ucp, no registry listing. x402./mpp./agents. subdomains are creator storefronts or 404.
From the drive of 6 Oct 2026.
For the team behind Gumroad.
Where agents stop in Gumroad today, and the fixes that get them further, highest impact first.
The fixes, highest impact first
- Let drafts publish before payout setup
- Add server/discover and 28 Jul 2026 to MCP
- Return real HTTP status codes on errors
3 more fixes
- Publish an OpenAPI file and Markdown docs Step-by-step guide
- Add account deletion to the API
- Let agents mint a token without the dashboard Step-by-step guide
- Claim it free and reply next to the result.
- A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
- Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
Details
Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.
Already claimed it? Open it in your dashboard.
Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.
Embed the badge on your site
Behind the level.
The part scores and the measures behind them.
Part scores and the measures
Part scores
Agent-ready setup
- llms.txt: found
- OpenAPI: not found
- MCP server: found
- CLI: found
Not measured in this drive: Holds up, Docs match (part of an Audit).
Security: reported privately to the owner
The measures
- Work done10
- Reliability100
- Crash test–
For agents and builders.
The drive as data, every checkpoint and all 51 attempts.
How an agent connects · 7 tips
/api/tools/gumroad.json/tools/gumroad.mdMCP get_tool {"slug":"gumroad"}
- Use the official CLI (curl -fsSL https://gumroad.com/install-cli.sh | bash). It covers more than the /api page: upsells, pages, file uploads in one command, and --json output.
- The API token from Settings > Advanced > Applications also works as a Bearer token on the MCP endpoint https://gumroad.com/muse/v1/mcp.
- Errors come back as HTTP 200 with success:false: check the success field, not the status.
- The MCP server is legacy (initialize, protocol 2025-03-26); server/discover returns -32601.
- Expect drafts only on a new account. Publishing needs a payout method with identity data, emails need $100 in sales, and service products need a 30-day-old account.
- Deleted products still answer GET with deleted:true; filter on it.
- Form-encode values with --data-urlencode: a literal + becomes a space.
Every checkpoint, in detail · 9 checkpoints
- DocsHeadlessllms.txt, /.well-known/mcp.json, PRM and AS metadata are plain JSON/text. The API reference at /api is a JS app: the HTML has no content, the text lives in the JS chunk (read headless). No OpenAPI file; Accept: text/markdown returns 404.
- Sign upIn a browserWeb form only (email + password) at /signup; no CAPTCHA met; no sign-up API.
- VerifyHeadlessConfirmation mail arrived in about 1 minute.
- KeyIn a browserToken from Settings > Advanced > Applications > Generate access token (web UI). The official CLI also does an OAuth device flow (gumroad auth login), but its Authorize click needs a logged-in browser session.
- First callHeadlessGET /v2/user with the bearer token returned 200 with our account.
- First actionHeadlessPOST /v2/products and MCP create_draft_product created products, read back with GET /v2/products/{id}. They stay drafts: publishing needs a payout method.
- PayNot neededThere is no paid tier for sellers. /pricing: "Direct sales: 10% + 50¢ per sale, $0 monthly". No 402 on the API (401 Bearer), no /.well-known/ucp, no registry listing. x402./mpp./agents. subdomains are creator storefronts or 404.
- CancelNot neededNothing to cancel: there is nothing to pay for.
- DeleteIn a browserSettings > Advanced > Delete your Gumroad account, confirmed in a dialog. Web only. Afterwards the token answered 401 "The access token was revoked" and the storefront returned 404.
The attempt log · 51 attempts
| Capability | Route | Result | Evidence |
|---|---|---|---|
| MCP discovery: Find MCP endpoint via PRM/AS metadata and /.well-known/mcp.json | api | done ✓ | GET /.well-known/oauth-protected-resource 200 JSON resource=https://gumroad.com/muse/v1/mcp; /.well-known/mcp.json 200 JSON lists clients muse/claude/chatgpt MCP URLs; llms.txt links Muse/Claude connectors |
| MCP server/discover: POST server/discover (2026-07-28) to https://gumroad.com/muse/v1/mcp without credentials | mcp | partial ✓ | HTTP 401, WWW-Authenticate: Bearer realm="Gumroad", resource_metadata="https://gumroad.com/.well-known/oauth-protected-resource/muse/v1/mcp" |
| Markdown docs / aipref: Accept: text/markdown on /api and help article; .md URLs; robots Content-Usage | api | failed ✓ | Accept: text/markdown on https://gumroad.com/api returns 404 text/html; /api.md 404; robots.txt has only User-agent:* Disallow:/purchases/ and Sitemaps; no Content-Usage header |
| Sign up: Create account with email+password on https://gumroad.com/signup | browser | done ✓ | Form submit redirected to /dashboard showing the agent's inbox and "Please confirm your email address"; no CAPTCHA signals on page |
| Find docs: Locate API reference, CLI, MCP docs | api | done ✓ | https://gumroad.com/api (SPA; content in JS chunk Api-C0Udgo-d.js) documents ~80 REST operations on api.gumroad.com/v2 (products, offer_codes, variant_categories, custom_fields, sales refund/mark_as_shipped, subscribers, licenses, emails send/schedule, workflows, payouts, resource_subscriptions, files presign) plus official CLI github.com/antiwork/gumroad-cli (brew install antiwork/cli/gumroad or curl -fsSL https://gumroad.com/install-cli.sh); llms.txt; /muse page documents MCP server https://gumroad.com/muse/v1/mcp |
| Verify email: Open confirmation link from mail | api | done ✓ | Mail Confirmation instructions arrived ~1 min after sign-up. dashboard banner "Please confirm your email" gone afterwards |
| Get API credentials: Settings > Advanced > Applications: create app, Generate access token | browser | done ✓ | Created app AgentDrives Test (redirect http://127.0.0.1:8765/callback) at /oauth/applications/<id>/edit; Generate access token produced a token |
| First API call: GET /v2/user with bearer token | api | done ✓ | 200 application/json {"success":true,"user":{..."display_name":"drivemaster38","email":"the agent's inbox"}} |
| MCP initialize fallback: server/discover with token, then initialize offering 2026-07-28, tools/list | mcp | done ✓ | server/discover -> 200 JSON-RPC error -32601 Method not found (legacy). initialize -> protocolVersion 2025-03-26, serverInfo gumroad/Gumroad 1.0.0, no Mcp-Session-Id; tools/list: get_account, list_products, get_product, create_draft_product, publish_product, unpublish_product, list_sales, list_payouts |
| Create and publish a product: MCP create_draft_product then publish_product | mcp | partial ✓ | create_draft_product -> id iL5ChmNEqTldgarIAyddbg== published:false; publish_product -> isError: "You must connect at least one payment method before you can publish this product for sale."; GET /v2/products/{id} published:false |
| Create and publish a product: POST /v2/products (paid PWYW and free $0), then PUT /v2/products/{id}/enable | api | blocked ✓ | POST /v2/products -> 200 success:true published:false (no warning field seen). PUT /v2/products/9nq5Osb1cDeCx9r0ghAccA==/enable -> HTTP 200 {"success":false,"message":"You must connect at least one payment method before you can publish this product for sale."}; also for a $0 product. POST .../enable (as the prose says) -> 404 |
| Edit or unpublish/delete a product: PUT /v2/products/{id} rename + price 400 + custom_receipt; read back | api | done ✓ | PUT -> success:true; GET /v2/products/KKpyUfNzzDJb7TpXL2uQwg== name "AgentDrives Test Template v2" price 400 custom_receipt set |
| Product variants/tiers with SKUs: POST variant_categories Format + 2 variants (PDF, PDF + Notion +$2); read back | api | done ✓ | variant_category envcwsZbsQSu0D8qJbs7rw==; variants IJD0-3TEU94-4DrxE_DN3Q==, CNBEOAX6WGKbTiA5Bal_5w==; GET product shows variants[Format].options with price_difference 0/200 |
| Pay-what-you-want pricing: POST /v2/products price=300 customizable_price=true suggested_price_cents=500 | api | done ✓ | GET product customizable_price:true, formatted_price "$3+" |
| Discount codes: POST /v2/products/{id}/offer_codes ADTEST10 10% off; list | api | done ✓ | offer_code WMyPRqVE7gz1OTfzzpLbEA== percent_off 10; GET offer_codes lists it |
| Custom checkout fields: POST /v2/products/{id}/custom_fields Company | api | done ✓ | custom_field KoSIpeuE15-4p7Ph9IDygA==; GET product custom_fields lists Company |
| Webhooks: PUT /v2/resource_subscriptions resource_name=sale post_url=https://example.com/agentdrives-test-hook; list | api | partial ✓ | resource_subscription _Qk6fNYWre_pUUX8FyT0nQ== created; GET resource_subscriptions?resource_name=sale lists it |
| OAuth app and API access tokens: Create OAuth application in Settings > Advanced, generate token; also CLI OAuth device authorization (gumroad auth login) | browser | done ✓ | App token: GET /v2/user 200. CLI: device URL https://gumroad.com/oauth/device?user_code=GRD-••••; approved with Authorize in our logged-in browser ("Authorization complete"); CLI printed "Logged in as the agent's inbox"; gumroad user --json success:true |
| Sell digital files: gumroad files upload ./guide.pdf (presign/multipart/complete), then products update --file to attach; read back | cli | partial ✓ | files upload -> file_url https://s3.amazonaws.com/gumroad/attachments/...; products view iL5ChmNEqTldgarIAyddbg== files[0] name "AgentDrives Guide" with files.gumroad.com URL |
| Memberships with tiers: gumroad products create --type membership --subscription-duration monthly --price 5 --draft | cli | partial ✓ | Product b1R45-NC_ytRSvynoCxYGw== is_tiered_membership:true recurrences [monthly], variants Tier/Untitled monthly price_cents 500, published:false |
| Commissions, calls, tips: gumroad products create --type coffee|commission|call --draft | cli | blocked ✓ | All three: {"success":false,"error":{"message":"Service products are disabled until your account is 30 days old.","status_code":200}} |
| Product bundles: gumroad products create --type bundle --draft | cli | partial ✓ | Bundle MCPh-FS8ukC4UJ0Yt1SKxg== created published:false, bundle_products empty |
| Customize public seller profile: gumroad user update --name --bio; fetch public storefront | cli | done ✓ | user update success:true; GET https://drivemaster38.gumroad.com/ 200 contains "AgentDrives Test" and "Account of AgentDrives." |
| Upsells and recommendations: gumroad upsells create --cross-sell 20% off guide for buyers of template; upsells list | cli | done ✓ | upsell fzhtufmLJcVCnnh72Hz_YQ== cross_sell:true percents 20; upsells list returns it |
| Customize receipt emails: PUT /v2/products/{id} custom_receipt | api | partial ✓ | GET product custom_receipt "Thanks from AgentDrives test" |
| Physical goods with shipping: Look for a physical product type in API/CLI and /products/new | browser | blocked ✓ | /products/new offers Digital product, Course, E-book, Membership, Bundle, Commission, Call, Coffee; no Physical. CLI --type list has no physical. API sales has mark_as_shipped only. |
| Send email broadcasts: POST /v2/emails draft; POST /v2/emails/{id}/preview; POST /v2/emails/{id}/send | api | blocked ✓ | Draft sj-Pwt8UHoMTOarktt6Q5g== created (state draft); preview -> "A preview has been sent to your email." and the mail "AgentDrives test update" from drivemaster38@creators.gumroad.com arrived in our inbox; send -> HTTP 200 {"success":false,"message":"You are not eligible to publish or schedule emails. Please ensure you have made at least $100 in sales and received a payout."} |
| Automated email workflows: Create workflow in UI (Purchase trigger; Abandoned cart option disabled), add email via gumroad workflows add-email, publish in UI | browser | blocked ✓ | Workflow Nds6EPRyuSDfxzeEB7uQRQ== created in /workflows/new; CLI add-email -> email OFK8Pbf-ebeJ-WBbR79ZOQ== delay 1 day; workflows view emails_count 1 state draft; Publish now -> toast "You cannot publish a workflow until you have made at least $100 in total earnings and received a payout" |
| Pay step: Probe 402s (api base, x402./mpp./agents. subdomains), /.well-known/ucp, openapi.json, registries, pricing page | api | done ✓ | api.gumroad.com/v2/sales unauthenticated -> 401 Bearer (no 402); x402.gumroad.com 404; mpp.gumroad.com and agents.gumroad.com are creator storefronts (og:title Junior / agents), not payment endpoints; /.well-known/ucp 404; openapi.json 404; no gumroad entries in x402 Bazaar or mpp.dev/api/services; /pricing: "Direct sales: 10% + 50¢ per sale, $0 monthly" |
| Invite team members with roles: Settings > Team: invite the agent's inbox (our second inbox) as Marketing | browser | partial ✓ | Team members table lists the agent's inbox / Marketing; mail "Gumroad team invitation" with role Marketing arrived at an inbox with an accept link |
| Affiliates: /affiliates/new: add the agent's inbox at 20% on all products | browser | failed ✓ | Toast: "The affiliate has not created a Gumroad account with this email address." |
| Export sales CSV: Sales > Export > Download (last 30 days) | browser | done ✓ | sales_export.csv downloaded (1159 bytes): header Purchase ID, Item Name, ... License Key ... plus Totals row; no purchase rows, consistent with GET /v2/sales -> sales: [] |
| Sales and traffic analytics with UTM: Open Analytics (/dashboard/sales) | browser | partial ✓ | Analytics page shows Sales 0, Views 0, Total $0, Referrer and Locations tables "Nothing yet"; tabs Following/Sales/Churn/Links |
| Two-factor authentication: Settings > Password and authentication > Authenticator app: read setup key, compute TOTP (RFC 6238) ourselves, verify | browser | partial ✓ | After Verify the page showed 10 recovery codes; reload shows Authenticator app with Regenerate recovery codes / Remove buttons |
| Checkout and purchase a product: Checkout and purchase a product on our account | none | blocked | Every product stays unpublished: PUT /v2/products/{id}/enable and MCP publish_product -> "You must connect at least one payment method before you can publish this product for sale." GET /v2/sales -> sales: [] |
| Issue a refund: Issue a refund on our account | none | blocked | Every product stays unpublished: PUT /v2/products/{id}/enable and MCP publish_product -> "You must connect at least one payment method before you can publish this product for sale." GET /v2/sales -> sales: [] |
| Manage a customer subscription: Manage a customer subscription on our account | none | blocked | Every product stays unpublished: PUT /v2/products/{id}/enable and MCP publish_product -> "You must connect at least one payment method before you can publish this product for sale." GET /v2/sales -> sales: [] |
| License keys verify/enable/disable: License keys verify/enable/disable on our account | none | blocked | Every product stays unpublished: PUT /v2/products/{id}/enable and MCP publish_product -> "You must connect at least one payment method before you can publish this product for sale." GET /v2/sales -> sales: [] |
| Upload a new file version for buyers: Upload a new file version for buyers on our account | none | blocked | Every product stays unpublished: PUT /v2/products/{id}/enable and MCP publish_product -> "You must connect at least one payment method before you can publish this product for sale." GET /v2/sales -> sales: [] |
| Installment plans: Installment plans on our account | none | blocked | Every product stays unpublished: PUT /v2/products/{id}/enable and MCP publish_product -> "You must connect at least one payment method before you can publish this product for sale." GET /v2/sales -> sales: [] |
| Free trials on memberships: Free trials on memberships on our account | none | blocked | Every product stays unpublished: PUT /v2/products/{id}/enable and MCP publish_product -> "You must connect at least one payment method before you can publish this product for sale." GET /v2/sales -> sales: [] |
| Gift purchase: Gift purchase on our account | none | blocked | Every product stays unpublished: PUT /v2/products/{id}/enable and MCP publish_product -> "You must connect at least one payment method before you can publish this product for sale." GET /v2/sales -> sales: [] |
| PDF stamping: PDF stamping on our account | none | blocked | Every product stays unpublished: PUT /v2/products/{id}/enable and MCP publish_product -> "You must connect at least one payment method before you can publish this product for sale." GET /v2/sales -> sales: [] |
| Wishlist: Wishlist on our account | none | blocked | Every product stays unpublished: PUT /v2/products/{id}/enable and MCP publish_product -> "You must connect at least one payment method before you can publish this product for sale." GET /v2/sales -> sales: [] |
| Embed buy button: Embed buy button on our account | none | blocked | Every product stays unpublished: PUT /v2/products/{id}/enable and MCP publish_product -> "You must connect at least one payment method before you can publish this product for sale." GET /v2/sales -> sales: [] |
| Discord/Zoom/Calendar integrations: Discord/Zoom/Calendar integrations on our account | none | blocked | Every product stays unpublished: PUT /v2/products/{id}/enable and MCP publish_product -> "You must connect at least one payment method before you can publish this product for sale." GET /v2/sales -> sales: [] |
| Receive payouts: Connect a payout method in Settings > Payments; GET /v2/payouts | browser | blocked ✓ | /settings/payments form: PayPal Email, Individual/Business, First/Last name (as on ID), Address, City, Postal code, Country, Phone number, date of birth (Month/Day/Year), checkboxes for government photo ID and proof of residence. gumroad payouts list -> payouts: [] |
| Instant payout: Instant payout | none | blocked | No payout method connected (KYC form) and balance $0 |
| Custom domain: Settings > Advanced > Custom domain | none | skipped | Field exists on /settings/advanced (input Domain) |
| Edit or unpublish/delete a product: MCP unpublish_product; DELETE /v2/products/{id} for all 5 test products; list and get | api | done ✓ | unpublish_product -> published:false; DELETE x5 -> "The product was deleted successfully."; GET /v2/products -> products: []; GET /v2/products/KKpy... still 200 with deleted:true (soft delete) |
| Delete account: Settings > Advanced > Delete your Gumroad account > Yes, delete my account | browser | done ✓ | Redirected to https://gumroad.com/; GET /v2/user with the app token -> 401 "The access token was revoked"; CLI -> not_authenticated; https://drivemaster38.gumroad.com/ -> 404 |
Also in E-commerce.
ShopifyL2Gets in on its ownGumroad vs Shopify
BigCommerceL1Can't sign up on its ownGumroad vs BigCommerce
EcwidL1Can't sign up on its ownGumroad vs Ecwid