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.

Level 2 · Gets inAn agent gets in on its own but does less than half 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 mean

Driven 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
On its own, in a browser

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.

Official server · 1 of 3 calls worked

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–Sandbox
On its own, in a browser

How 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.

On its own, in a browser

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.

No plan to buy

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.

In on its own; 10% of the work done

The fixes, highest impact first

  1. Let drafts publish before payout setup
  2. Add server/discover and 28 Jul 2026 to MCP
  3. Return real HTTP status codes on errors
3 more fixes
  1. Publish an OpenAPI file and Markdown docs Step-by-step guide
  2. Add account deletion to the API
  3. 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).
See the example report
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

Driven · L2 · Gets in badge

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

  1. Work done10
  2. Reliability100
  3. Crash test–

For agents and builders.

The drive as data, every checkpoint and all 51 attempts.

How an agent connects · 7 tips
  • 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
  1. 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.
  2. Sign upIn a browserWeb form only (email + password) at /signup; no CAPTCHA met; no sign-up API.
  3. VerifyHeadlessConfirmation mail arrived in about 1 minute.
  4. 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.
  5. First callHeadlessGET /v2/user with the bearer token returned 200 with our account.
  6. 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.
  7. 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.
  8. CancelNot neededNothing to cancel: there is nothing to pay for.
  9. 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
Attempt log
CapabilityRouteResultEvidence
MCP discovery: Find MCP endpoint via PRM/AS metadata and /.well-known/mcp.jsonapidone ✓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 credentialsmcppartial ✓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-Usageapifailed ✓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/signupbrowserdone ✓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 docsapidone ✓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 mailapidone ✓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 tokenbrowserdone ✓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 tokenapidone ✓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/listmcpdone ✓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_productmcppartial ✓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}/enableapiblocked ✓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 backapidone ✓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 backapidone ✓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=500apidone ✓GET product customizable_price:true, formatted_price "$3+"
Discount codes: POST /v2/products/{id}/offer_codes ADTEST10 10% off; listapidone ✓offer_code WMyPRqVE7gz1OTfzzpLbEA== percent_off 10; GET offer_codes lists it
Custom checkout fields: POST /v2/products/{id}/custom_fields Companyapidone ✓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; listapipartial ✓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)browserdone ✓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 backclipartial ✓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 --draftclipartial ✓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 --draftcliblocked ✓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 --draftclipartial ✓Bundle MCPh-FS8ukC4UJ0Yt1SKxg== created published:false, bundle_products empty
Customize public seller profile: gumroad user update --name --bio; fetch public storefrontclidone ✓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 listclidone ✓upsell fzhtufmLJcVCnnh72Hz_YQ== cross_sell:true percents 20; upsells list returns it
Customize receipt emails: PUT /v2/products/{id} custom_receiptapipartial ✓GET product custom_receipt "Thanks from AgentDrives test"
Physical goods with shipping: Look for a physical product type in API/CLI and /products/newbrowserblocked ✓/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}/sendapiblocked ✓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 UIbrowserblocked ✓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 pageapidone ✓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 Marketingbrowserpartial ✓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 productsbrowserfailed ✓Toast: "The affiliate has not created a Gumroad account with this email address."
Export sales CSV: Sales > Export > Download (last 30 days)browserdone ✓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)browserpartial ✓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, verifybrowserpartial ✓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 accountnoneblockedEvery 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 accountnoneblockedEvery 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 accountnoneblockedEvery 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 accountnoneblockedEvery 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 accountnoneblockedEvery 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 accountnoneblockedEvery 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 accountnoneblockedEvery 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 accountnoneblockedEvery 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 accountnoneblockedEvery 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 accountnoneblockedEvery 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 accountnoneblockedEvery 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 accountnoneblockedEvery 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/payoutsbrowserblocked ✓/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 payoutnoneblockedNo payout method connected (KYC form) and balance $0
Custom domain: Settings > Advanced > Custom domainnoneskippedField 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 getapidone ✓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 accountbrowserdone ✓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.