Skip to main content
You can use Universal Quoting Protocol (UQP) to describe services whose prices depend on the job: what you ask, how you calculate a range, and when a person makes the final decision. This is draft v0.1 (0.1-draft): reference, not production. You should expect the contract to change. Checkout processing and deployment are not included.

Separate questions, pricing and review

You describe enabled intake questions and the business-owned pricing model in a QuoteManifest. You collect raw answers and explicit consent in a QuoteRequest, rather than inventing missing customer details. You apply configured rates and enabled factors through a PricingModel. A priced Estimate is non-binding, even while review is pending. Only after artist review do you issue a binding Quote with valid_until. You can follow the lifecycle from intake through acceptance, decline or expiry. Before an external checkout handoff, you obtain explicit client approval of the amount, currency and policies. The provider is merchant of record; UQP never holds funds. Only trusted payment processor confirmation can mark a deposit paid.

Choose a reference binding

You exchange the same core objects through REST, MCP or GraphQL. You submit requests and poll for status; webhook delivery is deferred in the local reference. You must not treat the local reference as an authenticated production service.

Understand pack and evidence limits

You can explore the tattoo pack and laser-removal pack. Both are unvalidated. Treat sample prices as example data, not market evidence or a promise to a customer. Laser-removal estimates always require an in-person consultation and do not guarantee a treatment outcome or final price. You can inspect the questionnaire harness as an offline, synthetic demonstration and read the supplied evidence with its provenance and limits. Neither makes pack pricing validated. Browse the spec overview, start with the quickstart, or read how you can contribute.