Skip to main content
Glama

Tektolo Rental Property

Security deposit rules for a state (and city)

deposit_settlement_rules
Read-onlyIdempotent

Looks up the security deposit rules (deposits only) for one US state, with a covered city's deposit ordinance (Chicago, San Francisco, Berkeley, Los Angeles, Seattle, Portland, Minneapolis, Saint Paul). Inputs: state (two-letter code); optional city. Returns the deposit return deadline and what starts it, itemization and documentation duties, allowed deductions and depreciation, deposit interest, penalties, the deposit cap and recent changes, with citations. Not for: settling a specific move-out (deposit_settlement_settle does that), evictions, unpaid-rent collection, rent increases or rent control, lease renewal or notice periods, legal advice. Deterministic and source-cited: the same input gives the same result.

Input Schema

NameRequiredDescriptionDefault
cityNoOptional city for its overlay (e.g. 'Chicago').
as_ofNoOptional date (YYYY-MM-DD): show the law in force on that day, for a past move-out the day the tenancy ended. Omitted: the current law.
auditNoAlso return the run record and input/result hashes (an audit trail). Default false.
stateYesUS state, 2-letter code or name (e.g. 'TX').
serve_pinnedNoOptional, with expect_ruleset. True asks us to answer under the ruleset version you named even when the rules have changed since, from that version's signed bundle; the result says so in served_from_bundle. We refuse a version older than 12 months, one a later correction or law change replaced for your state, or one we have no bundle for. Default false: the call fails whenever the rules have changed.
expect_rulesetNoOptional. The ruleset version you built against, as results carry it in provenance.ruleset_version (e.g. 'sd-2026.11.14'), or its sha256: hash. If the rules have changed since, the call fails (nothing computed, nothing charged) and says what is in force now, so you upgrade on your own schedule. Leave it out to answer under the current rules.

Output Schema

