> ## 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.

# MCP

> Expose UQP quotation tools through the draft MCP OpenRPC reference contract.

You can inspect the canonical source from spec/bindings/mcp/tools.json below. These are **reference, not production** bindings; nothing is deployed. No UCP conformance is claimed. Example data, not real prices.

You submit a request, poll validation, obtain trusted provider review and explicitly approve the exact deposit and policies before checkout handoff. The provider is merchant of record; UQP never holds funds. Only trusted processor confirmation can mark a deposit paid. See [the lifecycle](https://uqp.dev/docs/lifecycle.md).

## Authorization and deferred bindings

OAuth 2.0 is the intended authorization foundation for protected operations, but scopes, grant profiles, issuer discovery and token requirements are not defined. OAuth is not itself an identity protocol. Enforce business access and consent at the service boundary; schema validation is not authorization. Keep credentials and contact information out of answers. A2A is deferred; no UQP task mapping is defined.

See [checkout handoff](https://uqp.dev/docs/checkout-handoff.md) for deposit approval and payment boundaries.

## Source

```json theme={null}
{
  "tools": [
    {
      "name": "get_manifest",
      "description": "Read the tattoo QuoteManifest. Optional review_sla_seconds and routing_policy are canonical manifest fields.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "outputSchema": {
        "$ref": "../../schemas/quote-manifest.json"
      }
    },
    {
      "name": "request_quote",
      "description": "Submit answers; returns non-binding Estimate at PAYLOAD_SUBMITTED. Poll for validation and artist review. QuoteRequest supports neutral attribution, quantity and quantity_unit.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "idempotency_key": {
            "type": "string",
            "minLength": 1
          },
          "request": {
            "$ref": "../../schemas/quote-request.json"
          }
        },
        "required": [
          "idempotency_key",
          "request"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "state": {
            "$ref": "../../schemas/lifecycle.json"
          },
          "estimate": {
            "$ref": "../../schemas/estimate.json"
          },
          "quote": {
            "$ref": "../../schemas/quote.json"
          }
        },
        "required": [
          "id",
          "state",
          "estimate"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_quote",
      "description": "Poll a quote without holding a call open.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "state": {
            "$ref": "../../schemas/lifecycle.json"
          },
          "estimate": {
            "$ref": "../../schemas/estimate.json"
          },
          "quote": {
            "$ref": "../../schemas/quote.json"
          }
        },
        "required": [
          "id",
          "state",
          "estimate"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "accept_quote",
      "description": "Explicitly approve the reviewed Quote deposit amount and policies before checkout handoff. Never confirms payment. Quote includes optional deposit policy, minor-unit amounts, attribution and checkout_handoff via the canonical schemas.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "idempotency_key": {
            "type": "string",
            "minLength": 1
          },
          "approval": {
            "$ref": "../../schemas/common.json#/$defs/clientApproval"
          }
        },
        "required": [
          "id",
          "idempotency_key",
          "approval"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "state": {
            "$ref": "../../schemas/lifecycle.json"
          },
          "estimate": {
            "$ref": "../../schemas/estimate.json"
          },
          "quote": {
            "$ref": "../../schemas/quote.json"
          },
          "checkout": {
            "$ref": "../../schemas/common.json#/$defs/checkoutHandoff",
            "type": "object",
            "properties": {
              "url": {
                "type": "null"
              }
            }
          }
        },
        "required": [
          "id",
          "state",
          "estimate",
          "quote",
          "checkout"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "review_quote",
      "description": "Trusted artist-only operation: issue binding Quote with valid_until after review. Acceptance cannot perform review.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "idempotency_key": {
            "type": "string",
            "minLength": 1
          },
          "review": {
            "type": "object",
            "properties": {
              "valid_until": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "valid_until"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "id",
          "idempotency_key",
          "review"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "state": {
            "$ref": "../../schemas/lifecycle.json"
          },
          "estimate": {
            "$ref": "../../schemas/estimate.json"
          },
          "quote": {
            "$ref": "../../schemas/quote.json"
          }
        },
        "required": [
          "id",
          "state",
          "estimate"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "decline_quote",
      "description": "Decline a pending review or binding Quote.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "idempotency_key": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "id",
          "idempotency_key"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "state": {
            "$ref": "../../schemas/lifecycle.json"
          },
          "estimate": {
            "$ref": "../../schemas/estimate.json"
          },
          "quote": {
            "$ref": "../../schemas/quote.json"
          }
        },
        "required": [
          "id",
          "state",
          "estimate"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "resubmit_quote",
      "description": "Correct a MUTATION_REQUIRED payload on the same ID; returns a fresh non-binding Estimate at PAYLOAD_SUBMITTED. QuoteRequest supports neutral attribution, quantity and quantity_unit.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "idempotency_key": {
            "type": "string",
            "minLength": 1
          },
          "request": {
            "$ref": "../../schemas/quote-request.json"
          },
          "id": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "idempotency_key",
          "request",
          "id"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "state": {
            "$ref": "../../schemas/lifecycle.json"
          },
          "estimate": {
            "$ref": "../../schemas/estimate.json"
          },
          "quote": {
            "$ref": "../../schemas/quote.json"
          }
        },
        "required": [
          "id",
          "state",
          "estimate"
        ],
        "additionalProperties": false
      }
    }
  ]
}
```


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