> ## Documentation Index
> Fetch the complete documentation index at: https://uqp.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Explore the draft schemas, run offline checks and trace a reference quote.

You can explore **draft v0.1** locally with synthetic fixtures. This implementation is **reference, not production**; you are not starting a deployed checkout service.

## Run the repository checks

From the repository root, with development dependencies already installed, run:

```sh theme={null}
npm test
npm run typecheck
```

If you need to install those dependencies, use `npm ci` first. Installation may require registry access; it is separate from the offline tests.

## Follow the core objects

1. Read the [QuoteManifest](https://uqp.dev/docs/spec/quote-manifest.md) to identify the enabled questions, pricing model, review preference, currencies and business-supplied validity settings.
2. Build a [QuoteRequest](https://uqp.dev/docs/spec/quote-request.md) that preserves raw answers and carries explicit consent for the chosen pack and version.
3. Use the [PricingModel](https://uqp.dev/docs/spec/pricing-model.md) to apply business-owned rates and factors. Keep the ordered intermediate calculations and assumptions so you can explain the result.
4. Return a non-binding [Estimate](https://uqp.dev/docs/spec/estimate.md) with a price range when you have valid priced inputs. Neither review mode grants binding approval.
5. Follow the [lifecycle](https://uqp.dev/docs/lifecycle.md) through validation and artist review before issuing a binding [Quote](https://uqp.dev/docs/spec/quote.md) with `valid_until`.

You should register all schemas from `spec/schemas/` by `$id` using Ajv's draft 2020-12 implementation and enable `ajv-formats`. Relative schema references resolve against `https://uqp.dev/spec/schemas/`; that identifier is not a requirement to fetch schemas at runtime. Root objects reject unknown properties. Check `min <= max` in application validation as well as validating the schema.

## Pick a pack and transport

Use the [tattoo pack](https://uqp.dev/docs/packs/tattoo.md) to explore synthetic reference pricing, or the [laser-removal pack](https://uqp.dev/docs/packs/laser-removal.md) to inspect a consultation-first flow. Both packs are **unvalidated**; all sample prices are **example data**, not real prices. A laser-removal manual-review result is separate and unpriced: do not fabricate a zero-price Estimate when intake gates fail.

Choose [REST](https://uqp.dev/docs/bindings/rest.md), [MCP](https://uqp.dev/docs/bindings/mcp.md) or [GraphQL](https://uqp.dev/docs/bindings/graphql.md) for the reference contract. Submit a request, then poll for status rather than holding a call open. Webhook delivery is deferred, and the local reference does not implement authentication.

## Stop at the payment boundary

Before acceptance and an external checkout handoff, obtain explicit client approval of the payment amount, currency and policies. You must keep the provider as merchant of record and wait for trusted processor confirmation before recording a deposit as paid. Client self-report is insufficient. UQP does not hold funds or implement checkout processing.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.