Skip to main content
Glama

Tektolo Rental Property

Look up turnover issue codes

property_turnover_issue_codes
Read-onlyIdempotent

The issue-code catalog for rental-unit turnover findings (group.issue codes such as carpet.pet_urine). Inputs, all optional: q (search words or a code), group (e.g. flooring), limit, include_aliases; query and area are older names for q and group. With no arguments it returns every code in short form (code, name, group, default extent, refer-out). With q it returns the best matches with description, aliases, not_when, rooms and examples. Returns the codes, the match count, every group, and general.manual_quote, the code for a condition no other code fits. Not for: cost estimates, legal or security-deposit questions, work other than rental turnover. Deterministic and source-cited: the same input gives the same result.

Input Schema

NameRequiredDescriptionDefault
qNoWords to search for in the codes, names, aliases, descriptions and examples, e.g. 'pet stain carpet'. Hits come back with full detail. Leave out to list every code in short form.
areaNoOlder name for group; use group.
auditNoAlso return the run record and input/result hashes (an audit trail). Default false.
groupNoOnly codes in this group, e.g. 'flooring' or 'walls' (a part of the unit, not a room). `groups` in the answer lists them all.
limitNoMost codes to return. Default: 8 with q, every code without.
queryNoOlder name for q; use q.
client_refsNoYour own reference ids (e.g. unit_id, job_id). Echoed back, never used.
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.
include_aliasesNoAlso return aliases in the short list (search hits always carry them).

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. Changed24 schema fields changed
    • changedInput schema / properties / area / description
      Previous value: -"Optional taxonomy area filter, e.g. 'flooring' or 'walls' (not a room). Call with no arguments to list every area in `areas`."New value: +"Older name for group; use group."
    • addedInput schema / properties / area / maxLength
      Added value: +40
    • addedInput schema / properties / group
      Added value: +{
      +  "description": "Only codes in this group, e.g. 'flooring' or 'walls' (a part of the unit, not a room). `groups` in the answer lists them all.",
      +  "maxLength": 40,
      +  "type": "string"
      +}
    • changedInput schema / properties / include_aliases / description
      Previous value: -"Also return each code's aliases (larger result)."New value: +"Also return aliases in the short list (search hits always carry them)."
    • removedInput schema / properties / limit / default
      Removed value: -8
    • changedInput schema / properties / limit / description
      Previous value: -"Most codes to return."New value: +"Most codes to return. Default: 8 with q, every code without."
    • changedInput schema / properties / limit / maximum
      Previous value: -200New value: +500
    • addedInput schema / properties / q
      Added value: +{
      +  "description": "Words to search for in the codes, names, aliases, descriptions and examples, e.g. 'pet stain carpet'. Hits come back with full detail. Leave out to list every code in short form.",
      +  "maxLength": 200,
      +  "type": "string"
      +}
    • changedInput schema / properties / query / description
      Previous value: -"Keywords to match against codes, names and aliases, e.g. 'pet stain carpet'."New value: +"Older name for q; use q."
    • addedOutput schema / $defs / Deprecation
      Added value: +{
      +  "properties": {
      +    "field": {
      +      "type": "string"
      +    },
      +    "until": {
      +      "format": "date",
      +      "type": "string"
      +    },
      +    "use": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "field",
      +    "until",
      +    "use"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / $defs / IssueCode / properties / aliases / default
      Removed value: -[]
    • removedOutput schema / $defs / IssueCode / properties / area
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / $defs / IssueCode / properties / default_extent
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / IssueCode / properties / description
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / IssueCode / properties / examples
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / $defs / IssueCode / properties / group
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / $defs / IssueCode / properties / not_when
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / IssueCode / properties / refer_out
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / $defs / IssueCode / properties / rooms
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / $defs / IssueCode / required
      Previous value: -[
      -  "code",
      -  "name",
      -  "area"
      -]New value: +[
      +  "code",
      +  "name",
      +  "group"
      +]
    • addedOutput schema / $defs / IssueCodesResult / properties / groups
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / $defs / IssueCodesResult / properties / manual_quote_code
      Added value: +{
      +  "default": "general.manual_quote",
      +  "type": "string"
      +}
    • addedOutput schema / $defs / IssueCodesResult / properties / note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / properties / deprecation
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "$ref": "#/$defs/Deprecation"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
  2. 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
      +}
  3. Changed5 schema fields changed
    • 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 / 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 / properties / signature
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/ResultSignature"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
  4. Changed1 schema field changed
    • addedInput schema / properties / limit / description
      Added value: +"Most codes to return."
  5. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so safety is covered; the description adds that results are 'deterministic and source-cited' and enumerates the return envelope (codes, match count, groups, general.manual_quote). It says nothing about the ruleset-pinning/failure behavior (expect_ruleset, serve_pinned), which is left entirely to the schema.

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-loads the resource and the argument-driven behavior, then closes with exclusions and a determinism note; nearly every clause carries information. The 'Inputs, all optional' sentence is somewhat listy, but not wasteful.

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?

With an output schema present the description needn't detail return shape, yet it still summarizes it; combined with the exclusions and optional-input overview an agent can call this correctly. The one substantive gap is the ruleset-version contract, which lives only in the schema.

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 every parameter is already documented, and the description's mention of q, group, limit, include_aliases and the query/area legacy aliases only restates the schema. It adds no syntax, interaction, or behavioral meaning for the more unusual parameters (audit, serve_pinned, expect_ruleset), so baseline 3 applies.

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 resource ('the issue-code catalog for rental-unit turnover findings') and scopes it with a concrete example ('carpet.pet_urine'). It also explicitly marks the boundary against siblings with 'Not for: cost estimates, legal or security-deposit questions, work other than rental turnover', which separates it from property_turnover_quick_estimate and the deposit_settlement tools.

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

Usage Guidelines4/5

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

Gives concrete usage modes: 'With no arguments it returns every code in short form' vs. 'With q it returns the best matches with description, aliases...'. Exclusions are stated by domain but no sibling tool is named as the alternative to redirect to, which is the only missing piece.

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.