{"components":{"securitySchemes":{"bearerAuth":{"description":"A product-specific signed access token bound to a live account grant, audience and permissions.","scheme":"bearer","type":"http"},"oauth2":{"description":"Explicit account consent with an exact product audience and supported permissions.","flows":{"authorizationCode":{"authorizationUrl":"https://untax.io/oauth/authorize","scopes":{"owner:read":"Read explicitly consented saved property reviews","owner:sandbox":"Run explicitly enabled test checkout and draft delivery","owner:va":"Review separately consented saved VA sandbox verification"},"tokenUrl":"https://untax.io/oauth/token"}},"type":"oauth2"}}},"info":{"contact":{"email":"daniel@mooshworks.com","name":"Moosh Works LLC","url":"https://untax.io"},"description":"County assessment research, draft comparisons and property-tax requirements.","title":"Untax Property Tax Audit & Appeal API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/api/v1/audits/property":{"post":{"description":"Read source-backed property observations and supported draft comparisons. County facts, user reports and hypothetical assumptions remain distinct. Missing year, rate, taxable basis or exemptions do not become financial facts. Preserve the returned Development, source, payment and filing holds.","operationId":"auditPropertyTax","requestBody":{"content":{"application/json":{"schema":{"properties":{"actual_sqft":{"description":"Verified actual gross living area","type":"integer"},"address":{"description":"Subject property address or Parcel ID (e.g., '3731 Anderson Ave, Chattanooga, TN')","type":"string"},"county":{"description":"County name (e.g., 'Hamilton', 'Walker', 'Catoosa')","type":"string"},"notice_appraised_value":{"description":"Current notice appraised or assessed market value","type":"number"},"parcel_id":{"description":"County parcel ID / PIDN","type":"string"},"state":{"description":"State code ('TN' or 'GA')","type":"string"}},"required":["address"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"chat_summary":{"description":"Returned research summary with source limitations and applicable holds.","type":"string"},"handoff_checkout_url":{"description":"Unavailable when source, eligibility or Development payment holds apply.","type":["string","null"]},"is_eligible":{"type":"boolean"},"spoken_summary":{"type":"string"},"status":{"type":"string"}},"type":"object"}}},"description":"Property research with explicit source context, missing facts and applicable holds; no financial or filing readiness is implied."}},"summary":"Audit Property Tax Assessment","x-openai-isConsequential":false}},"/api/v1/escrow/upload":{"post":{"description":"Uploads annual mortgage escrow account disclosure statements or billing coupons (PDF) to extract servicer, loan number, projected annual tax disbursements, current balance, and shortage amounts for RESPA Section 10 QWR demand letters.","operationId":"extractEscrowDisclosure","requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"file":{"description":"Mortgage escrow disclosure statement (PDF)","format":"binary","type":"string"}},"required":["file"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Extracted mortgage escrow disclosure accounting fields"}},"summary":"Extract RESPA Mortgage Escrow Disclosure (GPT-6.1 Sol)","x-openai-isConsequential":false}},"/api/v1/evidence/upload":{"post":{"description":"Uploads contractor estimates, structural engineering reports, repair invoices, or code inspection notices (PDF) to extract line-item deferred maintenance deductions for Exhibit B.","operationId":"extractConditionEvidence","requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"file":{"description":"Itemized repair estimate or contractor invoice (PDF)","format":"binary","type":"string"}},"required":["file"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Extracted line-item condition deductions and total physical obsolescence"}},"summary":"Extract Exhibit B Condition Evidence (GPT-6.1 Sol)","x-openai-isConsequential":false}},"/api/v1/microtransactions/audit":{"post":{"description":"Audit property for demolished outbuilding, square footage correction, or address change services.","operationId":"auditMicrotransaction","requestBody":{"content":{"application/json":{"schema":{"properties":{"address":{"type":"string"},"customer_id":{"type":"string"},"service_type":{"type":"string"}},"required":["address"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Microtransaction audit complete"}},"summary":"Audit Property Roll Microtransaction","x-openai-isConsequential":false}},"/api/v1/microtransactions/execute":{"post":{"description":"An operational payment endpoint subject to independent financial, authorization and release checks. Current Development research does not authorize payment, external delivery or filing; a request cannot override those holds.","operationId":"executeMicrotransaction","requestBody":{"content":{"application/json":{"schema":{"properties":{"amount_cents":{"type":"integer"},"confirm_off_session_charge":{"type":"boolean"},"idempotency_key":{"type":"string"},"parcel_id":{"type":"string"},"service_type":{"type":"string"}},"required":["parcel_id","confirm_off_session_charge"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Microtransaction executed and filed"},"403":{"description":"Financial, authorization or Development release hold; no payment or filing is established."}},"summary":"Execute Paid Roll Microtransaction (Card on File)","x-openai-isConsequential":true}},"/api/v1/properties/opportunities/recheck":{"post":{"description":"Read-only screening from newly resolved county records and coarse owner-reported categories. Answers do not verify eligibility, evidence, authority, savings, payment or filing readiness; do not send exact income, ages, identifiers or documents.","operationId":"recheckPropertyOpportunities","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"address_or_pidn":{"maxLength":200,"minLength":1,"type":"string"},"county_key":{"type":"string"},"owner_answers":{"additionalProperties":false,"properties":{"condition_issues":{"items":{"enum":["damage","demolished","incomplete_construction"],"type":"string"},"maxItems":3,"type":"array","uniqueItems":true},"disabled_income_requirement_met":{"type":"boolean"},"disabled_requirement_met":{"type":"boolean"},"elderly_age_requirement_met":{"type":"boolean"},"elderly_income_requirement_met":{"type":"boolean"},"freeze_age_requirement_met":{"type":"boolean"},"freeze_income_requirement_met":{"type":"boolean"},"greenbelt_enrolled":{"type":"boolean"},"mortgage_escrow":{"type":"boolean"},"owner_categories":{"items":{"enum":["elderly","disabled","veteran","surviving_spouse"],"type":"string"},"maxItems":4,"type":"array","uniqueItems":true},"primary_residence":{"type":"boolean"},"property_use":{"enum":["residential","rental","second_home","business","agricultural","forest","open_space","mixed","other","unknown"],"type":"string"},"record_discrepancy":{"type":"boolean"},"surviving_spouse_requirement_met":{"type":"boolean"},"veteran_disability_requirement_met":{"type":"boolean"}},"type":"object"},"skipped_question_ids":{"description":"Stable question IDs explicitly skipped in this same property conversation. Resend them with accumulated answers. Skips suppress prompts only; facts and eligibility remain unresolved.","items":{"enum":["primary_residence","owner_categories","record_discrepancy","condition_issues","property_use","elderly_age_requirement_met","elderly_income_requirement_met","disabled_requirement_met","disabled_income_requirement_met","veteran_disability_requirement_met","surviving_spouse_requirement_met","freeze_age_requirement_met","freeze_income_requirement_met","greenbelt_enrolled"],"type":"string"},"maxItems":14,"type":"array","uniqueItems":true}},"required":["address_or_pidn","owner_answers"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Current property audit with opportunity_screen, next questions and preserved holds."},"400":{"description":"Unsupported screening input."},"413":{"description":"Body exceeds 16 KiB."},"429":{"description":"Please wait before rechecking."}},"summary":"Recheck tax reduction opportunities","x-openai-isConsequential":false}},"/api/v1/veteran/audit":{"post":{"description":"Review possible statutory property-tax relief requirements from supplied categories. User reports and saved VA sandbox facts do not establish property ownership, eligibility or filing authority. Qualifying disabled veterans and surviving spouses are not charged for statutory relief assistance.","operationId":"checkVeteranRelief","requestBody":{"content":{"application/json":{"schema":{"properties":{"address":{"type":"string"},"branch_of_service":{"type":"string"},"rating_percentage":{"type":"integer"},"service_connected":{"type":"boolean"},"veteran_name":{"type":"string"}},"required":["address","rating_percentage"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Statutory relief audit complete"}},"summary":"Check Disabled Veteran Property Tax Relief (Pro-Bono $0.00)","x-openai-isConsequential":false}},"/api/v1/webhooks/stripe":{"post":{"description":"An operational payment endpoint subject to independent financial, authorization and release checks. Current Development research does not authorize payment, external delivery or filing; a request cannot override those holds.","operationId":"stripeWebhook","responses":{"200":{"description":"Webhook processed"},"403":{"description":"Financial, authorization or Development release hold; no payment or filing is established."}},"summary":"Stripe Webhook Receiver"}},"/mcp":{"post":{"description":"County assessment research, draft comparisons and property-tax requirements. Use tools/list for current schemas. Private tools require explicit product-specific account permission. Mixed-product batches are rejected before execution.","operationId":"mcpJsonRpc","responses":{"200":{"description":"JSON-RPC 2.0 MCP response"}},"summary":"Model Context Protocol (MCP) JSON-RPC 2.0 Endpoint","x-openai-isConsequential":false}},"/mcp/tools":{"get":{"description":"The same effective tool definitions returned by tools/list for this product. Discovery does not grant private access or establish source, payment or delivery availability.","operationId":"listMcpTools","responses":{"200":{"description":"Product identity, canonical MCP endpoint and current tool schemas"}},"summary":"Current product MCP tool catalog"}},"/oauth/authorize":{"get":{"description":"Issues authorization codes for AI assistants (ChatGPT Actions / Claude Desktop).","operationId":"oauthAuthorize","responses":{"302":{"description":"Redirects to client callback with authorization code"}},"summary":"OAuth 2.0 PKCE Authorization Endpoint"}},"/oauth/token":{"post":{"description":"Exchanges authorization code and PKCE code_verifier for signed Bearer access token.","operationId":"oauthTokenExchange","responses":{"200":{"description":"Bearer token issued"}},"summary":"OAuth 2.0 PKCE Token Exchange Endpoint"}},"/pay":{"get":{"description":"Read an eligible checkout only when all release and payment gates pass. Development research does not authorize a paid offer or checkout.","operationId":"getOneTapCheckout","parameters":[{"in":"query","name":"order","required":true,"schema":{"type":"string"}},{"in":"query","name":"amount","required":true,"schema":{"type":"integer"}},{"in":"query","name":"sig","required":true,"schema":{"type":"string"}},{"in":"query","name":"exp","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Checkout form or status ready"}},"summary":"1-Tap Mobile Checkout Form"}},"/pay/complete":{"post":{"description":"An operational payment endpoint subject to independent financial, authorization and release checks. Current Development research does not authorize payment, external delivery or filing; a request cannot override those holds.","operationId":"completeOneTapCheckout","responses":{"200":{"description":"Payment confirmed and receipt issued"},"403":{"description":"Financial, authorization or Development release hold; no payment or filing is established."}},"summary":"Complete 1-Tap Checkout and Lock Filing Mutex"}}},"servers":[{"url":"https://untax.io"}],"x-availability":{"development":"Development comparisons and private drafts do not authorize savings claims, paid offers, payment or filing.","private_access":"Saved owner reviews, VA requirements sharing and test checkout use separate exact permissions and live revocable grants.","research":"Coverage and retained evidence are evaluated per property."},"x-mcp":{"name":"untax","tools":[{"_meta":{"securitySchemes":[{"type":"noauth"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true},"description":"Find possible address matches in county records from a partial query or misspelling. If the property is ambiguous, ask the user to choose before drawing conclusions or taking action. Similarity scores and is_auto_match are hints. They do not verify a selection, owner authority or financial eligibility.","inputSchema":{"additionalProperties":false,"properties":{"limit":{"description":"Maximum number of candidate suggestions to return (default: 5)","maximum":20,"minimum":1,"type":"integer"},"query":{"description":"Address query or partial street name (e.g. '3731 Andrson Ave', 'Anderson Ave', '810 Lindsay')","maxLength":200,"minLength":1,"type":"string"}},"required":["query"],"type":"object"},"name":"suggest_addresses","securitySchemes":[{"type":"noauth"}]},{"_meta":{"securitySchemes":[{"type":"noauth"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true},"description":"Read county assessment records and their sources for a supported address or parcel ID. Keep missing facts unknown; commercial building area is not finished living area. Report comparisons as drafts with their evidence limits. They do not verify personal tax savings or authorize filing. For a property audit or a request to find tax-reduction routes, review opportunity_screen before concluding. A weak or held comparable-property analysis does not rule out independent relief, record corrections or billing research. Ask the next relevant unanswered targeted_questions item one at a time; use available_questions for relevant follow-ups. Accept none, not sure or skip, and do not repeat answered or skipped questions in this conversation unless the user changes the facts. After an answer, call recheck_property_opportunities for the same selected property and county with the accumulated explicit owner_answers and skipped_question_ids. Rechecks are stateless: resend still-applicable prior answers, preserve explicit false and empty arrays, and omit unknown or skipped fields instead of sending null or inventing a negative answer. Resend stable skipped_question_ids until the user supplies an answer or asks to revisit the question. Skips suppress prompts only and leave requirements unresolved. Do not transfer property-specific answers or skips to another property. When the user is done or skips the remaining questions, summarize supported research routes and missing evidence without treating unknowns as a denial. For a fact-only lookup, answer the requested fact and offer relevant screening without requiring an unrelated intake. Owner answers do not verify eligibility, savings, authority, payment or filing readiness.","inputSchema":{"properties":{"actual_sqft":{"description":"Optional owner-reported measured living area, in square feet","type":"integer"},"address":{"description":"Alternative alias for property street address","type":"string"},"address_or_pidn":{"description":"Full street address or county parcel ID (e.g. '3731 Anderson Ave, Chattanooga, TN' or '157I L 001')","type":"string"},"county_key":{"description":"Optional registered county key, such as hamilton. Searches only that county. A conflicting county prefix is rejected.","type":"string"},"notice_appraised_value":{"description":"Optional: New proposed appraised value from reassessment notice","type":"number"}},"required":["address_or_pidn"],"type":"object"},"name":"get_property_assessment","securitySchemes":[{"type":"noauth"}]},{"_meta":{"securitySchemes":[{"type":"noauth"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true},"description":"Review possible property-tax options using the available county records and the owner's answers. Returns research and next questions. Answers do not verify eligibility, evidence, savings, owner authority or permission to pay or file. Do not send exact income, ages, identifiers, documents or a caller-supplied audit. For a property audit or a request to find tax-reduction routes, review opportunity_screen before concluding. A weak or held comparable-property analysis does not rule out independent relief, record corrections or billing research. Ask the next relevant unanswered targeted_questions item one at a time; use available_questions for relevant follow-ups. Accept none, not sure or skip, and do not repeat answered or skipped questions in this conversation unless the user changes the facts. After an answer, call recheck_property_opportunities for the same selected property and county with the accumulated explicit owner_answers and skipped_question_ids. Rechecks are stateless: resend still-applicable prior answers, preserve explicit false and empty arrays, and omit unknown or skipped fields instead of sending null or inventing a negative answer. Resend stable skipped_question_ids until the user supplies an answer or asks to revisit the question. Skips suppress prompts only and leave requirements unresolved. Do not transfer property-specific answers or skips to another property. When the user is done or skips the remaining questions, summarize supported research routes and missing evidence without treating unknowns as a denial. For a fact-only lookup, answer the requested fact and offer relevant screening without requiring an unrelated intake. Owner answers do not verify eligibility, savings, authority, payment or filing readiness.","inputSchema":{"additionalProperties":false,"properties":{"address_or_pidn":{"maxLength":200,"minLength":1,"type":"string"},"county_key":{"description":"Optional registered county key, such as hamilton. Searches only that county. A conflicting county prefix is rejected.","type":"string"},"owner_answers":{"additionalProperties":false,"properties":{"condition_issues":{"items":{"enum":["damage","demolished","incomplete_construction"],"type":"string"},"maxItems":3,"type":"array","uniqueItems":true},"disabled_income_requirement_met":{"type":"boolean"},"disabled_requirement_met":{"type":"boolean"},"elderly_age_requirement_met":{"type":"boolean"},"elderly_income_requirement_met":{"type":"boolean"},"freeze_age_requirement_met":{"type":"boolean"},"freeze_income_requirement_met":{"type":"boolean"},"greenbelt_enrolled":{"type":"boolean"},"mortgage_escrow":{"type":"boolean"},"owner_categories":{"items":{"enum":["elderly","disabled","veteran","surviving_spouse"],"type":"string"},"maxItems":4,"type":"array","uniqueItems":true},"primary_residence":{"type":"boolean"},"property_use":{"enum":["residential","rental","second_home","business","agricultural","forest","open_space","mixed","other","unknown"],"type":"string"},"record_discrepancy":{"type":"boolean"},"surviving_spouse_requirement_met":{"type":"boolean"},"veteran_disability_requirement_met":{"type":"boolean"}},"type":"object"},"skipped_question_ids":{"description":"Stable question IDs explicitly skipped in this same property conversation. Resend them with accumulated answers. Skips suppress prompts only; facts and eligibility remain unresolved.","items":{"enum":["primary_residence","owner_categories","record_discrepancy","condition_issues","property_use","elderly_age_requirement_met","elderly_income_requirement_met","disabled_requirement_met","disabled_income_requirement_met","veteran_disability_requirement_met","surviving_spouse_requirement_met","freeze_age_requirement_met","freeze_income_requirement_met","greenbelt_enrolled"],"type":"string"},"maxItems":14,"type":"array","uniqueItems":true}},"required":["address_or_pidn","owner_answers"],"type":"object"},"name":"recheck_property_opportunities","securitySchemes":[{"type":"noauth"}]},{"_meta":{"securitySchemes":[{"scopes":["owner:read"],"type":"oauth2"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Read saved property reviews for the signed-in Untax account. Requires valid, revocable owner:read permission. Returns property and review IDs; do not assume an active property. Ask the user to choose when ambiguous. This does not verify ownership, benefit eligibility, savings or filing authority.","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"name":"get_owner_workspace","securitySchemes":[{"scopes":["owner:read"],"type":"oauth2"}]},{"_meta":{"securitySchemes":[{"scopes":["owner:read"],"type":"oauth2"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Read the selected saved property review. Requires both IDs from get_owner_workspace and valid owner:read permission. Check source_context_current and reconfirmation_required; confirm stale previous_owner_answers with the user before reusing them. Ask relevant unanswered questions and honor current answers and skips. Keep user reports separate from county facts. Use the protected browser review for changes and sensitive evidence.","inputSchema":{"additionalProperties":false,"properties":{"review_id":{"pattern":"^intake_[a-f0-9]{32}$","type":"string"},"saved_property_id":{"pattern":"^property_[a-f0-9]{64}$","type":"string"}},"required":["review_id","saved_property_id"],"type":"object"},"name":"get_owner_review_details","securitySchemes":[{"scopes":["owner:read"],"type":"oauth2"}]},{"_meta":{"securitySchemes":[{"type":"noauth"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true},"description":"Find official VA facilities in a specified state, with optional city and facility-type filters. If location is missing, ask the returned question. Do not guess a state or present a VA facility as a county tax office or accredited VSO. Results are public information; sandbox results are samples.","inputSchema":{"additionalProperties":false,"properties":{"city":{"maxLength":80,"type":"string"},"facility_type":{"enum":["benefits","health","cemetery","vet_center"],"type":"string"},"limit":{"maximum":20,"minimum":1,"type":"integer"},"state":{"maxLength":2,"minLength":2,"type":"string"}},"type":"object"},"name":"find_va_facilities","securitySchemes":[{"type":"noauth"}]},{"_meta":{"securitySchemes":[{"type":"noauth"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true},"description":"Read one official VA facility using its returned id. Returns available address, phone and website details, with source and environment. Does not return private veteran records or decide eligibility.","inputSchema":{"additionalProperties":false,"properties":{"id":{"maxLength":48,"type":"string"}},"type":"object"},"name":"get_va_facility","securitySchemes":[{"type":"noauth"}]},{"_meta":{"securitySchemes":[{"type":"noauth"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true},"description":"Find official VA forms by number or search text. If query is missing, ask which form or purpose is needed. Show returned revision details and official PDF links. This does not complete or submit a claim.","inputSchema":{"additionalProperties":false,"properties":{"limit":{"maximum":20,"minimum":1,"type":"integer"},"query":{"maxLength":120,"type":"string"}},"type":"object"},"name":"find_va_forms","securitySchemes":[{"type":"noauth"}]},{"_meta":{"securitySchemes":[{"type":"noauth"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true},"description":"Look up a VA form number, such as 21-0966. Use form_name from search results, not the numeric catalog id. If form_name is missing, ask for the form number. Returns available title, revision details and official PDF link. The link does not complete or submit an application or establish eligibility.","inputSchema":{"additionalProperties":false,"properties":{"id":{"description":"Official form number (the form_name field in search results), such as 21-0966. Do not use the numeric catalog id.","maxLength":48,"type":"string"}},"type":"object"},"name":"get_va_form","securitySchemes":[{"type":"noauth"}]},{"_meta":{"securitySchemes":[{"scopes":["owner:va"],"type":"oauth2"}]},"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Start a requested VA connection for this signed-in account and assistant. Requires owner:va. Show connection_url to confirm the account and fields to share. Review saved verification or complete official VA sign-in, then approve sharing with this app. Verification is saved to the account only after approval. Call get_va_connection after browser return. The link alone grants no access. Never request passwords, tokens, SSNs or full VA documents in chat.","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"name":"start_va_connection","securitySchemes":[{"scopes":["owner:va"],"type":"oauth2"}]},{"_meta":{"securitySchemes":[{"scopes":["owner:va"],"type":"oauth2"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true},"description":"Read the limited, dated VA facts shared with this account and assistant. Requires owner:va and active sharing permission; browser sign-in alone grants no access. Saved facts remain after the VA session expires or the server restarts. Show verified_at and freshness. This is a saved snapshot, not a live check; reverification may be needed. Expired or revoked app permission stops sharing. These facts do not establish property ownership, primary residence, tax eligibility or filing authority.","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"name":"get_va_connection","securitySchemes":[{"scopes":["owner:va"],"type":"oauth2"}]},{"_meta":{"securitySchemes":[{"scopes":["owner:va"],"type":"oauth2"}]},"annotations":{"destructiveHint":true,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"When requested, stop this assistant's access to this account's shared VA facts. Requires owner:va. Saved verification stays in Account until the owner removes it. Does not disconnect another account or assistant, submit a claim or change VA records.","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"name":"disconnect_va_connection","securitySchemes":[{"scopes":["owner:va"],"type":"oauth2"}]},{"_meta":{"securitySchemes":[{"scopes":["owner:va"],"type":"oauth2"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true},"description":"Review requirements for the selected property using accumulated answers and, only when requested, the connected applicant's saved VA facts. Requires owner:va. Show va_source.verified_at and freshness; saved facts are not a live check. Ask returned questions one at a time. Accept unknown or skip, preserve explicit false, and keep answers with the same property. Does not decide eligibility or savings, generate an application, or file anything.","inputSchema":{"additionalProperties":false,"properties":{"answers":{"additionalProperties":false,"properties":{"address":{"deprecated":true,"description":"Legacy alias for property_address; not a parcel lookup.","maxLength":256,"type":"string"},"county_name":{"description":"Reported county. No county is inferred from an address.","maxLength":256,"type":"string"},"has_remarried":{"description":"Reported surviving-spouse remarriage status. Omit when unknown.","type":"boolean"},"has_va_dic_award":{"description":"Reported VA survivor benefit award status. Omit when unknown.","type":"boolean"},"honorable_discharge":{"deprecated":true,"description":"Legacy alias for is_honorable_discharge. Conflicting values remain unknown.","type":"boolean"},"is_honorable_discharge":{"description":"Reported honorable discharge status; no document verification is performed.","type":"boolean"},"is_permanent_and_total":{"description":"Reported permanent-and-total status, separate from rating. Omit when unknown.","type":"boolean"},"is_primary_residence":{"description":"Whether this property is the applicant's primary residence for the requested review year. Omit when unknown.","type":"boolean"},"is_surviving_spouse":{"description":"Whether the applicant is a surviving spouse. This does not establish DIC, remarriage status or eligibility.","type":"boolean"},"ownership_relationship":{"description":"Reported relationship to this property; does not establish ownership or delegated authority.","enum":["owner","co_owner","authorized_helper"],"type":"string"},"parcel_id":{"description":"Explicit county parcel or property account identifier.","maxLength":256,"type":"string"},"property_address":{"description":"Explicit property street address. Supply the parcel or account identifier separately.","maxLength":256,"type":"string"},"rating_percentage":{"deprecated":true,"description":"Legacy alias for va_disability_percentage. Conflicting values remain unknown.","maximum":100,"minimum":0,"multipleOf":10,"type":"integer"},"review_year":{"description":"Requested review year, separate from any county source or bill year.","maximum":2100,"minimum":1900,"type":"integer"},"state_code":{"description":"Reported two-letter state code; no default jurisdiction.","pattern":"^[A-Za-z]{2}$","type":"string"},"va_disability_percentage":{"description":"Reported VA disability rating. A 100% rating alone does not establish permanent-and-total status.","maximum":100,"minimum":0,"multipleOf":10,"type":"integer"},"veteran_name":{"description":"Applicant name supplied for this review; never inferred from an account or VA record.","maxLength":256,"type":"string"}},"type":"object"},"skipped_fields":{"description":"Stable question ids explicitly skipped in this same property conversation. Unknown facts stay unresolved.","items":{"maxLength":64,"type":"string"},"maxItems":20,"type":"array","uniqueItems":true},"use_connected_va_records":{"description":"Set true only when the user explicitly identifies the connected VA records as theirs and asks to use them for their own applicant review. A surviving-spouse review needs separate deceased-veteran and survivor evidence.","type":"boolean"}},"type":"object"},"name":"review_veteran_requirements","securitySchemes":[{"scopes":["owner:va"],"type":"oauth2"}]},{"_meta":{"securitySchemes":[{"scopes":["owner:read"],"type":"oauth2"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Create a free private veteran review PDF for the selected saved review. Requires owner:read. Missing answers appear as questions to review. A VA connection is optional; using connected facts requires owner:va and the user's explicit choice for this applicant. Extra answers are user reports and are not saved to the review. Returns a protected, expiring PDF download. The draft does not complete an official application, decide eligibility, estimate savings or file anything.","inputSchema":{"additionalProperties":false,"properties":{"answers":{"additionalProperties":false,"properties":{"has_remarried":{"type":"boolean"},"has_va_dic_award":{"type":"boolean"},"is_honorable_discharge":{"type":"boolean"},"is_permanent_and_total":{"type":"boolean"},"is_primary_residence":{"type":"boolean"},"is_surviving_spouse":{"type":"boolean"},"ownership_relationship":{"enum":["owner","co_owner","authorized_helper"],"type":"string"},"review_year":{"maximum":2100,"minimum":1900,"type":"integer"},"va_disability_percentage":{"maximum":100,"minimum":0,"multipleOf":10,"type":"integer"},"veteran_name":{"maxLength":256,"type":"string"}},"type":"object"},"review_id":{"maxLength":80,"type":"string"},"saved_property_id":{"maxLength":128,"type":"string"},"use_connected_va_records":{"description":"Only true when the user explicitly asks to use their connected records for their own applicant review; requires additional owner:va permission and is_surviving_spouse=false.","type":"boolean"}},"required":["review_id","saved_property_id"],"type":"object"},"name":"generate_veteran_packet","securitySchemes":[{"scopes":["owner:read"],"type":"oauth2"}]},{"_meta":{"securitySchemes":[{"type":"noauth"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"List available property-tax research services, their current status and required evidence. Use the returned service identifier when reviewing a selected property. Results do not determine eligibility or savings, set a payable price, or authorize a refund or filing.","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"name":"list_property_services","securitySchemes":[{"type":"noauth"}]},{"_meta":{"securitySchemes":[{"type":"noauth"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true},"description":"Review a selected property's source facts and missing evidence for one requested property-tax research service. Choose service_type from list_property_services. The result describes available research actions; it does not verify savings, quote a payable fee, charge, prepare a filing packet or submit a correction. Test checkout is a separate account workflow.","inputSchema":{"additionalProperties":false,"anyOf":[{"properties":{"address":{"pattern":"\\S"}},"required":["address"]},{"properties":{"parcel_id":{"pattern":"\\S"}},"required":["parcel_id"]}],"properties":{"address":{"description":"Explicitly selected property street address or parcel ID. A nonblank address takes precedence over parcel_id.","maxLength":200,"type":"string"},"county_key":{"description":"Exact registered county adapter key, such as hamilton; restricts source lookup to that county.","type":"string"},"parcel_id":{"description":"Explicitly selected county parcel ID / PIDN, used when address is absent or blank.","maxLength":200,"type":"string"},"service_type":{"description":"Explicit research service selected from list_property_services. Accepted aliases include demolished_outbuilding, square_footage_correction, mailing_address_change, commercial_reclassification and certified_tax_ledger. No service is assumed.","maxLength":128,"minLength":1,"type":"string"}},"required":["service_type"],"type":"object"},"name":"review_property_service","securitySchemes":[{"type":"noauth"}]},{"_meta":{"securitySchemes":[{"type":"noauth"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Read a general checklist for reviewing an assessment. It does not look up a property or verify deadlines, fees, eligibility or outcomes. Check the official rules for the property's location and tax year.","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"name":"get_appeal_lifecycle","securitySchemes":[{"type":"noauth"}]},{"_meta":{"securitySchemes":[{"scopes":["owner:sandbox"],"type":"oauth2"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Start a test checkout for the selected property only when the user requests it. Requires owner:sandbox sign-in. Uses test payments and separate test orders. It does not verify ownership, eligibility, savings or an open appeal window. No real charge or county filing occurs. Show the returned test checkout link when payment is pending. When an order_id is known, read the same order after checkout or an uncertain failure before retrying. If starting checkout fails before an order_id is returned, retry start_tax_sandbox with the original idempotency_key; do not create a new key for the same attempt. get_tax_sandbox_order and complete_tax_sandbox_order take only order_id. Report test payment, draft generation, download availability and external delivery as separate observed states. Do not claim the draft is available until the order confirms its artifact is available; a payment or download URL alone is not proof. A sandbox receipt or simulated submission is not county filing, external email delivery or permission for live payments.","inputSchema":{"additionalProperties":false,"properties":{"address_or_pidn":{"maxLength":1024,"minLength":1,"type":"string"},"county_key":{"maxLength":64,"minLength":1,"type":"string"},"idempotency_key":{"maxLength":96,"minLength":8,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"service":{"enum":["appeal","microtx"],"type":"string"}},"required":["address_or_pidn","county_key","service","idempotency_key"],"type":"object"},"name":"start_tax_sandbox","securitySchemes":[{"scopes":["owner:sandbox"],"type":"oauth2"}]},{"_meta":{"securitySchemes":[{"scopes":["owner:sandbox"],"type":"oauth2"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true},"description":"Read your own Untax test order. Requires owner:sandbox sign-in. Reports test payment and draft delivery separately. Neither status verifies production eligibility or a county filing. Show the returned test checkout link when payment is pending. When an order_id is known, read the same order after checkout or an uncertain failure before retrying. If starting checkout fails before an order_id is returned, retry start_tax_sandbox with the original idempotency_key; do not create a new key for the same attempt. get_tax_sandbox_order and complete_tax_sandbox_order take only order_id. Report test payment, draft generation, download availability and external delivery as separate observed states. Do not claim the draft is available until the order confirms its artifact is available; a payment or download URL alone is not proof. A sandbox receipt or simulated submission is not county filing, external email delivery or permission for live payments.","inputSchema":{"additionalProperties":false,"properties":{"order_id":{"maxLength":128,"minLength":1,"type":"string"}},"required":["order_id"],"type":"object"},"name":"get_tax_sandbox_order","securitySchemes":[{"scopes":["owner:sandbox"],"type":"oauth2"}]},{"_meta":{"securitySchemes":[{"scopes":["owner:sandbox"],"type":"oauth2"}]},"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Check the test payment for your own order, then make its draft PDF and receipt available if verified. Requires owner:sandbox sign-in and completed test checkout. Any submission is simulated. It does not file a real appeal or change county records. Show the returned test checkout link when payment is pending. When an order_id is known, read the same order after checkout or an uncertain failure before retrying. If starting checkout fails before an order_id is returned, retry start_tax_sandbox with the original idempotency_key; do not create a new key for the same attempt. get_tax_sandbox_order and complete_tax_sandbox_order take only order_id. Report test payment, draft generation, download availability and external delivery as separate observed states. Do not claim the draft is available until the order confirms its artifact is available; a payment or download URL alone is not proof. A sandbox receipt or simulated submission is not county filing, external email delivery or permission for live payments.","inputSchema":{"additionalProperties":false,"properties":{"order_id":{"maxLength":128,"minLength":1,"type":"string"}},"required":["order_id"],"type":"object"},"name":"complete_tax_sandbox_order","securitySchemes":[{"scopes":["owner:sandbox"],"type":"oauth2"}]}],"tools_url":"https://untax.io/mcp/tools","url":"https://untax.io/mcp"}}