{"$schema":"https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json","version":"1.0","protocolVersion":"2025-11-25","serverInfo":{"name":"capture-quote","title":"Capture Quote","version":"1.4.0"},"name":"com.capture/quote","description":"Exact, stored price quotes for digitizing videotapes, film reels, photos, slides, negatives, albums and discs at Capture (capture.com). Same prices as checkout; no account or PII required.","iconUrl":"https://www.capture.com/favicon.png","documentationUrl":"https://www.capture.com/developers","websiteUrl":"https://www.capture.com","transport":{"type":"streamable-http","endpoint":"/mcp","url":"https://www.capture.com/mcp","stateless":true},"capabilities":{"tools":{"listChanged":true}},"authentication":{"required":false,"schemes":[]},"instructions":"Tools for pricing media digitization (videotapes, film reels, photos, slides, negatives, albums, discs) at Capture (capture.com). Call list_digitization_formats to see exact format names, units and quality tiers, then get_digitization_quote for an itemized estimate. If the user has not said which quality they want, either call compare_digitization_options to get one total per tier (SD/FHD/UHD for video, 2K/4K/6K for photos) and ask them to choose, or read the alternatives block that get_digitization_quote returns whenever quality was omitted. Do not present a default-tier total as the only option. When usbDrives is omitted the quote says how many drives it assumed and what one more costs; confirm that with the user too. Film reels: the per-reel price covers up to 100 ft; longer reels add $0.20 per extra foot, and 50 ft (3\") is assumed when reelFeet is omitted — ask for reel sizes when the user has film. Quotes are USD estimates before sales tax for US orders (country \"US\"); relay the caveats and 2–3 week turnaround. Promo codes are never applied here. Every quote is stored for 30 days under its quoteId (see expiresAt). To let the user continue, share the returned quoteUrl: it reopens that exact stored quote in the quote tool with items, quantities, quality and USB count filled in. Use retrieve_digitization_quote with a quoteId to re-read a stored quote later; it reports whether catalog prices changed since (pricesChanged/priceChanges) and never silently re-prices. If the user wants the quote in their inbox, call save_digitization_quote with the quoteId and their first name, email and phone — only after they have explicitly agreed to share those details and to receive the emailed quote with follow-ups. It returns their single-use discount code and a quoteUrl with it pre-applied. If the user shares a US ZIP code, pass it as postalCode to get an all-in figure (estimatedTotal) with estimated sales tax and inbound shipping options; present it clearly as an estimate based on ZIP only. Relay every entry in notes — it flags cases the quote tool can only approximate. Questions about a quote can go to supportUrl.","tools":[{"name":"list_digitization_formats","title":"List digitization formats","description":"Every media format Capture currently digitizes with its exact name, aliases, unit, quality tiers and per-unit USD prices, plus any minimum-charge tier. Film formats include a `film` object explaining footage pricing (base price covers up to 100 ft, per-foot overage, default reel length). Only formats that can be quoted and reopened on capture.com are listed (audio cassettes are not yet offered).","inputSchema":{"type":"object","properties":{}},"outputSchema":{"type":"object","properties":{"currency":{"type":"string","const":"USD"},"formats":{"type":"array","items":{"type":"object","properties":{"format":{"type":"string","description":"Exact catalog name; send this (or an alias) as items[].format."},"category":{"type":"string","description":"Media family: videotapes, film, photos, slides, negatives, digital_media."},"unit":{"type":"string","description":"What quantity counts: tape, reel, photo, slide, negative, album, disc/device."},"qualities":{"type":"array","items":{"type":"object","properties":{"quality":{"type":"string"},"unitPrice":{"type":"number","description":"USD per unit at this quality."},"default":{"type":"boolean","description":"True for the tier used when quality is omitted."}},"required":["quality","unitPrice","default"],"additionalProperties":false},"minItems":1},"tiered":{"type":"object","properties":{"startingPrice":{"type":"number","description":"Flat USD charge that covers up to minQuantity units."},"minQuantity":{"type":"integer"}},"required":["startingPrice","minQuantity"],"additionalProperties":false,"description":"Photos, slides, negatives, albums: a flat starting price covers the first minQuantity units, then unitPrice per extra unit."},"film":{"type":"object","properties":{"baseFeet":{"type":"integer","description":"Footage covered by the per-reel price."},"overagePerFoot":{"type":"number","description":"USD added per foot beyond baseFeet."},"defaultReelFeet":{"type":"integer","description":"Footage assumed when items[].reelFeet is omitted."},"pricing":{"type":"string","description":"The footage rule in one sentence, for relaying to the user."}},"required":["baseFeet","overagePerFoot","defaultReelFeet","pricing"],"additionalProperties":false,"description":"Film reels only: how footage changes the per-reel charge."},"aliases":{"type":"array","items":{"type":"string"},"description":"Colloquial names also accepted as items[].format."}},"required":["format","category","unit","qualities","aliases"],"additionalProperties":false}}},"required":["currency","formats"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":false}},{"name":"get_digitization_quote","title":"Get digitization quote","description":"Itemized price estimate for digitizing one or more formats, stored for 30 days. Returns quoteId, expiresAt, per-line prices, USB and return-shipping charges, total before tax (country \"US\"), turnaround, caveats, catalogVersion/pricesEffectiveAt, supportUrl, and a quoteUrl that reopens this exact stored quote in capture.com's quote tool (give the user that link to continue; any difference the tool's simpler options introduce is listed in notes). Same prices as capture.com checkout. When an item's quality is omitted the default is used (SD video, 2K photos) and an alternatives block lists the other tiers with their totals and a short description — ask the user to choose. When usbDrives is omitted, usbAssumption states the drives assumed and the cost of one more. Pass an optional US postalCode to also get estimatedTax (based on ZIP only), inboundShipping options (own box = $0, prepaid label from the catalog) and an all-in estimatedTotal; if tax cannot be estimated the quote still returns with a note.","inputSchema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"format":{"type":"string","minLength":1,"maxLength":80,"description":"Media format, fuzzy names accepted (e.g. \"VHS\", \"hi8\", \"super 8 film\", \"old photos\", \"35mm slides\")."},"quantity":{"type":"number","minimum":1,"maximum":100000,"description":"Number of tapes, reels, photos, slides, albums or discs (whole number)."},"quality":{"type":"string","maxLength":80,"description":"Video: SD (default), FHD, UHD. Photos: 2K (default), 4K, 6K. Slides/negatives are always 4K."},"reelFeet":{"type":"number","minimum":1,"maximum":5000,"description":"Film only: feet per reel (3\" = 50, 5\" = 200, 7\" = 400). Defaults to 50. The per-reel price covers up to 100 ft; longer reels add $0.20 per extra foot."},"photosPerAlbum":{"type":"number","minimum":1,"maximum":2000,"description":"Albums/scrapbooks only: approximate photos per album."}},"required":["format","quantity"],"additionalProperties":false},"minItems":1,"maxItems":25,"description":"One entry per format being digitized."},"usbDrives":{"type":"number","minimum":0,"maximum":10,"description":"Optional USB drives. Cloud delivery is always included; FHD/UHD video automatically includes at least one drive. Leave it out and the quote states the assumption it made plus the price to add one."},"postalCode":{"type":"string","maxLength":80,"description":"Optional US ZIP code (5 digits, e.g. \"90210\"). When given, the response adds estimatedTax, inboundShipping options and an all-in estimatedTotal. US only; other postal codes are rejected."},"country":{"type":"string","maxLength":80,"description":"Optional, only \"US\" is accepted. Provided for clarity when passing postalCode."}},"required":["items"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"outputSchema":{"type":"object","properties":{"currency":{"type":"string","const":"USD"},"lines":{"type":"array","items":{"type":"object","properties":{"format":{"type":"string","description":"Resolved catalog format name."},"category":{"type":"string"},"quality":{"type":["string","null"],"description":"Quality tier priced; null when the format has a single price."},"quantity":{"type":"integer"},"unit":{"type":"string"},"unitPrice":{"type":"number","description":"USD per unit after footage/tier adjustments."},"subtotal":{"type":"number","description":"USD for this line."},"note":{"type":"string","description":"Per-line pricing detail, e.g. footage per film reel or a minimum-charge tier."}},"required":["format","category","quality","quantity","unit","unitPrice","subtotal"],"additionalProperties":false},"minItems":1},"usb":{"anyOf":[{"type":"object","properties":{"quantity":{"type":"integer"},"unitPrice":{"type":"number"},"subtotal":{"type":"number"}},"required":["quantity","unitPrice","subtotal"],"additionalProperties":false},{"type":"null"}],"description":"USB drive charge, or null for cloud-only delivery."},"returnShipping":{"type":"object","properties":{"price":{"type":"number"}},"required":["price"],"additionalProperties":false,"description":"Return shipping of the originals, included in total."},"mediaSubtotal":{"type":"number","description":"Sum of all line subtotals, USD."},"total":{"type":"number","description":"Estimated total before sales tax, USD."},"turnaround":{"type":"object","properties":{"minDays":{"type":"integer"},"maxDays":{"type":"integer"},"description":{"type":"string"}},"required":["minDays","maxDays","description"],"additionalProperties":false},"notes":{"type":"array","items":{"type":"string"},"description":"Pricing explanations and any approximations the quote tool link introduces; relay every entry."},"caveats":{"type":"array","items":{"type":"string"},"description":"Things that can change the final charge; relay to the user."},"alternatives":{"type":"array","items":{"type":"object","properties":{"family":{"type":"string","enum":["video","photo"],"description":"video: tapes, film, discs (SD/FHD/UHD). photo: photos, slides, negatives, albums (2K/4K/6K)."},"formats":{"type":"array","items":{"type":"string"},"description":"Formats in this quote whose quality was omitted."},"assumedQuality":{"type":"string","description":"Tier the quote used for them."},"options":{"type":"array","items":{"type":"object","properties":{"quality":{"type":"string"},"description":{"type":"string","description":"Short \"what you get\" wording for this tier, for relaying to the user."},"total":{"type":"number","description":"Whole-quote total before tax at this tier, USB rule and return shipping applied."},"delta":{"type":"number","description":"total minus the reference total (the returned quote for alternatives; the family default tier for comparisons)."},"usb":{"anyOf":[{"$ref":"#/properties/usb/anyOf/0"},{"type":"null"}],"description":"USB charge at this tier, or null for cloud-only."}},"required":["quality","description","total","delta","usb"],"additionalProperties":false},"minItems":1,"description":"The other tiers, each with the total if those formats were switched to it."}},"required":["family","formats","assumedQuality","options"],"additionalProperties":false},"description":"Present only when quality was omitted for a format with more than one tier: the other tiers with their totals. Ask the user to choose."},"usbAssumption":{"type":"object","properties":{"quantity":{"type":"integer","description":"USB drives the quote assumed."},"reason":{"type":"string"},"addOne":{"type":"object","properties":{"unitPrice":{"type":"number"},"total":{"type":"number","description":"Quote total with one more drive than assumed."}},"required":["unitPrice","total"],"additionalProperties":false}},"required":["quantity","reason","addOne"],"additionalProperties":false,"description":"Present only when usbDrives was omitted: the drives assumed and the cost of one more."},"postalCode":{"type":"string","description":"ZIP5 the all-in estimate was based on; only present when the request had a postalCode."},"estimatedTax":{"anyOf":[{"type":"object","properties":{"amount":{"type":"number","description":"Estimated sales tax, USD."},"taxableSubtotal":{"type":"number","description":"Portion of total that is subject to sales tax (USB drives; digitization itself is not taxed)."},"ratePercent":{"type":["number","null"],"description":"Combined rate applied, in percent; null when nothing in the quote is taxable."},"basis":{"type":"string","description":"How the estimate was derived; relay to the user."},"isEstimate":{"type":"boolean","const":true}},"required":["amount","taxableSubtotal","ratePercent","basis","isEstimate"],"additionalProperties":false},{"type":"null"}],"description":"Only with postalCode. null when Stripe Tax could not be reached (see notes)."},"inboundShipping":{"type":"object","properties":{"options":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["own_box","prepaid_label"]},"name":{"type":"string"},"description":{"type":"string"},"serviceName":{"type":"string","description":"Exact catalog service chosen at checkout to get this option."},"price":{"type":"number","description":"Added to total when this option is chosen (0 = already included)."},"estimatedTotal":{"type":["number","null"],"description":"total + price + estimated tax; null when tax could not be estimated."}},"required":["id","name","description","serviceName","price","estimatedTotal"],"additionalProperties":false},"minItems":1},"note":{"type":"string"}},"required":["options","note"],"additionalProperties":false,"description":"Only with postalCode: how the customer gets media to us, with the price of each option."},"estimatedTotal":{"type":["number","null"],"description":"Only with postalCode: total + estimated tax when shipping in the customer's own box; null when tax could not be estimated."},"quoteUrl":{"type":"string","format":"uri","description":"Reopens this exact stored quote in capture.com's quote tool (/free-quote?quote=<quoteId>). Pass through unchanged."},"checkoutUrl":{"type":"string","format":"uri","description":"Plain link to start an order from scratch."},"supportUrl":{"type":"string","format":"uri","description":"Where to send questions about this quote."},"generatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of this estimate."},"quoteId":{"type":"string","pattern":"^q_[a-z0-9]{12}$","description":"Stable id of the stored quote; use it with retrieve_digitization_quote."},"source":{"type":"string","enum":["api","api_get","mcp","webmcp"],"description":"Which agent surface created the quote: api (POST JSON), api_get (GET query string), mcp (hosted MCP server), webmcp (in-page tools)."},"country":{"type":"string","const":"US","description":"Prices are USD for orders shipped within the United States, before sales tax."},"catalogVersion":{"type":"string","description":"Fingerprint of the price list the quote was priced against."},"pricesEffectiveAt":{"type":"string","format":"date-time","description":"When those prices were in effect (the moment the quote was priced)."},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time","description":"When the stored quote stops being retrievable (30 days after creation)."}},"required":["currency","lines","usb","returnShipping","mediaSubtotal","total","turnaround","notes","caveats","quoteUrl","checkoutUrl","supportUrl","generatedAt","quoteId","source","country","catalogVersion","pricesEffectiveAt","createdAt","expiresAt"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":false}},{"name":"compare_digitization_options","title":"Compare quality tiers","description":"Same input as get_digitization_quote, but returns one complete total per quality tier for each media family present — SD / FHD / UHD for video, 2K / 4K / 6K for photos, slides, negatives and albums — each with the USB drive checkout requires for HD video already included, a short description of what the tier delivers, and the difference from the default tier. Use it to ask the customer which quality they want instead of assuming one. Prices match capture.com checkout; sales tax excluded.","inputSchema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"format":{"type":"string","minLength":1,"maxLength":80,"description":"Media format, fuzzy names accepted (e.g. \"VHS\", \"hi8\", \"super 8 film\", \"old photos\", \"35mm slides\")."},"quantity":{"type":"number","minimum":1,"maximum":100000,"description":"Number of tapes, reels, photos, slides, albums or discs (whole number)."},"quality":{"type":"string","maxLength":80,"description":"Video: SD (default), FHD, UHD. Photos: 2K (default), 4K, 6K. Slides/negatives are always 4K."},"reelFeet":{"type":"number","minimum":1,"maximum":5000,"description":"Film only: feet per reel (3\" = 50, 5\" = 200, 7\" = 400). Defaults to 50. The per-reel price covers up to 100 ft; longer reels add $0.20 per extra foot."},"photosPerAlbum":{"type":"number","minimum":1,"maximum":2000,"description":"Albums/scrapbooks only: approximate photos per album."}},"required":["format","quantity"],"additionalProperties":false},"minItems":1,"maxItems":25,"description":"One entry per format being digitized."},"usbDrives":{"type":"number","minimum":0,"maximum":10,"description":"Optional USB drives. Cloud delivery is always included; FHD/UHD video automatically includes at least one drive. Leave it out and the quote states the assumption it made plus the price to add one."},"postalCode":{"type":"string","maxLength":80,"description":"Optional US ZIP code (5 digits, e.g. \"90210\"). When given, the response adds estimatedTax, inboundShipping options and an all-in estimatedTotal. US only; other postal codes are rejected."},"country":{"type":"string","maxLength":80,"description":"Optional, only \"US\" is accepted. Provided for clarity when passing postalCode."}},"required":["items"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"outputSchema":{"type":"object","properties":{"currency":{"type":"string","const":"USD"},"asRequested":{"type":"object","properties":{"total":{"type":"number","description":"Total before tax for the request exactly as sent (defaults applied where quality was omitted)."},"qualities":{"type":"array","items":{"type":"object","properties":{"format":{"type":"string"},"quality":{"type":["string","null"]}},"required":["format","quality"],"additionalProperties":false}}},"required":["total","qualities"],"additionalProperties":false},"families":{"type":"array","items":{"type":"object","properties":{"family":{"type":"string","enum":["video","photo"],"description":"video: tapes, film, discs (SD/FHD/UHD). photo: photos, slides, negatives, albums (2K/4K/6K)."},"formats":{"type":"array","items":{"type":"string"}},"defaultQuality":{"type":"string"},"tiers":{"type":"array","items":{"type":"object","properties":{"quality":{"type":"string"},"description":{"type":"string","description":"Short \"what you get\" wording for this tier, for relaying to the user."},"total":{"type":"number","description":"Whole-quote total before tax at this tier, USB rule and return shipping applied."},"delta":{"type":"number","description":"total minus the reference total (the returned quote for alternatives; the family default tier for comparisons)."},"usb":{"anyOf":[{"type":"object","properties":{"quantity":{"type":"integer"},"unitPrice":{"type":"number"},"subtotal":{"type":"number"}},"required":["quantity","unitPrice","subtotal"],"additionalProperties":false},{"type":"null"}],"description":"USB charge at this tier, or null for cloud-only."},"default":{"type":"boolean","description":"True for the tier used when quality is omitted."},"notOfferedFor":{"type":"array","items":{"type":"string"},"description":"Formats in this family that do not offer this tier; they stay at the requested/default quality in this total."}},"required":["quality","description","total","delta","usb","default","notOfferedFor"],"additionalProperties":false},"minItems":1}},"required":["family","formats","defaultQuality","tiers"],"additionalProperties":false},"description":"One entry per media family present; a family whose formats offer a single tier lists just that tier."},"turnaround":{"type":"object","properties":{"minDays":{"type":"integer"},"maxDays":{"type":"integer"},"description":{"type":"string"}},"required":["minDays","maxDays","description"],"additionalProperties":false},"notes":{"type":"array","items":{"type":"string"}},"caveats":{"type":"array","items":{"type":"string"}},"generatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of this estimate."}},"required":["currency","asRequested","families","turnaround","notes","caveats","generatedAt"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":false}},{"name":"retrieve_digitization_quote","title":"Retrieve a stored digitization quote","description":"Re-read a quote previously returned by get_digitization_quote using its quoteId. Returns the exact stored lines, total, notes, expiresAt and quoteUrl, plus pricesChanged/priceChanges/currentPricing when catalog prices moved since it was created (the stored quote is never re-priced), and status.leadSaved/orderPlaced flags when the customer has continued on the site. Unknown or expired IDs return an error asking for a fresh quote.","inputSchema":{"type":"object","properties":{"quoteId":{"type":"string","minLength":1,"maxLength":32,"description":"The quoteId from a previous get_digitization_quote call (e.g. \"q_k3m8x2p7q4rs\")."}},"required":["quoteId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"outputSchema":{"type":"object","properties":{"currency":{"type":"string","const":"USD"},"lines":{"type":"array","items":{"type":"object","properties":{"format":{"type":"string","description":"Resolved catalog format name."},"category":{"type":"string"},"quality":{"type":["string","null"],"description":"Quality tier priced; null when the format has a single price."},"quantity":{"type":"integer"},"unit":{"type":"string"},"unitPrice":{"type":"number","description":"USD per unit after footage/tier adjustments."},"subtotal":{"type":"number","description":"USD for this line."},"note":{"type":"string","description":"Per-line pricing detail, e.g. footage per film reel or a minimum-charge tier."}},"required":["format","category","quality","quantity","unit","unitPrice","subtotal"],"additionalProperties":false},"minItems":1},"usb":{"anyOf":[{"type":"object","properties":{"quantity":{"type":"integer"},"unitPrice":{"type":"number"},"subtotal":{"type":"number"}},"required":["quantity","unitPrice","subtotal"],"additionalProperties":false},{"type":"null"}],"description":"USB drive charge, or null for cloud-only delivery."},"returnShipping":{"type":"object","properties":{"price":{"type":"number"}},"required":["price"],"additionalProperties":false,"description":"Return shipping of the originals, included in total."},"mediaSubtotal":{"type":"number","description":"Sum of all line subtotals, USD."},"total":{"type":"number","description":"Estimated total before sales tax, USD."},"turnaround":{"type":"object","properties":{"minDays":{"type":"integer"},"maxDays":{"type":"integer"},"description":{"type":"string"}},"required":["minDays","maxDays","description"],"additionalProperties":false},"notes":{"type":"array","items":{"type":"string"},"description":"Pricing explanations and any approximations the quote tool link introduces; relay every entry."},"caveats":{"type":"array","items":{"type":"string"},"description":"Things that can change the final charge; relay to the user."},"alternatives":{"type":"array","items":{"type":"object","properties":{"family":{"type":"string","enum":["video","photo"],"description":"video: tapes, film, discs (SD/FHD/UHD). photo: photos, slides, negatives, albums (2K/4K/6K)."},"formats":{"type":"array","items":{"type":"string"},"description":"Formats in this quote whose quality was omitted."},"assumedQuality":{"type":"string","description":"Tier the quote used for them."},"options":{"type":"array","items":{"type":"object","properties":{"quality":{"type":"string"},"description":{"type":"string","description":"Short \"what you get\" wording for this tier, for relaying to the user."},"total":{"type":"number","description":"Whole-quote total before tax at this tier, USB rule and return shipping applied."},"delta":{"type":"number","description":"total minus the reference total (the returned quote for alternatives; the family default tier for comparisons)."},"usb":{"anyOf":[{"$ref":"#/properties/usb/anyOf/0"},{"type":"null"}],"description":"USB charge at this tier, or null for cloud-only."}},"required":["quality","description","total","delta","usb"],"additionalProperties":false},"minItems":1,"description":"The other tiers, each with the total if those formats were switched to it."}},"required":["family","formats","assumedQuality","options"],"additionalProperties":false},"description":"Present only when quality was omitted for a format with more than one tier: the other tiers with their totals. Ask the user to choose."},"usbAssumption":{"type":"object","properties":{"quantity":{"type":"integer","description":"USB drives the quote assumed."},"reason":{"type":"string"},"addOne":{"type":"object","properties":{"unitPrice":{"type":"number"},"total":{"type":"number","description":"Quote total with one more drive than assumed."}},"required":["unitPrice","total"],"additionalProperties":false}},"required":["quantity","reason","addOne"],"additionalProperties":false,"description":"Present only when usbDrives was omitted: the drives assumed and the cost of one more."},"postalCode":{"type":"string","description":"ZIP5 the all-in estimate was based on; only present when the request had a postalCode."},"estimatedTax":{"anyOf":[{"type":"object","properties":{"amount":{"type":"number","description":"Estimated sales tax, USD."},"taxableSubtotal":{"type":"number","description":"Portion of total that is subject to sales tax (USB drives; digitization itself is not taxed)."},"ratePercent":{"type":["number","null"],"description":"Combined rate applied, in percent; null when nothing in the quote is taxable."},"basis":{"type":"string","description":"How the estimate was derived; relay to the user."},"isEstimate":{"type":"boolean","const":true}},"required":["amount","taxableSubtotal","ratePercent","basis","isEstimate"],"additionalProperties":false},{"type":"null"}],"description":"Only with postalCode. null when Stripe Tax could not be reached (see notes)."},"inboundShipping":{"type":"object","properties":{"options":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["own_box","prepaid_label"]},"name":{"type":"string"},"description":{"type":"string"},"serviceName":{"type":"string","description":"Exact catalog service chosen at checkout to get this option."},"price":{"type":"number","description":"Added to total when this option is chosen (0 = already included)."},"estimatedTotal":{"type":["number","null"],"description":"total + price + estimated tax; null when tax could not be estimated."}},"required":["id","name","description","serviceName","price","estimatedTotal"],"additionalProperties":false},"minItems":1},"note":{"type":"string"}},"required":["options","note"],"additionalProperties":false,"description":"Only with postalCode: how the customer gets media to us, with the price of each option."},"estimatedTotal":{"type":["number","null"],"description":"Only with postalCode: total + estimated tax when shipping in the customer's own box; null when tax could not be estimated."},"quoteUrl":{"type":"string","format":"uri","description":"Reopens this exact stored quote in capture.com's quote tool (/free-quote?quote=<quoteId>). Pass through unchanged."},"checkoutUrl":{"type":"string","format":"uri","description":"Plain link to start an order from scratch."},"supportUrl":{"type":"string","format":"uri","description":"Where to send questions about this quote."},"generatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of this estimate."},"quoteId":{"type":"string","pattern":"^q_[a-z0-9]{12}$","description":"Stable id of the stored quote; use it with retrieve_digitization_quote."},"source":{"type":"string","enum":["api","api_get","mcp","webmcp"],"description":"Which agent surface created the quote: api (POST JSON), api_get (GET query string), mcp (hosted MCP server), webmcp (in-page tools)."},"country":{"type":"string","const":"US","description":"Prices are USD for orders shipped within the United States, before sales tax."},"catalogVersion":{"type":"string","description":"Fingerprint of the price list the quote was priced against."},"pricesEffectiveAt":{"type":"string","format":"date-time","description":"When those prices were in effect (the moment the quote was priced)."},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time","description":"When the stored quote stops being retrievable (30 days after creation)."},"request":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"format":{"type":"string"},"quantity":{"type":"number"},"quality":{"type":"string"},"reelFeet":{"type":"number"},"photosPerAlbum":{"type":"number"}},"required":["format","quantity"],"additionalProperties":false}},"usbDrives":{"type":"number"},"postalCode":{"type":"string"}},"required":["items"],"additionalProperties":false,"description":"The original normalized request."},"prefill":{"type":"object","properties":{"selectedCategories":{"type":"array","items":{"type":"string"}},"quantities":{"type":"object","additionalProperties":{"anyOf":[{"type":"number"},{"type":"object","additionalProperties":{"type":"number"}}]}},"usbQty":{"type":"number"},"categoryQualities":{"type":"object","additionalProperties":{"type":"string"}}},"required":["selectedCategories","quantities","categoryQualities"],"additionalProperties":false,"description":"Quote-tool state that quoteUrl reopens (one quality per media type, standard reel sizes)."},"approximations":{"type":"array","items":{"type":"string"},"description":"Where the quote tool is coarser than this quote; also shown to the customer."},"currentCatalogVersion":{"type":"string","description":"Live price-list fingerprint at retrieval time."},"pricesChanged":{"type":"boolean","description":"True when pricing the same request today gives a different answer. The stored quote above is never re-priced."},"priceChanges":{"type":"array","items":{"type":"string"},"description":"Human-readable per-line differences; empty when unchanged."},"currentPricing":{"anyOf":[{"type":"object","properties":{"lines":{"type":"array","items":{"$ref":"#/properties/lines/items"}},"usb":{"anyOf":[{"$ref":"#/properties/usb/anyOf/0"},{"type":"null"}]},"returnShipping":{"type":"object","properties":{"price":{"type":"number"}},"required":["price"],"additionalProperties":false},"mediaSubtotal":{"type":"number"},"total":{"type":"number"}},"required":["lines","usb","returnShipping","mediaSubtotal","total"],"additionalProperties":false},{"type":"null"}],"description":"The same request priced at today's rates; null when unchanged."},"status":{"type":"object","properties":{"leadSaved":{"type":"boolean","description":"Customer saved the reopened quote with contact details."},"orderPlaced":{"type":"boolean","description":"Customer placed an order from the reopened quote."}},"required":["leadSaved","orderPlaced"],"additionalProperties":false,"description":"Progress flags only; lead/order identifiers are never exposed."}},"required":["currency","lines","usb","returnShipping","mediaSubtotal","total","turnaround","notes","caveats","quoteUrl","checkoutUrl","supportUrl","generatedAt","quoteId","source","country","catalogVersion","pricesEffectiveAt","createdAt","expiresAt","request","prefill","approximations","currentCatalogVersion","pricesChanged","priceChanges","currentPricing","status"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":false}},{"name":"save_digitization_quote","title":"Save quote to the customer's inbox","description":"Save a stored quote (by quoteId) under the customer's name, email and phone. Capture emails them the itemized quote with a personal single-use discount code (10–25% off, tiered by quote total, valid 14 days) and sends a short follow-up sequence by email/SMS; returns discountCode, discountPercent, discountExpiresAt, emailSentTo, and quoteUrl/checkoutUrl with the code pre-applied. This shares personal data with Capture and starts marketing follow-up, so before calling it ask the user for their first name, email and phone and get explicit consent to send the quote and follow-ups; never call it speculatively or with guessed details. Phone is required (Capture's quote form requires it too). Safe to repeat: calling it again for the same quote and email returns the existing code (alreadySaved: true) without a second email or duplicate record. Unknown or expired quoteIds return an error asking for a fresh quote; validation errors name the offending field. Use notes for context the team should know (formats, deadlines, special handling). This does not place an order or charge anything.","inputSchema":{"type":"object","properties":{"quoteId":{"type":"string","minLength":1,"maxLength":32,"description":"The quoteId from get_digitization_quote (e.g. \"q_k3m8x2p7q4rs\")."},"firstName":{"type":"string","minLength":1,"maxLength":80,"description":"Customer's first name, as they'd like to be addressed."},"email":{"type":"string","format":"email","maxLength":254,"description":"Where to send the quote and discount code."},"phone":{"type":"string","minLength":7,"maxLength":30,"description":"Customer's phone number (required; used for order questions and SMS follow-up they've agreed to)."},"notes":{"type":"string","maxLength":1000,"description":"Optional context for Capture's team (e.g. 'about 20 tapes are PAL', 'wants everything before December'). Not emailed to the customer."}},"required":["quoteId","firstName","email","phone"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"outputSchema":{"type":"object","properties":{"quoteId":{"type":"string","pattern":"^q_[a-z0-9]{12}$"},"discountCode":{"type":["string","null"],"description":"Single-use percent-off code emailed to the customer; enter at checkout. null only if code generation failed (the quote email still went out)."},"discountPercent":{"type":["number","null"],"description":"Percent off the order the code gives (tiered by quote total)."},"discountExpiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"When the discount code stops working (14 days after it was issued)."},"emailSentTo":{"type":"string","description":"Address the quote and code were sent to."},"quoteUrl":{"type":"string","format":"uri","description":"Reopens the saved quote on capture.com with the discount pre-applied. Pass through unchanged."},"checkoutUrl":{"type":"string","format":"uri","description":"Starts checkout with the discount pre-applied."},"alreadySaved":{"type":"boolean","description":"True when this quote had already been saved for this email: the existing code is returned and no second email is sent."}},"required":["quoteId","discountCode","discountPercent","discountExpiresAt","emailSentTo","quoteUrl","checkoutUrl","alreadySaved"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}}],"resources":[],"prompts":[],"_meta":{"com.capture/rest":{"openapi":"https://www.capture.com/api/quote/openapi.json","getExample":"https://www.capture.com/api/quote/calculate?items=MiniDV:16,VHS:5&postalCode=94110","note":"The same tools are also a plain JSON API (GET or POST) — see openapi. Browsing agents that cannot POST should use the GET form."},"com.capture/registry":{"name":"com.capture/quote","serverJson":"https://www.capture.com/.well-known/mcp/server.json"},"com.capture/rateLimit":{"perMinuteDefault":60,"perMinuteKnownAssistants":600,"keyedBy":"ip + user-agent family"},"com.capture/connect":{"chatgpt":"ChatGPT → Settings → Connectors → Create (Developer mode): name \"Capture Quote\", MCP server URL https://www.capture.com/mcp, authentication: none.","claude":"Claude.ai / Claude Desktop → Settings → Connectors → Add custom connector: URL https://www.capture.com/mcp, no auth. Claude Code: claude mcp add --transport http capture-quote https://www.capture.com/mcp","cursor":{"mcpServers":{"capture-quote":{"url":"https://www.capture.com/mcp"}}},"curl":"curl -s https://www.capture.com/api/quote/calculate?items=MiniDV:16,VHS:5&postalCode=94110","browsingAgents":"If you can only issue GET requests, call https://www.capture.com/api/quote/calculate?items=MiniDV:16,VHS:5&postalCode=94110 — it returns the same stored quote (quoteId + quoteUrl) as the POST/MCP tools."}}}