create_coupon
Create a discount coupon for a product by providing product ID, coupon code, discount percentage, and optional validity period and affiliate.
Instructions
Create Coupon
Cria um cupom de desconto para um produto.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | ID do produto | |
| code | Yes | Código do cupom (máximo 25 caracteres) | |
| discount | Yes | Percentual de desconto (entre 0 e 0.99, exclusivo) | |
| start_date | No | Data de início de validade (timestamp em milissegundos) | |
| end_date | No | Data de fim de validade (timestamp em milissegundos) | |
| affiliate | No | ID do afiliado | |
| offer_ids | No | IDs das ofertas aplicáveis |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- src/hotmart_mcp/tools/coupons.py:11-45 (handler)Handler function for the 'create_coupon' tool. Sends a POST request to /products/api/v1/product/{product_id}/coupon with coupon details (code, discount, dates, affiliate, offer_ids) and returns the JSON response.
async def create_coupon( product_id: int, code: str, discount: float, start_date: Optional[int] = None, end_date: Optional[int] = None, affiliate: Optional[int] = None, offer_ids: Optional[list[int]] = None, ) -> str: """Create Coupon Cria um cupom de desconto para um produto. Args: product_id: ID do produto code: Código do cupom (máximo 25 caracteres) discount: Percentual de desconto (entre 0 e 0.99, exclusivo) start_date: Data de início de validade (timestamp em milissegundos) end_date: Data de fim de validade (timestamp em milissegundos) affiliate: ID do afiliado offer_ids: IDs das ofertas aplicáveis""" endpoint = f"/products/api/v1/product/{product_id}/coupon" body = {} body["code"] = code body["discount"] = discount if start_date is not None: body["start_date"] = start_date if end_date is not None: body["end_date"] = end_date if affiliate is not None: body["affiliate"] = affiliate if offer_ids is not None: body["offer_ids"] = offer_ids result = await get_client().post(endpoint, json=body) return json.dumps(result, indent=2) - Type annotations define the input schema for create_coupon: required fields (product_id, code, discount) and optional fields (start_date, end_date, affiliate, offer_ids).
product_id: int, code: str, discount: float, start_date: Optional[int] = None, end_date: Optional[int] = None, affiliate: Optional[int] = None, offer_ids: Optional[list[int]] = None, - src/hotmart_mcp/server.py:31-37 (registration)Automatic tool registration in _discover_and_register_tools(): iterates over modules in hotmart_mcp.tools package and registers every public async coroutine function (including create_coupon) via mcp.tool()(obj).
for name, obj in inspect.getmembers(module, iscoroutinefunction): if name.startswith("_"): continue mcp.tool()(obj) registered += 1 return registered - src/hotmart_mcp/tools/__init__.py:4-9 (registration)Re-exports all public symbols from the coupons module (including create_coupon) so they are discoverable by the server's registration logic.
from .coupons import * # noqa: F401,F403 from .negotiation import * # noqa: F401,F403 from .products import * # noqa: F401,F403 from .sales import * # noqa: F401,F403 from .subscriptions import * # noqa: F401,F403 from .tickets import * # noqa: F401,F403 - src/hotmart_mcp/_shared.py:10-14 (helper)Lazy singleton helper that provides the authenticated HTTP client (HotmartClient) used by create_coupon to make the POST request.
def get_client() -> HotmartClient: global _client if _client is None: _client = HotmartClient() return _client