Skip to main content
Glama

Validate a lease comp and derive its NER

lease_comp_validate
Read-onlyIdempotent

Check a lease comparable one firm shares with others, as a FactLot fact with predicate lease.comp, and derive its net effective rent. The fact goes through fact_validate (schema, citations, rights), then the comp's own rules: shape (spec/schemas/fact.json LeaseComp: area, commencement, term or expiration, starting or current rent, escalation, free rent, TI, leasing commissions, expense basis, confirming party, verification), an expiration after commencement, a term that matches the dates, free rent within the term, no email, phone or ID number in the text. A comp names no person or company. With the default share profile it also needs the deal's starting rent, escalations, free rent, TI, property type, an expense basis other than unknown, and stated rights. When valid and a starting rent is given, ner.fact is a computed lease.net_effective_rent fact (formula calc.net_effective_rent@1, straight-line and discounted at discount_rate_annual, on the comp's own expense basis; no conversion between full service and net). Returns { valid, issues, warnings, ner }. Call before sharing a comp.

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": {
      "fact": "<fact>"
    },
    "name": "lease_comp_validate"
  }
}

Input Schema

NameRequiredDescriptionDefault
factYesA FactLot fact with predicate lease.comp: subject (an fl:lease: URN), value (the comp), as_of, provenance (with at least one source: your own record is fine, cited by document_id or sha256 without sharing it), and rights (ai_use and redistribution).
profileNoshare (default): a comp offered to other firms: needs the deal's starting rent, escalations, free rent, TI, expense basis, property type, a term and stated rights. observed: a rent seen in a public record (current_rent_psf_yr is enough); no NER is derived without a starting rent.share
discount_rate_annualNoAnnual discount rate for the discounted NER (an assumption, not part of the comp). 0 gives the straight-line NER only.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, and the description adds substantial context beyond them: the specific validation rules (expiration after commencement, term matching dates, free rent within term, no PII in text), the extra fields required by the share profile, and the return shape { valid, issues, warnings, ner }. It also discloses that no NER is derived without a starting rent and that no full-service/net conversion occurs, which are real behavioral constraints an agent could not infer.

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?

Purpose is front-loaded, but the middle is a dense run-on with long parenthetical enumerations (area, commencement, term or expiration, starting or current rent, escalation, free rent, TI, commissions...) that is hard to scan. There is mild redundancy between 'no email, phone or ID number in the text' and 'A comp names no person or company', though the volume is broadly justified by the rule set.

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?

There is no output schema, and the description compensates by naming the returned object and its four keys plus the shape of the derived ner.fact. Minor gaps remain, such as the format or severity of issues and whether ner is null versus absent when validation fails, but an agent has enough to invoke and interpret it.

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 description coverage is 100%, so the schema already documents the fact payload, the share/observed enum, and the discount rate including the zero-rate straight-line case. The description restates the share profile requirements and adds the formula identifier calc.net_effective_rent@1 plus the note that discounting is an assumption rather than part of the comp, but most parameter meaning is already in the schema, so the baseline 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?

The first sentence states a specific verb and resource: check a lease comparable that a firm shares, framed as a FactLot fact with predicate lease.comp, and derive its net effective rent. It also distinguishes itself from the generic calc siblings by operating on a fact and routing through fact_validate, so an agent can tell what this does that calc_net_effective_rent does not.

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?

The closing instruction 'Call before sharing a comp' gives an explicit trigger, and the profile discussion makes clear when the stricter share rules apply versus the observed case. It does not name an alternative tool for a bare NER calculation without a fact, so the routing is clear but not exhaustive.

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.