Untax
Source-backed property assessment research and draft assessment comparisons for supported pilot j...
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"untax": {
"url": "https://untax.io/api/v1/mcp"
}
}
}遠端端點
https://untax.io/api/v1/mcpstreamable-http它能做什麼
工具清單
工具(20)
🟢suggest_addresses(limit, query)
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.
輸入結構描述
{
"type": "object",
"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"
],
"additionalProperties": false
}🟢get_property_assessment(actual_sqft, address, address_or_pidn, county_key, notice_appraised_value)
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.
輸入結構描述
{
"type": "object",
"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"
]
}🟢recheck_property_opportunities(address_or_pidn, county_key, owner_answers, skipped_question_ids)
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.
輸入結構描述
{
"type": "object",
"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"
],
"additionalProperties": false
}🟢get_owner_workspace
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.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢get_owner_review_details(review_id, saved_property_id)
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.
輸入結構描述
{
"type": "object",
"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"
],
"additionalProperties": false
}🟢find_va_facilities(city, facility_type, limit, state)
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.
輸入結構描述
{
"type": "object",
"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"
}
},
"additionalProperties": false
}🟢get_va_facility(id)
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.
輸入結構描述
{
"type": "object",
"properties": {
"id": {
"maxLength": 48,
"type": "string"
}
},
"additionalProperties": false
}🟢find_va_forms(limit, query)
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.
輸入結構描述
{
"type": "object",
"properties": {
"limit": {
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"query": {
"maxLength": 120,
"type": "string"
}
},
"additionalProperties": false
}🟢get_va_form(id)
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.
輸入結構描述
{
"type": "object",
"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"
}
},
"additionalProperties": false
}🟢start_va_connection
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.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢get_va_connection
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.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false
}🔴disconnect_va_connection
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.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢review_veteran_requirements(answers, skipped_fields, use_connected_va_records)
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.
輸入結構描述
{
"type": "object",
"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"
}
},
"additionalProperties": false
}🟢generate_veteran_packet(answers, review_id, saved_property_id, use_connected_va_records)
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.
輸入結構描述
{
"type": "object",
"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"
],
"additionalProperties": false
}🟢get_microtransactions_catalog
Browse property-tax research options and the tools available in this connection. Each option shows its status and the evidence still needed. This does not verify eligibility, set a payable price, establish savings, approve an automatic refund or authorize filing.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢audit_microtransaction(address, county_key, parcel_id, service_type)
Research the selected property and show the evidence needed for the requested records service. Returns source facts and available actions. It does not verify savings, quote a payable fee, inspect payment methods, charge, create a filing packet or submit a correction. Test checkout uses separate tools and requires account permission.
輸入結構描述
{
"type": "object",
"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 route selected from get_microtransactions_catalog. Common aliases: demolished_outbuilding, square_footage_correction, mailing_address_change, commercial_reclassification, certified_tax_ledger. No service is assumed.",
"maxLength": 128,
"minLength": 1,
"type": "string"
}
},
"required": [
"service_type"
],
"additionalProperties": false,
"anyOf": [
{
"properties": {
"address": {
"pattern": "\\S"
}
},
"required": [
"address"
]
},
{
"properties": {
"parcel_id": {
"pattern": "\\S"
}
},
"required": [
"parcel_id"
]
}
]
}🟢get_appeal_lifecycle
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.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟡start_tax_sandbox(address_or_pidn, county_key, idempotency_key, service)
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.
輸入結構描述
{
"type": "object",
"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"
],
"additionalProperties": false
}🟢get_tax_sandbox_order(order_id)
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.
輸入結構描述
{
"type": "object",
"properties": {
"order_id": {
"maxLength": 128,
"minLength": 1,
"type": "string"
}
},
"required": [
"order_id"
],
"additionalProperties": false
}🟡complete_tax_sandbox_order(order_id)
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.
輸入結構描述
{
"type": "object",
"properties": {
"order_id": {
"maxLength": 128,
"minLength": 1,
"type": "string"
}
},
"required": [
"order_id"
],
"additionalProperties": false
}社群
證據