NameRequiredDescriptionDefault
runNo
linksNo
resultYes
reviewNo
readingNo
signatureNo
input_hashNo
client_refsNo
deprecationNo
result_hashNo
request_hashNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • addedOutput schema / $defs / Alternative / properties / demand_within_days
      Added value: +{
      +  "anyOf": [
      +    {
      +      "exclusiveMinimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • changedOutput schema / $defs / DepositCap / properties / effective_by / enum
      Previous value: -[
      -  "collected",
      -  "lease_signed"
      -]New value: +[
      +  "collected",
      +  "lease_signed",
      +  "required"
      +]
    • addedOutput schema / $defs / DepositCap / properties / periodic_after_months
      Added value: +{
      +  "anyOf": [
      +    {
      +      "exclusiveMinimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / DepositCap / properties / pet_cap_months
      Added value: +{
      +  "anyOf": [
      +    {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    {
      +      "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / DepositCap / properties / post_closing_occupancy_from
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / PenaltyRule / properties / interest_only_fixed_usd
      Added value: +{
      +  "anyOf": [
      +    {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    {
      +      "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / PenaltyRule / properties / interest_only_multiple
      Added value: +{
      +  "anyOf": [
      +    {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    {
      +      "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / SafeHarbor / properties / conditions
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / SafeHarbor / properties / late_address
      Added value: +{
      +  "anyOf": [
      +    {
      +      "const": "unsettled",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / SafeHarbor / properties / lease_notice_address_counts
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
    • addedOutput schema / $defs / SafeHarbor / properties / requires_mailing
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
  2. Changed18 schema fields changed
    • addedOutput schema / $defs / BrokenLease
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "note": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "quote": {
      +      "maxLength": 600,
      +      "type": "string"
      +    },
      +    "requires_notice": {
      +      "type": "boolean"
      +    },
      +    "section": {
      +      "type": "string"
      +    },
      +    "source": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "requires_notice",
      +    "section",
      +    "quote",
      +    "source"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / CapLimits
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "furnished_months": {
      +      "anyOf": [
      +        {
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        {
      +          "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "months_rent": {
      +      "anyOf": [
      +        {
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        {
      +          "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / $defs / DepositCap / properties / cap_limits
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "amendment": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "from": {
      +            "anyOf": [
      +              {
      +                "format": "date",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "governed_by": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "note": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "source": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "until": {
      +            "anyOf": [
      +              {
      +                "format": "date",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "value": {
      +            "$ref": "#/$defs/CapLimits"
      +          }
      +        },
      +        "required": [
      +          "value"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "$ref": "#/$defs/CapLimits"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / keeps_claim_for
      Added value: +{
      +  "default": "all",
      +  "enum": [
      +    "all",
      +    "damage"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / $defs / Forfeiture / properties / keeps_claim_section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / no_address_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / no_address_relief
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "unsettled",
      +        "stands"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / notice_relief
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/NoticeRelief"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / NoticeRelief
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "agreement": {
      +      "type": "string"
      +    },
      +    "lease": {
      +      "type": "string"
      +    },
      +    "reach": {
      +      "type": "string"
      +    },
      +    "relief": {
      +      "type": "string"
      +    },
      +    "section": {
      +      "type": "string"
      +    },
      +    "source": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "section",
      +    "source",
      +    "agreement",
      +    "lease",
      +    "reach",
      +    "relief"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / PenaltyRule / properties / earlier_section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / PenaltyRule / properties / source
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Receipts / properties / enclosed_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Receipts / properties / own_work_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / ReturnRule / properties / broken_lease
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/BrokenLease"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / ReturnRule / properties / unsettled_start
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/UnsettledStart"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / SafeHarbor / properties / address_due
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "by_termination",
      +        "upon_termination"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / SafeHarbor / properties / address_due_quote
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / UnsettledStart
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "event": {
      +      "enum": [
      +        "vacate",
      +        "termination",
      +        "later_of_vacate_and_termination",
      +        "forwarding_address",
      +        "demand",
      +        "later_of_termination_and_address",
      +        "latest_of_termination_possession_and_address",
      +        "earlier_of_termination_and_surrender",
      +        "surrender_or_termination_first",
      +        "new_tenant_occupancy",
      +        "termination_possession_and_demand",
      +        "claim_notice"
      +      ],
      +      "type": "string"
      +    },
      +    "later_text_note": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "later_text_on": {
      +      "anyOf": [
      +        {
      +          "format": "date",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "note": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "quote": {
      +      "maxLength": 600,
      +      "type": "string"
      +    },
      +    "section": {
      +      "type": "string"
      +    },
      +    "source": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "event",
      +    "section",
      +    "quote",
      +    "source"
      +  ],
      +  "type": "object"
      +}
  3. Changed8 schema fields changed
    • addedOutput schema / $defs / LateFeeRule / properties / over_cap_penalties
      Added value: +{
      +  "default": [],
      +  "items": {
      +    "$ref": "#/$defs/OverCapPenalty"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / percent_of
      Added value: +{
      +  "default": "rent",
      +  "enum": [
      +    "rent",
      +    "past_due_payment"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / preconditions
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / preconditions_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / preconditions_section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / OverCapPenalty
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "applies_if": {
      +      "type": "string"
      +    },
      +    "conditional": {
      +      "default": false,
      +      "type": "boolean"
      +    },
      +    "damages": {
      +      "default": false,
      +      "type": "boolean"
      +    },
      +    "fees": {
      +      "default": false,
      +      "type": "boolean"
      +    },
      +    "fixed_usd": {
      +      "anyOf": [
      +        {
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        {
      +          "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +          "type": "string"
      +        }
      +      ]
      +    },
      +    "minimum_usd": {
      +      "anyOf": [
      +        {
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        {
      +          "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "quote": {
      +      "maxLength": 600,
      +      "type": "string"
      +    },
      +    "section": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "section",
      +    "quote",
      +    "fixed_usd",
      +    "applies_if"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / ReturnRule / properties / unsettled_rollover
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/UnsettledRollover"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / UnsettledRollover
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "holidays": {
      +      "default": [],
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "quote": {
      +      "maxLength": 1200,
      +      "type": "string"
      +    },
      +    "section": {
      +      "type": "string"
      +    },
      +    "source": {
      +      "type": "string"
      +    },
      +    "start_rolls": {
      +      "default": false,
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "section",
      +    "quote",
      +    "source"
      +  ],
      +  "type": "object"
      +}
  4. Changed58 schema fields changed
    • addedOutput schema / $defs / Alternative / properties / listed_warning
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / ContractDamages / properties / lead
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / DeductionRules / properties / discovery_cutoff
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/DiscoveryCutoff"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / DeductionRules / properties / lease_authorized
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/LeaseAuthorized"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / DeductionRules / properties / termination_notice_quote
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / DeductionRules / properties / termination_notice_section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / DepositCap / properties / advance_rent_exempt_months
      Added value: +{
      +  "anyOf": [
      +    {
      +      "exclusiveMinimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / DepositCap / properties / or_demanded_before
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
    • addedOutput schema / $defs / DepositCap / properties / prepaid_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / DepositCap / properties / section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / DepositCap / properties / variant_duty
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / DepositCap / properties / variant_extra_months
      Added value: +{
      +  "anyOf": [
      +    {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    {
      +      "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Deprecation
      Added value: +{
      +  "properties": {
      +    "field": {
      +      "type": "string"
      +    },
      +    "until": {
      +      "format": "date",
      +      "type": "string"
      +    },
      +    "use": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "field",
      +    "until",
      +    "use"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / DiscoveryCutoff
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "days_after_new_tenant": {
      +      "anyOf": [
      +        {
      +          "exclusiveMinimum": 0,
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "days_after_vacate": {
      +      "exclusiveMinimum": 0,
      +      "type": "integer"
      +    },
      +    "quote": {
      +      "maxLength": 600,
      +      "type": "string"
      +    },
      +    "section": {
      +      "type": "string"
      +    },
      +    "source": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "days_after_vacate",
      +    "section",
      +    "quote",
      +    "source"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / Forfeiture / properties / account_leg
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / cure_business_days
      Added value: +{
      +  "anyOf": [
      +    {
      +      "exclusiveMinimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / cure_section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / days
      Added value: +{
      +  "anyOf": [
      +    {
      +      "exclusiveMinimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / days_section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / doc_legs
      Added value: +{
      +  "default": [],
      +  "items": {
      +    "enum": [
      +      "itemized_statement",
      +      "move_in_condition_statement",
      +      "move_out_list"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / $defs / Forfeiture / properties / excuse_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / excuse_section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / in_full_quote
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / late_condition_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / late_refund_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / nothing_withheld_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / rent_only
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "exempt",
      +        "undisputed"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Forfeiture / properties / rent_only_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • changedOutput schema / $defs / Forfeiture / properties / trigger / enum
      Previous value: -[
      -  "late_statement",
      -  "late_return",
      -  "late_statement_or_return",
      -  "late_claim_notice",
      -  "not_in_input"
      -]New value: +[
      +  "late_statement",
      +  "late_return",
      +  "late_statement_or_return",
      +  "late_claim_notice",
      +  "late_action_or_return",
      +  "not_in_input",
      +  "missing_documentation",
      +  "receipts_after_estimate"
      +]
    • addedOutput schema / $defs / InterestRule / properties / section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Itemization / properties / section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / agreements_from
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / month_to_month_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / over_cap_remedy
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / over_cap_remedy_conditional
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / over_cap_remedy_damages
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / over_cap_remedy_fees
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / over_cap_remedy_if
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / over_cap_remedy_months
      Added value: +{
      +  "anyOf": [
      +    {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    {
      +      "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / over_cap_remedy_section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / over_cap_section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / over_cap_void
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / LateFeeRule / properties / renewal_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / LeaseAuthorized
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "categories": {
      +      "default": [],
      +      "items": {
      +        "enum": [
      +          "unpaid_rent",
      +          "unpaid_utilities",
      +          "cleaning",
      +          "carpet",
      +          "flooring",
      +          "paint",
      +          "blinds_window_coverings",
      +          "appliance",
      +          "fixture_or_hardware",
      +          "wall_or_door_repair",
      +          "key_or_lock",
      +          "late_fees",
      +          "lease_break_fee",
      +          "moving_and_storage",
      +          "reletting_costs",
      +          "trash_and_abandoned_items",
      +          "other_damage",
      +          "other"
      +        ],
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "note": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "quote": {
      +      "maxLength": 600,
      +      "type": "string"
      +    },
      +    "replace": {
      +      "default": false,
      +      "type": "boolean"
      +    },
      +    "section": {
      +      "type": "string"
      +    },
      +    "source": {
      +      "type": "string"
      +    },
      +    "verbatim": {
      +      "default": true,
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "section",
      +    "quote",
      +    "source"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / $defs / PenaltyRule / properties / condition / enum
      Previous value: -[
      -  "bad_faith",
      -  "willful",
      -  "any_late",
      -  "late",
      -  "any_violation",
      -  "without_reasonable_basis",
      -  "court_discretion",
      -  "unpaid_annual_interest"
      -]New value: +[
      +  "bad_faith",
      +  "willful",
      +  "any_late",
      +  "late",
      +  "any_violation",
      +  "without_reasonable_basis",
      +  "court_discretion",
      +  "unpaid_annual_interest",
      +  "after_tenant_notice",
      +  "absence_of_good_faith",
      +  "no_account_and_no_listing",
      +  "late_claim_notice",
      +  "late_action_or_return"
      +]
    • addedOutput schema / $defs / PenaltyRule / properties / earlier_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / PenaltyRule / properties / fees_only_without_multiple
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
    • addedOutput schema / $defs / PenaltyRule / properties / low_on_merits
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
    • addedOutput schema / $defs / PenaltyRule / properties / note_from
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / PenaltyRule / properties / section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Photos / properties / effective_by
      Added value: +{
      +  "default": "move_out",
      +  "enum": [
      +    "move_out",
      +    "notice"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / $defs / Photos / properties / missing_from
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Photos / properties / section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Receipts / properties / estimate_days
      Added value: +{
      +  "anyOf": [
      +    {
      +      "exclusiveMinimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Receipts / properties / missing_from
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Receipts / properties / section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / ReturnRule / properties / prepaid_rent_returned
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / deprecation
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "$ref": "#/$defs/Deprecation"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
  5. Changed7 schema fields changed
    • addedOutput schema / $defs / Reading
      Added value: +{
      +  "properties": {
      +    "counts": {
      +      "$ref": "#/$defs/ReadingCounts"
      +    },
      +    "findings": {
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "id": {
      +      "type": "string"
      +    },
      +    "kind": {
      +      "enum": [
      +        "notes",
      +        "document"
      +      ],
      +      "type": "string"
      +    },
      +    "model": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "notes": {
      +      "items": {
      +        "$ref": "#/$defs/ReadingNote"
      +      },
      +      "type": "array"
      +    },
      +    "prompt_version": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "kind",
      +    "counts",
      +    "findings"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / ReadingCounts
      Added value: +{
      +  "properties": {
      +    "ai": {
      +      "type": "integer"
      +    },
      +    "parser": {
      +      "type": "integer"
      +    },
      +    "total": {
      +      "type": "integer"
      +    },
      +    "unmatched": {
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "total",
      +    "ai",
      +    "parser",
      +    "unmatched"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / ReadingNote
      Added value: +{
      +  "properties": {
      +    "code": {
      +      "type": "string"
      +    },
      +    "finding_ids": {
      +      "default": [],
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "kind": {
      +      "enum": [
      +        "warning",
      +        "assumption"
      +      ],
      +      "type": "string"
      +    },
      +    "message": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / Review
      Added value: +{
      +  "properties": {
      +    "ai_read": {
      +      "default": 0,
      +      "type": "integer"
      +    },
      +    "note": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "reading_id": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "status": {
      +      "default": "verified",
      +      "enum": [
      +        "draft",
      +        "verified"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / reading
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/Reading"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / properties / request_hash
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / properties / review
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/Review"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
  6. Changed22 schema fields changed
    • addedInput schema / properties / as_of
      Added value: +{
      +  "description": "Optional date (YYYY-MM-DD): show the law in force on that day, for a past move-out the day the tenancy ended. Omitted: the current law.",
      +  "format": "date",
      +  "type": "string"
      +}
    • addedInput schema / properties / expect_ruleset
      Added value: +{
      +  "description": "Optional. The ruleset version you built against, as results carry it in provenance.ruleset_version (e.g. 'sd-2026.11.14'), or its sha256: hash. If the rules have changed since, the call fails (nothing computed, nothing charged) and says what is in force now, so you upgrade on your own schedule. Leave it out to answer under the current rules.",
      +  "type": "string"
      +}
    • addedInput schema / properties / serve_pinned
      Added value: +{
      +  "default": false,
      +  "description": "Optional, with expect_ruleset. True asks us to answer under the ruleset version you named even when the rules have changed since, from that version's signed bundle; the result says so in served_from_bundle. We refuse a version older than 12 months, one a later correction or law change replaced for your state, or one we have no bundle for. Default false: the call fails whenever the rules have changed.",
      +  "type": "boolean"
      +}
    • addedOutput schema / $defs / Alternative / properties / listed_if
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • removedOutput schema / $defs / CleaningRule / properties / effective_on
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "format": "date",
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null
      -}
    • addedOutput schema / $defs / DeductionRules / properties / cleaning / anyOf
      Added value: +[
      +  {
      +    "items": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "amendment": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "from": {
      +          "anyOf": [
      +            {
      +              "format": "date",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "governed_by": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "note": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "source": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "until": {
      +          "anyOf": [
      +            {
      +              "format": "date",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "value": {
      +          "$ref": "#/$defs/CleaningRule"
      +        }
      +      },
      +      "required": [
      +        "value"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "$ref": "#/$defs/CleaningRule"
      +  },
      +  {
      +    "items": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "basis": {
      +          "enum": [
      +            "named",
      +            "damage"
      +          ],
      +          "type": "string"
      +        },
      +        "condition": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "effective_on": {
      +          "anyOf": [
      +            {
      +              "format": "date",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "note": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "quote": {
      +          "maxLength": 600,
      +          "type": "string"
      +        },
      +        "routine": {
      +          "default": "barred",
      +          "enum": [
      +            "barred",
      +            "lease",
      +            "reasonable"
      +          ],
      +          "type": "string"
      +        },
      +        "routine_signed_provision": {
      +          "default": false,
      +          "type": "boolean"
      +        },
      +        "section": {
      +          "type": "string"
      +        },
      +        "source": {
      +          "type": "string"
      +        },
      +        "unless_no_notice": {
      +          "default": false,
      +          "type": "boolean"
      +        },
      +        "verbatim": {
      +          "default": true,
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "basis",
      +        "section",
      +        "quote",
      +        "source"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  }
      +]
    • removedOutput schema / $defs / DeductionRules / properties / cleaning / items
      Removed value: -{
      -  "$ref": "#/$defs/CleaningRule"
      -}
    • removedOutput schema / $defs / DeductionRules / properties / cleaning / type
      Removed value: -"array"
    • addedOutput schema / $defs / DescribeEach
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "quote": {
      +      "maxLength": 400,
      +      "type": "string"
      +    },
      +    "rent_only_exempt": {
      +      "default": false,
      +      "type": "boolean"
      +    },
      +    "section": {
      +      "type": "string"
      +    },
      +    "source": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "section",
      +    "quote",
      +    "source"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / InterestRule / properties / rate_schedule / anyOf
      Added value: +[
      +  {
      +    "items": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "amendment": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "from": {
      +          "anyOf": [
      +            {
      +              "format": "date",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "governed_by": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "note": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "source": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "until": {
      +          "anyOf": [
      +            {
      +              "format": "date",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "value": {
      +          "anyOf": [
      +            {
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            {
      +              "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +              "type": "string"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "value"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "minimum": 0,
      +    "type": "number"
      +  },
      +  {
      +    "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "from": {
      +          "format": "date",
      +          "type": "string"
      +        },
      +        "note": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "rate_value": {
      +          "anyOf": [
      +            {
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            {
      +              "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +              "type": "string"
      +            }
      +          ]
      +        },
      +        "source": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "to": {
      +          "format": "date",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "from",
      +        "to",
      +        "rate_value"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  }
      +]
    • removedOutput schema / $defs / InterestRule / properties / rate_schedule / items
      Removed value: -{
      -  "$ref": "#/$defs/RateWindow"
      -}
    • removedOutput schema / $defs / InterestRule / properties / rate_schedule / type
      Removed value: -"array"
    • addedOutput schema / $defs / Itemization / properties / describe_each
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/DescribeEach"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / MoveOutList / properties / unnotified_section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Provenance / properties / rules_as_of
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • removedOutput schema / $defs / RateWindow
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "from": {
      -      "format": "date",
      -      "type": "string"
      -    },
      -    "note": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null
      -    },
      -    "rate_value": {
      -      "anyOf": [
      -        {
      -          "minimum": 0,
      -          "type": "number"
      -        },
      -        {
      -          "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      -          "type": "string"
      -        }
      -      ]
      -    },
      -    "source": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null
      -    },
      -    "to": {
      -      "format": "date",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "from",
      -    "to",
      -    "rate_value"
      -  ],
      -  "type": "object"
      -}
    • addedOutput schema / $defs / Receipts / properties / estimate_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / Receipts / properties / estimate_section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / ResultSignature
      Added value: +{
      +  "properties": {
      +    "jws": {
      +      "type": "string"
      +    },
      +    "payload": {
      +      "$ref": "#/$defs/ResultSignaturePayload"
      +    },
      +    "verify_code": {
      +      "type": "string"
      +    },
      +    "verify_url": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "jws",
      +    "payload",
      +    "verify_code",
      +    "verify_url"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / ResultSignaturePayload
      Added value: +{
      +  "properties": {
      +    "capability": {
      +      "type": "string"
      +    },
      +    "engine_version": {
      +      "type": "string"
      +    },
      +    "issued_at": {
      +      "type": "string"
      +    },
      +    "kid": {
      +      "type": "string"
      +    },
      +    "operation": {
      +      "type": "string"
      +    },
      +    "result_hash": {
      +      "type": "string"
      +    },
      +    "ruleset_hash": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "ruleset_version": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "v": {
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "v",
      +    "kid",
      +    "capability",
      +    "operation",
      +    "ruleset_version",
      +    "ruleset_hash",
      +    "engine_version",
      +    "result_hash",
      +    "issued_at"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / ReturnRule / properties / demand_in_writing
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / signature
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/ResultSignature"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
  7. Changed1 schema field changed
    • addedInput schema / properties / state / description
      Added value: +"US state, 2-letter code or name (e.g. 'TX')."
  8. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is free; the description adds genuinely new traits: deterministic and source-cited results, plus the fact that a failed pre-check computes and charges nothing. It does not surface the ruleset-pinning/upgrade failure mode, though the schema covers that thoroughly.

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

Conciseness4/5

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

Front-loaded with purpose, covered cities, inputs, then exclusions — a sensible order. Slightly dense and mildly redundant ("with citations" then "source-cited"), but nearly every clause carries information.

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

Completeness4/5

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

Return contents, scope, exclusions and determinism are covered, and an output schema exists so return values need not be spelled out. The historical "as_of" capability and ruleset-pinning behavior go unmentioned in prose, but the schema documents both in detail.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline applies. The description restates state and city but is silent on as_of, audit, expect_ruleset and serve_pinned, so it adds little semantic value beyond the schema's own descriptions.

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?

States a specific verb and resource ("Looks up the security deposit rules ... for one US state") and bounds scope immediately with "(deposits only)", plus enumerates the covered city ordinances. The agent can distinguish it from deposit_settlement_settle without opening either schema.

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?

Explicit "Not for:" list rules out move-out settlement, evictions, rent collection, rent control, lease renewal and legal advice, and names the alternative sibling (deposit_settlement_settle) with the condition that selects it. Both when-to-use and when-not-to-use are covered.

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.