Skip to main content
Glama

Texas unequal appraisal: median of adjusted comparables

calc_tx_unequal_appraisal
Read-onlyIdempotent

Evidence calculation only: not an appraisal or an opinion of value, not legal or tax advice, and not a substitute for the advice of an attorney. The arithmetic of Tex. Tax Code §41.43(b)(3) and §42.26(a)(3), the subject's value against the median appraised value of a reasonable number of comparable properties appropriately adjusted. Takes 3–200 comparables chosen by the caller, each with its roll value and the caller's adjustments (percent, USD amount, or $/SF, each with a reason); optionally normalizes each comparable to value per SF of improvement or land area times the subject's area; applies percentages summed or compounded, then amounts; and returns every comparable's normalized and adjusted value, the sorted list, the median (for an even count, the mean of the two middle values), and the subject's value minus the median in USD (subject_minus_median) and as a fraction of the median (subject_minus_median_pct: 0.1554 means 15.54%, a decimal like every rate in FactLot, not 0.1554%), with the statutes cited. Warns on mixed value bases, §42.26(d) and the §23.231 limitation, comparables in another county, fewer than 5 comparables, total adjustments over 25%, a comparable identical to the subject, no adjustments at all (the median is then unadjusted), and, with normalize_by none, a comparable whose area differs from the subject's by more than 25%. Each comparable row carries flags (code and sentence, facts about the inputs, never a reason the tool drops anything): value per SF more than twice or less than half the subject's, a land-to-improvement area ratio more than twice or less than half the subject's, an area the subject has but the comparable lacks. Optional label (up to 80 characters) and address (up to 120) on the subject and each comparable are echoed in the result (subject_label, subject_address, comparables[i].label and .address) for reports. registry_tx_equity_candidates returns calc_args, its candidates in this tool's input shape, for the caller to review and edit before calling this tool. It does not choose comparables, invent adjustments, or say whether to protest. Deterministic: use this instead of doing the math yourself; cite formula calc.tx_unequal_appraisal@1 and the returned steps, and surface any warnings.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "tax_year": "<tax_year>",
      "subject": "<subject>",
      "comparables": "<comparables>"
    },
    "name": "calc_tx_unequal_appraisal"
  }
}

Input Schema

NameRequiredDescriptionDefault
subjectYesThe property whose value is compared.
tax_yearYesTax year of the values compared, e.g. 2027. Decides which text of §42.26(d) applies.
comparablesYesThe comparable properties, 3 to 200, chosen by the caller. Values must be on the same basis as the subject's.
normalize_byNo"none" compares whole values. "improvement_area_sf" or "land_area_sf" converts each comparable to value per SF of that area and multiplies by the subject's same area before adjusting; the subject and every comparable must then have that area.none
adjustment_combineNo"sum" adds a comparable's percentage adjustments and applies the total once (the usual adjustment grid); "compound" multiplies (1 + each percentage).sum

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / comparables / items / properties / address
      Added value: +{
      +  "description": "The property's address as the caller wants it printed (up to 120 characters). Echoed in the result; not used in the arithmetic.",
      +  "maxLength": 120,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / comparables / items / properties / label
      Added value: +{
      +  "description": "A name to print for this property in reports (up to 80 characters), e.g. its street address or the caller's comp number. Echoed in the result; not used in the arithmetic.",
      +  "maxLength": 80,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / subject / properties / address
      Added value: +{
      +  "description": "The property's address as the caller wants it printed (up to 120 characters). Echoed in the result; not used in the arithmetic.",
      +  "maxLength": 120,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / subject / properties / label
      Added value: +{
      +  "description": "A name to print for this property in reports (up to 80 characters), e.g. its street address or the caller's comp number. Echoed in the result; not used in the arithmetic.",
      +  "maxLength": 80,
      +  "minLength": 1,
      +  "type": "string"
      +}
  2. Added

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare read-only/idempotent safety; the description goes far beyond, disclosing determinism, adjustment application order (percent then amount/psf), how the median is computed for even counts, the full warning catalogue (mixed bases, §42.26(d), §23.231, cross-county, <5 comps, >25% adjustments, etc.), row-level flags, and that flags never cause data to be dropped.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely dense single block: the legal disclaimer, formula, algorithm, warning list, and flag semantics all run together in one paragraph. The information is valuable but the structure is a wall of text, and the leading disclaimer delays the core purpose rather than front-loading the operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a nested 5-parameter schema with 3–200 comparables, no output schema, and legal stakes, the description covers inputs, arithmetic order, output fields (median, subject_minus_median, subject_minus_median_pct, per-comp rows), warnings, and citation requirements. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, but the description adds real meaning: percent adjustments are decimals summed or compounded per adjustment_combine, psf multiplies the subject's area, subject_minus_median_pct is a decimal share (0.1554 = 15.54%), and normalize_by drives which area fields are required. It does not add much beyond the schema for misc fields like citation or county_fips, but the key arithmetic semantics are clarified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific computation (median of adjusted comparables under Tex. Tax Code §41.43(b)(3)/§42.26(a)(3)) with explicit inputs and outputs, and distinguishes itself from the sibling registry_tx_equity_candidates that supplies candidate comparables. An agent can tell exactly what this tool produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use this instead of doing the math manually, to cite formula calc.tx_unequal_appraisal@1 and surface warnings, and to route through registry_tx_equity_candidates to obtain and edit calc_args before calling. It also bounds scope: it does not choose comparables, invent adjustments, or advise on protesting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.