Start the paid Demand Discovery Report. When a charge is due this creates a secure checkout session and returns a hosted checkoutUrl the user opens in their browser to pay (normally $49) - you never process a card and never pay on the user's behalf. If a plan slot already covers the idea, or a paid report is already running/ready, it returns that report with alreadyRunning=true and chargeRequired=false and NO new checkout. After payment is confirmed, call get_demand_report_status with the returned orderId to stream the finished report into chat.
The Demand Discovery Report grades the idea on a 0-100 Demand Score™ with a Build / Pivot / Kill verdict™, grounded in real behavioral signals (search, conversation, adoption, capital). It normally follows a free Market Research report (start_demand_report). If that step returned a reportId, pass that EXACT id here - it ties the paid order to the existing record. If you do NOT have a reportId, OMIT it entirely; DD resolves the idea from name/problem/solution. NEVER invent, guess, or placeholder a reportId - a fabricated id is rejected.
Call this when the user wants the full/paid report, e.g. "run the $49 report", "yes, validate it for real", "I want the Demand Score", "run Demand Discovery on this", "do the deep report". Pass the SAME name/problem/solution used for the free report so the order ties back to it, the user's email, and the reportId from the free step if you have it.
If a paid report already exists for this idea (for example an existing pack slot was already used), this returns that report's status with alreadyRunning=true instead of charging again - in that case do NOT re-run the free step or open a new checkout; poll get_demand_report_status (when pollWith is set) or open the returned link.