{"name":"contents-team","title":"Contents.team","description":"Photos in, an itemized, priced contents inventory out. Create claims, add photos, review and approve the inventory and export reports.","endpoint":"https://contents.team/api/mcp","transport":"streamable-http","authentication":{"type":"bearer","description":"An org API key (ctk_test_... or ctk_live_...), or an OAuth access token, as \"Authorization: Bearer <credential>\". OAuth clients discover the authorization server from the 401 WWW-Authenticate challenge. Each tool needs the scopes listed with it.","resourceMetadata":"https://contents.team/.well-known/oauth-protected-resource/api/mcp","docs":"https://developers.contents.team/mcp"},"tools":[{"name":"list_claims","title":"List claims","description":"List the organization's claims, newest first, with item counts and approved RCV in cents. Filter by claimNumber (the number people call a claim by, such as EVAL-2026-0042), externalRef (your own id) or updatedSince; page with cursor.","scopes":["claims:read"],"readOnly":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"limit":{"description":"Page size, 1-100 (default 25).","type":"integer","minimum":1,"maximum":100},"cursor":{"description":"`nextCursor` from the previous page.","type":"string","minLength":1,"maxLength":64},"externalRef":{"description":"Only claims with this externalRef.","type":"string","minLength":1,"maxLength":255},"claimNumber":{"description":"Only claims with this whole claim number (not part of one; case does not matter): the number people usually call a claim by.","type":"string","minLength":1,"maxLength":100},"updatedSince":{"description":"Only claims whose record changed at or after this instant.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"clm_ id."},"object":{"type":"string","const":"claim"},"mode":{"type":"string","enum":["live","test"],"description":"test = created with a ctk_test_ key: only test keys see it, and it is never billed."},"externalRef":{"description":"Your own id for this claim.","type":["string","null"]},"claimNumber":{"type":["string","null"]},"insuredName":{"type":["string","null"]},"lossAddress":{"type":["string","null"]},"lossType":{"anyOf":[{"type":"string","enum":["Fire","Water","Wind","Other"]},{"type":"null"}]},"dateOfLoss":{"description":"YYYY-MM-DD.","type":["string","null"]},"status":{"type":"string","enum":["open","in_progress","review","closed"]},"insuranceCompany":{"type":["string","null"]},"policyNumber":{"type":["string","null"]},"valuationMode":{"type":"string","enum":["rcv","acv","acv_only"]},"salesTaxBp":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Sales tax in basis points (825 = 8.25%)."},"itemCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Inventory lines, excluding auto-detected duplicates."},"approvedRcvCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Replacement cost of approved items, tax included (get_claim_status has the pre-tax approvedSubtotalCents)."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"Last change to the claim record itself (not its items)."}},"required":["id","object","mode","externalRef","claimNumber","insuredName","lossAddress","lossType","dateOfLoss","status","insuranceCompany","policyNumber","valuationMode","salesTaxBp","itemCount","approvedRcvCents","createdAt","updatedAt"],"additionalProperties":false}},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Pass as `cursor` for the next page; null on the last page.","type":["string","null"]}},"required":["object","data","hasMore","nextCursor"],"additionalProperties":false}},{"name":"create_claim","title":"Create a claim","description":"Open a claim with the insured, loss address, loss type and date of loss, and your own externalRef. Returns the claim and its clm_ id. Pass a fresh idempotencyKey for each new claim and reuse it when retrying, so a retry never opens a second claim.","scopes":["claims:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"externalRef":{"description":"Your own id for this claim; filter on it with GET /api/v1/claims?externalRef=. Not unique.","anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}]},"claimNumber":{"description":"The carrier claim number, shown as the claim's label in the app.","anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"insuredName":{"description":"The policyholder (your customer).","anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}]},"lossAddress":{"anyOf":[{"type":"string","minLength":1,"maxLength":1000},{"type":"null"}]},"lossType":{"anyOf":[{"type":"string","enum":["Fire","Water","Wind","Other"]},{"type":"null"}]},"dateOfLoss":{"description":"YYYY-MM-DD.","anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"insuranceCompany":{"anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}]},"policyNumber":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"salesTaxBp":{"description":"Sales tax in basis points (825 = 8.25%).","anyOf":[{"type":"integer","minimum":0,"maximum":10000},{"type":"null"}]},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"additionalProperties":false}},{"name":"add_photos","title":"Add photos","description":"Add up to 10 photos to a claim by public https URL, optionally filed by room name. Each photo is analyzed and its items drafted and priced; poll get_claim_status for progress. Pass a fresh idempotencyKey for each batch and reuse it when retrying, so a retry never adds the photos twice.","scopes":["photos:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."},"photos":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri","description":"Public https URL of a JPEG, PNG, WebP or HEIC image, at most 20 MB. Fetched once, server-side."},"roomName":{"type":"string","minLength":1,"maxLength":100,"description":"Room to file the photo under; created on the claim if it does not exist yet."},"externalId":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9._:-]+$","description":"Your own id for the photo, echoed back; also picks the test-mode fixture set."}},"required":["url"],"additionalProperties":false}},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["claimId","photos"],"additionalProperties":false}},{"name":"get_claim_status","title":"Get claim status","description":"How far a claim has got: photos received, queued, analyzing, analyzed and failed; items drafted, awaiting review, approved and rejected; approved RCV, ACV and payment totals in cents. While photos are being analyzed, pass waitSeconds (up to 20) to wait for analysis.status to leave in_progress instead of calling again in quick succession.","scopes":["claims:read"],"readOnly":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."},"waitSeconds":{"description":"While analysis.status is in_progress, wait up to this many seconds (0-20, default 0) for it to finish before answering. Use this instead of calling again in quick succession.","type":"integer","minimum":0,"maximum":20}},"required":["claimId"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","description":"clm_ id."},"object":{"type":"string","const":"claim"},"mode":{"type":"string","enum":["live","test"],"description":"test = created with a ctk_test_ key: only test keys see it, and it is never billed."},"externalRef":{"description":"Your own id for this claim.","type":["string","null"]},"claimNumber":{"type":["string","null"]},"insuredName":{"type":["string","null"]},"lossAddress":{"type":["string","null"]},"lossType":{"anyOf":[{"type":"string","enum":["Fire","Water","Wind","Other"]},{"type":"null"}]},"dateOfLoss":{"description":"YYYY-MM-DD.","type":["string","null"]},"status":{"type":"string","enum":["open","in_progress","review","closed"]},"insuranceCompany":{"type":["string","null"]},"policyNumber":{"type":["string","null"]},"valuationMode":{"type":"string","enum":["rcv","acv","acv_only"]},"salesTaxBp":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Sales tax in basis points (825 = 8.25%)."},"itemCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Inventory lines, excluding auto-detected duplicates."},"approvedRcvCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Replacement cost of approved items, tax included (get_claim_status has the pre-tax approvedSubtotalCents)."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","description":"Last change to the claim record itself (not its items)."},"counts":{"type":"object","properties":{"items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Inventory lines, excluding auto-detected duplicates."},"itemsAwaitingReview":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"pending and low_confidence items."},"itemsApproved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"itemsRejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rooms":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"photos":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","itemsAwaitingReview","itemsApproved","itemsRejected","rooms","photos"],"additionalProperties":false},"totals":{"type":"object","properties":{"approvedSubtotalCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvedTaxCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvedRcvCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvedAcvCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvedPaymentCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"What the approved lines pay after payment caps."}},"required":["approvedSubtotalCents","approvedTaxCents","approvedRcvCents","approvedAcvCents","approvedPaymentCents"],"additionalProperties":false,"description":"Approved items only, valued with the claim's tax, depreciation and payment caps."},"analysis":{"type":"object","properties":{"status":{"type":"string","enum":["no_photos","in_progress","awaiting_start","complete"],"description":"in_progress while any inventory photo is queued or analyzing; awaiting_start when the only unanalyzed photos are staged (held until someone starts analysis in the app); complete otherwise."},"photosTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Inventory photos (reference photos are never analyzed)."},"photosQueued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Uploaded and waiting for analysis."},"photosStaged":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"photosAnalyzing":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"photosCompleted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"photosFailed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"photosAttached":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Added to an existing item as extra evidence (attach_item_photos, or the app's add photo to item): stored, never analyzed."}},"required":["status","photosTotal","photosQueued","photosStaged","photosAnalyzing","photosCompleted","photosFailed","photosAttached"],"additionalProperties":false}},"required":["id","object","mode","externalRef","claimNumber","insuredName","lossAddress","lossType","dateOfLoss","status","insuranceCompany","policyNumber","valuationMode","salesTaxBp","itemCount","approvedRcvCents","createdAt","updatedAt","counts","totals","analysis"],"additionalProperties":false}},{"name":"get_inventory","title":"Get the inventory","description":"The claim's line items: room, description, quantity, condition, status, unit cost in cents, and each line's RCV, depreciation (basis points and cents) and ACV. priced and needsReview say what still needs a person. Filter by status, needsReview, priced or room; 50 items a page by default (limit up to 100), page with cursor.","scopes":["items:read"],"readOnly":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"limit":{"description":"Page size, 1-100 (default 50).","type":"integer","minimum":1,"maximum":100},"cursor":{"description":"`nextCursor` from the previous page.","type":"string","minLength":1,"maxLength":64},"status":{"description":"Only items with this status (approved items are the ones that count toward totals).","type":"string","enum":["pending","low_confidence","reviewing","approved","rejected"]},"needsReview":{"description":"true: only items waiting on a person to approve or reject (pending or low_confidence).","type":"boolean"},"priced":{"description":"false: only items with no price yet (they cannot be approved until priced).","type":"boolean"},"roomId":{"description":"Only items filed in this room (rom_ id).","type":"string","minLength":1,"maxLength":64},"updatedSince":{"description":"Only items changed at or after this instant.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."}},"required":["claimId"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"itm_ id."},"object":{"type":"string","const":"item"},"claimId":{"type":"string","description":"clm_ id."},"roomId":{"description":"rom_ id, or null when the item is not filed in a room.","type":["string","null"]},"roomName":{"type":["string","null"]},"name":{"type":"string","description":"The line as the app shows it: the retailer title when chosen, else the description."},"description":{"type":"string","description":"What the item is, as identified or typed; name differs when a retailer title was chosen."},"retailerDescription":{"type":["string","null"]},"model":{"type":["string","null"]},"category":{"type":["string","null"]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unitCostCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Null until the item is priced."},"priced":{"type":"boolean","description":"True once the item has a unit cost. An unpriced item cannot be approved: set unitCostCents or accept a replacement first."},"status":{"type":"string","enum":["pending","low_confidence","reviewing","approved","rejected"],"description":"pending and low_confidence await review; reviewing is being priced (the item is locked: edits and approval are refused until it finishes); approved items count toward totals and exports; rejected items are left out of both."},"needsReview":{"type":"boolean","description":"True while the item waits on a person: status pending or low_confidence."},"condition":{"anyOf":[{"type":"string","enum":["New","Above Average","Average","Below Average"]},{"type":"null"}]},"estimatedAgeYears":{"type":["number","null"]},"source":{"type":"string","enum":["ai","manual"],"description":"ai: identified from a photo; manual: entered or imported."},"priceSource":{"description":"Where the price came from (retailer name).","type":["string","null"]},"priceSourceUrl":{"type":["string","null"]},"notes":{"type":["string","null"]},"photoIds":{"type":"array","items":{"type":"string"},"description":"pho_ ids the item appears in, primary photo first."},"valuation":{"type":"object","properties":{"subtotalCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Quantity x unit cost, before tax."},"taxCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sales tax at the claim's salesTaxBp."},"rcvCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Replacement cost value: subtotal plus tax."},"depreciationBp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Depreciation rate applied, in basis points (2500 = 25%)."},"depreciationCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"acvCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actual cash value: RCV less depreciation."},"paymentCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"What the claim pays for the line after any payment cap."}},"required":["subtotalCents","taxCents","rcvCents","depreciationBp","depreciationCents","acvCents","paymentCents"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","object","claimId","roomId","roomName","name","description","retailerDescription","model","category","quantity","unitCostCents","priced","status","needsReview","condition","estimatedAgeYears","source","priceSource","priceSourceUrl","notes","photoIds","valuation","createdAt","updatedAt"],"additionalProperties":false}},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Pass as `cursor` for the next page; null on the last page.","type":["string","null"]}},"required":["object","data","hasMore","nextCursor"],"additionalProperties":false}},{"name":"export_report","title":"Export a report","description":"Generate the XactContents-format XLSX (default), the PDF report or a photo ZIP for a claim. Waits up to 20 seconds and returns the download link when ready; otherwise call again with the returned exportId. Pass a fresh idempotencyKey for each new export and reuse it when retrying, so a retry never starts a second export.","scopes":["exports:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"claimId":{"description":"Start a new export of this claim (clm_ id). Omit when checking on an exportId.","type":"string","minLength":1,"maxLength":64},"format":{"description":"xlsx = the XactContents-format inventory spreadsheet (default); pdf = the inventory report; photo_zip = every photo.","type":"string","enum":["pdf","xlsx","photo_zip"]},"exportId":{"description":"Check on an export started earlier (exp_ id) instead of starting one.","type":"string","minLength":1,"maxLength":64},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours. Applies when starting an export; ignored with exportId.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"additionalProperties":false}},{"name":"get_replacements","title":"Get replacement offers","description":"The replacement finder's offers for one item from its latest search, best first: title, retailer, price in cents, link and image, with proposed marking the finder's pick. Each has an rpl_ id for accept_replacement.","scopes":["items:read"],"readOnly":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"itemId":{"type":"string","minLength":1,"maxLength":64,"description":"The item's itm_ id (from get_inventory)."}},"required":["itemId"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"list"},"itemId":{"type":"string"},"searchedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"When the finder last searched for this item; null if it never has."},"searching":{"type":"boolean","description":"True while a search for this item is running (the item is reviewing): the offers are still the previous search's. Call again in a little while."},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"rpl_ id; pass it to .../replacements/{replacementId}/accept."},"object":{"type":"string","const":"replacement"},"title":{"type":"string","description":"The listing's product title."},"model":{"type":["string","null"]},"retailer":{"type":["string","null"]},"priceCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"The listing's price for one, in integer cents; null when the listing had no price."},"url":{"description":"The retailer's product page, when one was found.","type":["string","null"]},"imageUrl":{"type":["string","null"]},"proposed":{"type":"boolean","description":"True for the offer the finder picked for this item."},"outsidePreferredRetailers":{"type":"boolean","description":"True when the retailer is not on the organization's preferred list."},"acceptedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"When this offer was applied to the item, if it was."}},"required":["id","object","title","model","retailer","priceCents","url","imageUrl","proposed","outsidePreferredRetailers","acceptedAt"],"additionalProperties":false},"description":"The offers from the most recent search, best first."}},"required":["object","itemId","searchedAt","searching","data"],"additionalProperties":false}},{"name":"update_item","title":"Update an item","description":"Edit one item the way the app does: name, model, quantity, unitCostCents (integer cents; null removes the price), priceSource, priceSourceUrl, roomId (from list_rooms), category (a name or code from list_categories), condition, estimatedAgeYears, notes. Returns the item, revalued. An item still being priced is refused (item_locked). Pass a fresh idempotencyKey for each edit and reuse it when retrying.","scopes":["items:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":1000,"description":"The line's text as the claim shows it. Setting it replaces a retailer title chosen earlier."},"model":{"description":"Make and model, if known.","anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"quantity":{"type":"integer","minimum":1,"maximum":100000,"description":"1-100000."},"unitCostCents":{"description":"Replacement price for one, in integer cents; null removes the price (the item is then unpriced and cannot be approved).","anyOf":[{"type":"integer","minimum":0,"maximum":9999999999,"description":"Replacement price for one, in integer cents (12999 = $129.99). Quantity x unit cost must stay within $99,999,999.99."},{"type":"null"}]},"priceSource":{"description":"Where the price came from (a retailer name).","anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"priceSourceUrl":{"description":"The listing the price came from. Google search links are dropped, as in the app.","anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"null"}]},"roomId":{"description":"rom_ id of a room on the same claim (from list_rooms, or GET /api/v1/claims/{claimId}/rooms); null takes the item out of its room.","anyOf":[{"type":"string","minLength":1,"maxLength":64},{"type":"null"}]},"category":{"description":"Category name from list_categories (GET /api/v1/claims/{claimId}/categories), or its 3-letter code on claims that use Contents.team categories (taxonomy xactimate); null clears it. Drives depreciation.","anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}]},"condition":{"anyOf":[{"type":"string","enum":["New","Above Average","Average","Below Average"]},{"type":"null"}]},"estimatedAgeYears":{"description":"Age in years, to a tenth (2.5). Drives depreciation.","type":["number","null"]},"notes":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}]},"itemId":{"type":"string","minLength":1,"maxLength":64,"description":"The item's itm_ id (from get_inventory)."},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["itemId"],"additionalProperties":false}},{"name":"approve_items","title":"Approve items","description":"Approve up to 1000 items of a claim, as bulk approval in the app does; only approved items count toward totals and exports. Reports each id as approved, alreadyApproved, locked (still being priced), skipped (with a reason, e.g. unpriced) or notFound. Pass a fresh idempotencyKey for each approval and reuse it when retrying.","scopes":["items:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."},"itemIds":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"description":"itm_ ids of items on this claim, 1-1000."},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["claimId","itemIds"],"additionalProperties":false}},{"name":"accept_replacement","title":"Accept a replacement offer","description":"Price an item from one of its offers (an rpl_ id from get_replacements) and approve it in one step, as accepting in the app does. The price and quantity come from the offer; if the listing unit count is unclear the call asks you to confirm a quantity (quantity plus quantityConfirmed: true). Pass a fresh idempotencyKey and reuse it when retrying.","scopes":["items:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"quantity":{"description":"Only when the finder could not tell how many units the listing covers: the quantity you are confirming. Send it with quantityConfirmed: true.","type":"integer","minimum":1,"maximum":100000},"quantityConfirmed":{"type":"boolean","const":true},"keepItemTitle":{"description":"Adopt the listing's price and source but keep the item's own title.","type":"boolean","const":true},"itemId":{"type":"string","minLength":1,"maxLength":64,"description":"The item's itm_ id (from get_inventory)."},"replacementId":{"type":"string","minLength":1,"maxLength":64,"description":"The offer's rpl_ id (from get_replacements)."},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["itemId","replacementId"],"additionalProperties":false}},{"name":"add_item","title":"Add an item","description":"Add an item the AI missed, as manual add in the app does: name, optional model, quantity (default 1), unitCostCents (integer cents; omit to add it unpriced), roomId (from list_rooms), condition, estimatedAgeYears, notes. Returns the new item. idempotencyKey is required: send a fresh one per item and reuse it when retrying, so a retry never adds (and bills) a second item.","scopes":["items:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":1000,"description":"The line's text as the claim shows it. Setting it replaces a retailer title chosen earlier."},"model":{"description":"Make and model, if known.","anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"quantity":{"default":1,"description":"1-100000, default 1.","type":"integer","minimum":1,"maximum":100000},"unitCostCents":{"description":"Replacement price for one, in integer cents. Omit to add the item unpriced.","anyOf":[{"type":"integer","minimum":0,"maximum":9999999999,"description":"Replacement price for one, in integer cents (12999 = $129.99). Quantity x unit cost must stay within $99,999,999.99."},{"type":"null"}]},"roomId":{"description":"rom_ id of a room on the same claim (from list_rooms, or GET /api/v1/claims/{claimId}/rooms); null takes the item out of its room.","anyOf":[{"type":"string","minLength":1,"maxLength":64},{"type":"null"}]},"condition":{"anyOf":[{"type":"string","enum":["New","Above Average","Average","Below Average"]},{"type":"null"}]},"estimatedAgeYears":{"description":"Age in years, to a tenth (2.5). Drives depreciation.","type":["number","null"]},"notes":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}]},"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."},"idempotencyKey":{"type":"string","pattern":"^[\\x21-\\x7e]{1,255}$","description":"Required for add_item: a unique key (a UUID, say) for this one item. Retry with the same key and arguments and you get the first item back instead of a second one."}},"required":["name","claimId","idempotencyKey"],"additionalProperties":false}},{"name":"delete_item","title":"Delete an item","description":"Remove one item from the inventory, as delete in the app does. To keep a record that an item was ruled out, use reject_items instead. Pass a fresh idempotencyKey and reuse it when retrying.","scopes":["items:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"itemId":{"type":"string","minLength":1,"maxLength":64,"description":"The item's itm_ id (from get_inventory)."},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["itemId"],"additionalProperties":false}},{"name":"unapprove_items","title":"Unapprove items","description":"Send up to 1000 approved items of a claim back to review, as bulk unapprove in the app does. Pass a fresh idempotencyKey and reuse it when retrying.","scopes":["items:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."},"itemIds":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"description":"itm_ ids of items on this claim, 1-1000."},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["claimId","itemIds"],"additionalProperties":false}},{"name":"reject_items","title":"Reject items","description":"Rule out up to 100 items of a claim (not part of the loss, a duplicate), as rejecting in the app does; rejected items stay on the claim but never count toward totals or exports. Pass a fresh idempotencyKey and reuse it when retrying.","scopes":["items:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."},"itemIds":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"description":"itm_ ids of items on this claim, 1-100."},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["claimId","itemIds"],"additionalProperties":false}},{"name":"list_rooms","title":"List rooms","description":"The claim's rooms in display order, in one page: floors, rooms and subrooms (parentId), each with its rom_ id and direct item count. Use the rom_ ids as roomId in update_item and add_item, or to filter get_inventory.","scopes":["claims:read"],"readOnly":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."}},"required":["claimId"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"rom_ id."},"object":{"type":"string","const":"room"},"claimId":{"type":"string","description":"clm_ id of the claim the room belongs to."},"name":{"type":"string"},"type":{"type":"string","enum":["floor","room","subroom"]},"parentId":{"description":"rom_ id of the containing floor or room; null at the top level.","type":["string","null"]},"displayOrder":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Position among its siblings, as the app orders them."},"itemCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Inventory lines filed in this room (not its subrooms), excluding auto-detected duplicates."},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","object","claimId","name","type","parentId","displayOrder","itemCount","createdAt","updatedAt"],"additionalProperties":false}},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Pass as `cursor` for the next page; null on the last page.","type":["string","null"]}},"required":["object","data","hasMore","nextCursor"],"additionalProperties":false}},{"name":"get_item","title":"Get an item","description":"One item by its itm_ id, as get_inventory shows it: room, category, quantity, unit cost in cents, status, and its RCV, depreciation and ACV valued within the claim.","scopes":["items:read"],"readOnly":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"itemId":{"type":"string","minLength":1,"maxLength":64,"description":"The item's itm_ id (from get_inventory)."}},"required":["itemId"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","description":"itm_ id."},"object":{"type":"string","const":"item"},"claimId":{"type":"string","description":"clm_ id."},"roomId":{"description":"rom_ id, or null when the item is not filed in a room.","type":["string","null"]},"roomName":{"type":["string","null"]},"name":{"type":"string","description":"The line as the app shows it: the retailer title when chosen, else the description."},"description":{"type":"string","description":"What the item is, as identified or typed; name differs when a retailer title was chosen."},"retailerDescription":{"type":["string","null"]},"model":{"type":["string","null"]},"category":{"type":["string","null"]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unitCostCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Null until the item is priced."},"priced":{"type":"boolean","description":"True once the item has a unit cost. An unpriced item cannot be approved: set unitCostCents or accept a replacement first."},"status":{"type":"string","enum":["pending","low_confidence","reviewing","approved","rejected"],"description":"pending and low_confidence await review; reviewing is being priced (the item is locked: edits and approval are refused until it finishes); approved items count toward totals and exports; rejected items are left out of both."},"needsReview":{"type":"boolean","description":"True while the item waits on a person: status pending or low_confidence."},"condition":{"anyOf":[{"type":"string","enum":["New","Above Average","Average","Below Average"]},{"type":"null"}]},"estimatedAgeYears":{"type":["number","null"]},"source":{"type":"string","enum":["ai","manual"],"description":"ai: identified from a photo; manual: entered or imported."},"priceSource":{"description":"Where the price came from (retailer name).","type":["string","null"]},"priceSourceUrl":{"type":["string","null"]},"notes":{"type":["string","null"]},"photoIds":{"type":"array","items":{"type":"string"},"description":"pho_ ids the item appears in, primary photo first."},"valuation":{"type":"object","properties":{"subtotalCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Quantity x unit cost, before tax."},"taxCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Sales tax at the claim's salesTaxBp."},"rcvCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Replacement cost value: subtotal plus tax."},"depreciationBp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Depreciation rate applied, in basis points (2500 = 25%)."},"depreciationCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"acvCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actual cash value: RCV less depreciation."},"paymentCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"What the claim pays for the line after any payment cap."}},"required":["subtotalCents","taxCents","rcvCents","depreciationBp","depreciationCents","acvCents","paymentCents"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","object","claimId","roomId","roomName","name","description","retailerDescription","model","category","quantity","unitCostCents","priced","status","needsReview","condition","estimatedAgeYears","source","priceSource","priceSourceUrl","notes","photoIds","valuation","createdAt","updatedAt"],"additionalProperties":false}},{"name":"list_categories","title":"List categories","description":"The categories an item on this claim can take, from the claim's own category system (taxonomy jmidg, or xactimate with 3-letter codes), each with its default depreciation. Pass a name (or, on xactimate claims, a code) as category in update_item.","scopes":["items:read"],"readOnly":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."}},"required":["claimId"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"category"},"name":{"type":"string","description":"Pass it as `category` when updating an item on this claim."},"code":{"description":"The 3-letter code on claims whose taxonomy is xactimate (also accepted as `category`); null otherwise.","type":["string","null"]},"depreciationType":{"anyOf":[{"type":"string","enum":["annual","1st-year","flat"]},{"type":"null"}],"description":"How the category depreciates by default: annual (per year of age), 1st-year (once), flat (age ignored)."},"depreciationBp":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Default depreciation rate in basis points (1000 = 10%)."},"maxDepreciationBp":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Default depreciation cap in basis points; null = no cap."},"usefulLifeYears":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["object","name","code","depreciationType","depreciationBp","maxDepreciationBp","usefulLifeYears"],"additionalProperties":false}},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Pass as `cursor` for the next page; null on the last page.","type":["string","null"]},"taxonomy":{"type":"string","enum":["jmidg","xactimate"],"description":"The claim's category system. The claim's own depreciation settings can override the defaults listed."}},"required":["object","data","hasMore","nextCursor","taxonomy"],"additionalProperties":false}},{"name":"update_claim","title":"Update a claim","description":"Correct the claim record: externalRef, claimNumber, insuredName, lossAddress, lossType, dateOfLoss, insuranceCompany, policyNumber. Send only the fields to change (null clears one); status and valuation settings are not editable here. Returns the claim. Pass a fresh idempotencyKey for each edit and reuse it when retrying.","scopes":["claims:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"externalRef":{"description":"Your own id for this claim; filter on it with GET /api/v1/claims?externalRef=. Not unique.","anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}]},"claimNumber":{"description":"The carrier claim number, shown as the claim's label in the app.","anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"insuredName":{"description":"The policyholder (your customer).","anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}]},"lossAddress":{"anyOf":[{"type":"string","minLength":1,"maxLength":1000},{"type":"null"}]},"lossType":{"anyOf":[{"type":"string","enum":["Fire","Water","Wind","Other"]},{"type":"null"}]},"dateOfLoss":{"description":"YYYY-MM-DD.","anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"insuranceCompany":{"anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}]},"policyNumber":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["claimId"],"additionalProperties":false}},{"name":"get_me","title":"Who am I","description":"The organization, live or test mode, and scopes of the credential this connection uses. Needs no scope: use it to check what the other tools will allow.","scopes":[],"readOnly":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"me"},"organization":{"type":"object","properties":{"id":{"type":"string","description":"org_ id."},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"mode":{"type":"string","enum":["live","test"]},"credential":{"type":"object","properties":{"type":{"type":"string","enum":["api_key","oauth"]},"name":{"type":"string","description":"The API key name, or the OAuth app name."},"prefix":{"type":"string","description":"First characters of the key, as Settings shows it; \"cto_\" for an OAuth token."},"scopes":{"type":"array","items":{"type":"string","enum":["claims:read","claims:write","photos:read","photos:write","items:read","exports:write","webhooks:manage","items:write"]}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["type","name","prefix","scopes","createdAt","lastUsedAt","expiresAt"],"additionalProperties":false}},"required":["object","organization","mode","credential"],"additionalProperties":false}},{"name":"get_upload_link","title":"Get a photo upload link","description":"A link that opens the claim in the Contents.team app with its Add photos dialog, for a person to upload photos from their own device. Use it when you cannot send the files yourself (in a chat, say): give the link to the user, who signs in as themselves. The photos are analyzed as usual; follow them with get_claim_status. Not available for test claims, which the app does not show.","scopes":["claims:read"],"readOnly":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."}},"required":["claimId"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"upload_link"},"claimId":{"type":"string","description":"clm_ id."},"url":{"type":"string","description":"The claim in the Contents.team app, with its Add photos dialog open."},"requiresSignIn":{"type":"boolean","const":true,"description":"Whoever opens the link signs in as themselves and needs access to this organization."},"note":{"type":"string"}},"required":["object","claimId","url","requiresSignIn","note"],"additionalProperties":false}},{"name":"create_photo_upload","title":"Start a photo upload","description":"For clients that can make HTTP PUT requests (Claude Code, scripts): register up to 24 photo files (filename, contentType, exact sizeBytes, optional roomName) and get one presigned PUT URL each. PUT each file's exact bytes to its url with the given Content-Type header within 5 minutes, then call complete_photo_upload with the upl_ id and the pho_ ids you uploaded. If the URLs expired, call this again with a new idempotencyKey. In a chat, use add_photos (public URLs) or get_upload_link instead.","scopes":["photos:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."},"files":{"minItems":1,"maxItems":24,"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":255},"contentType":{"type":"string","enum":["image/jpeg","image/png","image/webp","image/heic","image/heif"]},"sizeBytes":{"type":"integer","exclusiveMinimum":0,"maximum":20971520,"description":"Exact byte size you will PUT."},"roomName":{"type":"string","minLength":1,"maxLength":100,"description":"Room to file the photo under; created on the claim if it does not exist yet."},"externalId":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9._:-]+$","description":"Your own id for the photo, echoed back; also picks the test-mode fixture set."}},"required":["filename","contentType","sizeBytes"],"additionalProperties":false}},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours. A retry with the same key returns the first upload URLs, which expire 5 minutes after the first call: once they have, call again with a new key.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["claimId","files"],"additionalProperties":false}},{"name":"complete_photo_upload","title":"Finish a photo upload","description":"After PUTting the files from create_photo_upload: checks each one arrived with the declared size and type and sends them to analysis, which drafts and prices their items; follow it with get_claim_status. Photos that never arrived are listed in failed. Pass a fresh idempotencyKey and reuse it when retrying.","scopes":["photos:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."},"uploadId":{"type":"string","minLength":1,"maxLength":64,"description":"upl_ id from the create call."},"photoIds":{"minItems":1,"maxItems":24,"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"description":"pho_ ids you finished uploading."},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["claimId","uploadId","photoIds"],"additionalProperties":false}},{"name":"list_photos","title":"List photos","description":"The claim's photos, oldest first: room, kind and analysis status (no download links: to see a photo, use get_photo). Filter by roomId or updatedSince; 25 a page by default (limit up to 100), page with cursor. Use get_photo to look at one.","scopes":["photos:read"],"readOnly":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"limit":{"description":"Page size, 1-100 (default 25).","type":"integer","minimum":1,"maximum":100},"cursor":{"description":"`nextCursor` from the previous page.","type":"string","minLength":1,"maxLength":64},"roomId":{"description":"Only photos filed in this room (rom_ id).","type":"string","minLength":1,"maxLength":64},"updatedSince":{"description":"Only photos changed (including analysis status) at or after this instant.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"claimId":{"type":"string","minLength":1,"maxLength":64,"description":"The claim's clm_ id (from create_claim or list_claims)."}},"required":["claimId"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"pho_ id."},"object":{"type":"string","const":"photo"},"claimId":{"type":"string","description":"clm_ id."},"roomId":{"description":"rom_ id, or null when the photo is not filed in a room.","type":["string","null"]},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"kind":{"type":"string","enum":["inventory","reference"],"description":"reference: a room overview shot, never analyzed for items."},"analysisStatus":{"type":"string","enum":["queued","staged","analyzing","completed","failed","not_analyzed"],"description":"queued: uploaded, waiting for analysis; staged: held until someone starts analysis in the app; analyzing; completed: items identified (possibly none); failed: analysis failed; not_analyzed: a reference photo, or one added to an existing item as extra evidence (never analyzed)."},"stackId":{"description":"pho_ id of the stack lead when several photos show one item; null otherwise.","type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"note":{"description":"get_photo only (never in list_photos): why no preview image came back, or why the image is the thumbnail instead of the size asked for.","type":"string"}},"required":["id","object","claimId","roomId","filename","contentType","sizeBytes","kind","analysisStatus","stackId","createdAt","updatedAt"],"additionalProperties":false}},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Pass as `cursor` for the next page; null on the last page.","type":["string","null"]}},"required":["object","data","hasMore","nextCursor"],"additionalProperties":false}},{"name":"get_photo","title":"Look at a photo","description":"One photo's details plus the image itself, so you can see it: medium (default, up to 1920 px) or thumbnail (400 px). A photo uploaded moments ago may have no image yet; the result then says so. Set includeImage false for the details only.","scopes":["photos:read"],"readOnly":true,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"photoId":{"type":"string","minLength":1,"maxLength":64,"description":"The photo's pho_ id (from list_photos, or an item's photoIds)."},"size":{"description":"medium (default): up to 1920 px, or the thumbnail when the medium copy is too large to send; thumbnail: 400 px square.","type":"string","enum":["thumbnail","medium"]},"includeImage":{"description":"false: the photo's details only, no image (default true).","type":"boolean"}},"required":["photoId"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","description":"pho_ id."},"object":{"type":"string","const":"photo"},"claimId":{"type":"string","description":"clm_ id."},"roomId":{"description":"rom_ id, or null when the photo is not filed in a room.","type":["string","null"]},"filename":{"type":"string"},"contentType":{"type":"string"},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"kind":{"type":"string","enum":["inventory","reference"],"description":"reference: a room overview shot, never analyzed for items."},"analysisStatus":{"type":"string","enum":["queued","staged","analyzing","completed","failed","not_analyzed"],"description":"queued: uploaded, waiting for analysis; staged: held until someone starts analysis in the app; analyzing; completed: items identified (possibly none); failed: analysis failed; not_analyzed: a reference photo, or one added to an existing item as extra evidence (never analyzed)."},"stackId":{"description":"pho_ id of the stack lead when several photos show one item; null otherwise.","type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"note":{"description":"get_photo only (never in list_photos): why no preview image came back, or why the image is the thumbnail instead of the size asked for.","type":"string"}},"required":["id","object","claimId","roomId","filename","contentType","sizeBytes","kind","analysisStatus","stackId","createdAt","updatedAt"],"additionalProperties":false}},{"name":"create_item_photo_upload","title":"Upload photos for an item","description":"For clients that can make HTTP PUT requests: add up to 10 more photos of an item that already exists (a close-up, a receipt, a label) without analyzing them, so no duplicate item is drafted and nothing is billed. Returns one presigned PUT URL per file: PUT the exact bytes with the given Content-Type within 5 minutes, then call attach_item_photos with the pho_ ids. If the URLs expired, call this again with a new idempotencyKey.","scopes":["photos:write","items:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"itemId":{"type":"string","minLength":1,"maxLength":64,"description":"The item's itm_ id (from get_inventory)."},"files":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":255},"contentType":{"type":"string","enum":["image/jpeg","image/png","image/webp","image/heic","image/heif"]},"sizeBytes":{"type":"integer","exclusiveMinimum":0,"maximum":20971520,"description":"Exact byte size you will PUT."}},"required":["filename","contentType","sizeBytes"],"additionalProperties":false}},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours. A retry with the same key returns the first upload URLs, which expire 5 minutes after the first call: once they have, call again with a new key.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["itemId","files"],"additionalProperties":false}},{"name":"attach_item_photos","title":"Attach photos to an item","description":"Attach up to 20 photos to an existing item as extra evidence, without analysis: photos uploaded with create_item_photo_upload (checked in storage first), or photos already on the same claim. Returns the item. An item still being priced is refused (item_locked). Pass a fresh idempotencyKey and reuse it when retrying.","scopes":["photos:write","items:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"itemId":{"type":"string","minLength":1,"maxLength":64,"description":"The item's itm_ id (from get_inventory)."},"photoIds":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"description":"pho_ ids: photos uploaded with create_item_photo_upload, or photos already on the same claim."},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["itemId","photoIds"],"additionalProperties":false}},{"name":"price_from_link","title":"Price an item from a product link","description":"Price an item from a retailer's product page, as pasting a link in the app does: the page is read and its product name, model, store, link and price become the item's (a page with no price leaves an item that already has a price exactly as it was: its price, store and link stay unchanged). priceMethod search means the page could not be read and the price came from the same store's shopping listing: check it. When priced is false and the item has no price, ask the user for the price and set it with update_item; an item that already had a price keeps it. Set approve true to approve the item too, only when the page itself priced it (a search price is never approved: approveSkipped price_via_search). An item still being priced is refused (item_locked). Pass a fresh idempotencyKey and reuse it when retrying.","scopes":["items:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"description":"The product page on the retailer's own site (https; an http link is read as https). Google search and shopping links are not product pages."},"approve":{"description":"true: approve the item too, but only when the page itself gave the price (otherwise approveSkipped says why it was not; a price found via search is never approved here).","type":"boolean"},"itemId":{"type":"string","minLength":1,"maxLength":64,"description":"The item's itm_ id (from get_inventory)."},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["url","itemId"],"additionalProperties":false}},{"name":"search_replacements","title":"Search for replacements","description":"Run the replacement finder again for one item: a fresh search across retailers, checked against the item's photo. Waits up to about 20 seconds and returns the new offers (status completed); if it is still running (status searching), poll get_replacements until searching is false. Choose an offer with accept_replacement. Approved items are refused (item_already_approved). Searches cost real money, so they are limited to a few a minute per organization: search only items that need it, one at a time. Pass a fresh idempotencyKey and reuse it when retrying.","scopes":["items:write"],"readOnly":false,"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"itemId":{"type":"string","minLength":1,"maxLength":64,"description":"The item's itm_ id (from get_inventory)."},"wait":{"description":"true (default): wait up to about 20 seconds for the search to finish. false: start it and answer at once; then poll get_replacements until searching is false.","type":"boolean"},"idempotencyKey":{"description":"Optional but recommended: a unique key (a UUID, say; 1-255 visible ASCII characters) for this one action. If the call fails or times out, retry with the same key and the same arguments: you get the first result back instead of a duplicate. Use a new key for a new action; reusing a key with different arguments is an error. Keys last 24 hours.","type":"string","pattern":"^[\\x21-\\x7e]{1,255}$"}},"required":["itemId"],"additionalProperties":false}}],"prompts":[{"name":"review_claim","title":"Review a claim","description":"Walk through a claim's draft inventory: fix, price and rule out items, then propose approvals and wait for your go-ahead.","arguments":[{"name":"claimId","description":"The claim's clm_ id (from list_claims).","required":true}]},{"name":"price_unpriced_items","title":"Price unpriced items","description":"Price a claim's unpriced items from the replacement finder's offers, favouring the highest defensible like-kind price. Never approves anything.","arguments":[{"name":"claimId","description":"The claim's clm_ id (from list_claims).","required":true},{"name":"maxItems","description":"Price at most this many items (1-500). Default: every unpriced item.","required":false}]},{"name":"add_photos_to_claim","title":"Add photos to a claim","description":"Add photos to a claim (opening one first if needed), wait for the analysis and summarize the drafted items.","arguments":[{"name":"claimId","description":"The claim's clm_ id. Leave out to open a new claim.","required":false},{"name":"roomName","description":"Room to file the photos under, e.g. Living Room.","required":false}]}],"scopes":{"claims:read":"List and read claims","claims:write":"Create and update claims","photos:write":"Add photos to claims","items:read":"Read inventory items and prices","exports:write":"Generate report exports","items:write":"Edit, add, delete, approve and reject items","photos:read":"List and read photos"}}