Gumroad MCP by usefulapi

Read products, sales, subscribers and offer codes; verify, enable and disable product licenses.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
93%
Naming quality
78%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'gumroad_list_variant_categories' name length outside 3-30 rangein gumroad_list_variant_categories
  • LOWTool 'gumroad_list_resource_subscriptions' name length outside 3-30 rangein gumroad_list_resource_subscriptions

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,575Tokens (tool definitions)
~875 BTypical response size
Significant attention impact (2.01% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "gumroad": {
      "url": "https://gumroad.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://gumroad.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (20)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢gumroad_get_user

Get the authenticated user associated with the current Gumroad access token. Gumroad REST: GET /v2/user.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢gumroad_list_products

List all of the authenticated user's products. Gumroad REST: GET /v2/products.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢gumroad_get_product(id)

Get a single product by id. Gumroad REST: GET /v2/products/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The product id."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢gumroad_list_sales(after, before, email, product_id, order_id, ...)

List/filter the authenticated user's successful sales, most recent first. Supports date, email, product/order filters and cursor pagination via page_key. Gumroad REST: GET /v2/sales.

Input Schema

{
  "type": "object",
  "properties": {
    "after": {
      "description": "Only sales after this date, formatted YYYY-MM-DD.",
      "type": "string"
    },
    "before": {
      "description": "Only sales before this date, formatted YYYY-MM-DD.",
      "type": "string"
    },
    "email": {
      "description": "Filter to sales to this buyer email.",
      "type": "string"
    },
    "product_id": {
      "description": "Filter to sales of this product id.",
      "type": "string"
    },
    "order_id": {
      "description": "Filter to a specific order id.",
      "type": "string"
    },
    "page_key": {
      "description": "Pagination cursor — pass the value from a previous response's next_page_key to fetch the next page.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢gumroad_get_sale(id)

Get a single sale by id. Gumroad REST: GET /v2/sales/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The sale id."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢gumroad_list_subscribers(product_id, email)

List a membership/subscription product's subscribers, optionally filtered by buyer email. Gumroad REST: GET /v2/products/{product_id}/subscribers.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "description": "The membership product id."
    },
    "email": {
      "description": "Filter to the subscriber with this buyer email.",
      "type": "string"
    }
  },
  "required": [
    "product_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢gumroad_get_subscriber(id)

Get a single subscriber by id. Gumroad REST: GET /v2/subscribers/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The subscriber id."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢gumroad_list_offer_codes(product_id)

List a product's offer codes (discount codes). Gumroad REST: GET /v2/products/{product_id}/offer_codes.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "description": "The product id."
    }
  },
  "required": [
    "product_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢gumroad_get_offer_code(product_id, id)

Get a single offer code on a product by id. Gumroad REST: GET /v2/products/{product_id}/offer_codes/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "description": "The product id."
    },
    "id": {
      "type": "string",
      "description": "The offer code id."
    }
  },
  "required": [
    "product_id",
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢gumroad_list_variant_categories(product_id)

List a product's variant categories (option groups). Gumroad REST: GET /v2/products/{product_id}/variant_categories.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "description": "The product id."
    }
  },
  "required": [
    "product_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢gumroad_get_variant_category(product_id, id)

Get a single variant category on a product by id. Gumroad REST: GET /v2/products/{product_id}/variant_categories/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "description": "The product id."
    },
    "id": {
      "type": "string",
      "description": "The variant category id."
    }
  },
  "required": [
    "product_id",
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢gumroad_list_custom_fields(product_id)

List a product's custom fields (extra fields collected at checkout). Gumroad REST: GET /v2/products/{product_id}/custom_fields.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "description": "The product id."
    }
  },
  "required": [
    "product_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢gumroad_list_resource_subscriptions(resource_name)

List the authenticated user's resource subscriptions (webhooks) for a given resource/event name. Gumroad REST: GET /v2/resource_subscriptions.

Input Schema

{
  "type": "object",
  "properties": {
    "resource_name": {
      "type": "string",
      "enum": [
        "sale",
        "refund",
        "dispute",
        "dispute_won",
        "cancellation",
        "subscription_updated",
        "subscription_ended",
        "subscription_restarted"
      ],
      "description": "The resource/event name whose webhook subscriptions to list."
    }
  },
  "required": [
    "resource_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡gumroad_verify_license(product_id, license_key, increment_uses_count)

Verify a license key for a product (checks validity and returns purchase details). By default this does NOT increment the uses count; with increment_uses_count: true it records a use (a write). Gumroad REST: POST /v2/licenses/verify.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "description": "The product id the license belongs to."
    },
    "license_key": {
      "type": "string",
      "description": "The license key to verify."
    },
    "increment_uses_count": {
      "description": "Whether to increment the license's uses count (default false — pass true to record a use).",
      "type": "boolean"
    }
  },
  "required": [
    "product_id",
    "license_key"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴gumroad_enable_product(id)

Enable (publish) a product so it can be sold. Gumroad REST: PUT /v2/products/{id}/enable.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The product id to enable."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴gumroad_disable_product(id)

Disable (unpublish) a product so it can no longer be sold. Gumroad REST: PUT /v2/products/{id}/disable.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The product id to disable."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴gumroad_create_offer_code(product_id, name, amount_off, offer_type, max_purchase_count, ...)

Create a new offer code (discount code) on a product. Gumroad REST: POST /v2/products/{product_id}/offer_codes.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "description": "The product id to create the offer code on."
    },
    "name": {
      "type": "string",
      "description": "The discount code text buyers enter (e.g. LAUNCH20)."
    },
    "amount_off": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "The amount off — in cents when offer_type is 'cents', or a percentage when 'percent'."
    },
    "offer_type": {
      "description": "Whether amount_off is a fixed amount in 'cents' or a 'percent' discount (default 'cents').",
      "type": "string",
      "enum": [
        "cents",
        "percent"
      ]
    },
    "max_purchase_count": {
      "description": "Optional cap on how many times the offer code can be used.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "universal": {
      "description": "Whether the offer code applies to all of the user's products (default false).",
      "type": "boolean"
    }
  },
  "required": [
    "product_id",
    "name",
    "amount_off"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴gumroad_update_offer_code(product_id, id, offer_code, max_purchase_count)

Update an existing offer code on a product (its code text and/or its max purchase count). Gumroad REST: PUT /v2/products/{product_id}/offer_codes/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "description": "The product id the offer code belongs to."
    },
    "id": {
      "type": "string",
      "description": "The offer code id to update."
    },
    "offer_code": {
      "description": "New discount code text.",
      "type": "string"
    },
    "max_purchase_count": {
      "description": "New cap on how many times the offer code can be used.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "product_id",
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴gumroad_enable_license(product_id, license_key)

Enable a product's license key. Gumroad REST: PUT /v2/licenses/enable.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "description": "The product id the license belongs to."
    },
    "license_key": {
      "type": "string",
      "description": "The license key to enable."
    }
  },
  "required": [
    "product_id",
    "license_key"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴gumroad_disable_license(product_id, license_key)

Disable a product's license key. Gumroad REST: PUT /v2/licenses/disable.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "description": "The product id the license belongs to."
    },
    "license_key": {
      "type": "string",
      "description": "The license key to disable."
    }
  },
  "required": [
    "product_id",
    "license_key"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded20 tools
verifiedversion not recorded20 tools
verifiedversion not recorded20 tools
failed observationversion not recorded—
failed observationversion not recorded—