{
"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
}
}
]
}