Tenantback CAM Audit
Server Details
Audit a landlord's CAM reconciliation against the lease. Finds overcharges with clause citations.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 2 tools
The two tools are split cleanly along the async job lifecycle: one submits an audit and returns a request id, the other retrieves status/findings for that id. Their descriptions explicitly reference each other ('call get_audit_result after about 3 minutes'), so an agent cannot reasonably mistake one for the other.
Both names use snake_case with an action-oriented verb ('audit_...' for the action, 'get_...' for retrieval) and share the 'audit' noun stem. The pattern is predictable and readable across the whole set.
Two tools is thin in the abstract, but the submit-then-poll asynchronous pattern inherently requires exactly one start tool and one result tool. Nothing here feels redundant or missing for the stated single-purpose audit scope.
The core lifecycle (submit audit -> poll findings) is fully covered, including an explicit fallback path for unreadable files and instructions for acting on results. Minor gaps exist: no listing of prior audits, no cancel/retry, and the user must retain the request id to get results.
Available Tools
2 toolsaudit_cam_reconciliationAudit a CAM reconciliation against the leaseAInspect
Checks a landlord's CAM / operating expense reconciliation (true-up) line by line against the commercial lease: pro-rata share, CAM caps, admin and management fees, excluded costs (capital repairs, landlord overhead and more), gross-up, totals and late delivery. Pass the full text of the lease (with amendments) and of the reconciliation, as you read them from the user's files; mark page breaks as '--- page N ---' so citations point to the right page. HTTPS links to the PDFs also work. Returns a request id: call get_audit_result after about 3 minutes. If you cannot read the files, tell the user to forward them to audit@tenantback.com instead.
| Name | Required | Description | Default |
|---|---|---|---|
| lease_url | No | ||
| lease_text | No | Full text of the lease and any amendments | |
| contact_name | No | ||
| contact_email | Yes | Work email of the tenant the documents belong to. Their free workspace and report are tied to it. | |
| property_name | No | Store, center or property name, for the user's reference | |
| statement_url | No | ||
| statement_text | No | Full text of the landlord's reconciliation statement |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden, and it does disclose the asynchronous contract (returns a request id, poll a sibling after about 3 minutes) plus a graceful-degradation path when documents are unreadable. It does not mention authentication, quota, or cost, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and every sentence carries actionable content (inputs, formatting, polling, fallback). The middle sentences are dense and slightly run-on, but nothing is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, no-output-schema tool this covers the essentials: what is compared, how to supply documents, how results are retrieved asynchronously, and what to do when inputs cannot be read. The polling return value is explained in place of a missing output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 57%, and the description compensates meaningfully: it tells the agent lease_text must include amendments, that page-break markers preserve citation accuracy, and that lease_url/statement_url accept HTTPS PDF links. It leaves contact_email and property_name to the schema, which documents them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (checks/audits) and resource (CAM/operating expense reconciliation against the lease) and enumerates exactly what is compared: pro-rata share, caps, admin fees, excluded costs, gross-up, totals, late delivery. An agent can distinguish this from the sibling get_audit_result, which it also references by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit input instructions (pass the full lease with amendments and the full reconciliation, mark page breaks as '--- page N ---', URLs also work), a sequencing rule (call get_audit_result after ~3 minutes), and a fallback path (tell the user to forward files to audit@tenantback.com if they cannot be read). This is close to a complete invocation playbook.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_resultGet audit resultBInspect
Status and findings of an audit started with audit_cam_reconciliation. Present the total, then each finding with its lease clause and math. When money is recoverable, mention that the user can open the workspace link to approve an objection letter; Tenantback handles the landlord and keeps 25% of what is recovered.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the commercial model (Tenantback keeps 25% of recoveries) and the approval workflow via a workspace link, and the word 'Status' hints the audit may be async/incomplete. It omits auth requirements, error behavior, and any pagination or result-size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose before presentation instructions. The pricing detail ('keeps 25% of what is recovered') is longer than strictly necessary for invoking the tool, but it is arguably needed for the agent to relay results correctly, so the length is mostly justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 partially compensates by enumerating what comes back: a total, individual findings with lease clause and math, and a recovery/approval path. It still leaves the only parameter and the meaning of possible 'status' values unexplained, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter, request_id, is never mentioned in the description. The link to audit_cam_reconciliation implies the id originates there, but the description does nothing to compensate for the undocumented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (status and findings of an audit) and explicitly ties it to the sibling that creates it: 'started with audit_cam_reconciliation'. That lets an agent separate this retrieval from the initiating tool without reading schemas. It is slightly indirect (no leading verb like 'Retrieve') but the purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'started with audit_cam_reconciliation' implies this is the follow-up call, so sequencing is inferable. However, it never states prerequisites such as whether the audit must be finished, how to handle a still-running status, or what to do if the request_id is invalid. Guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
audit_cam_reconciliation - First observed
get_audit_result
Related MCP Connectors
Audit junk fees, project annual costs and draft dispute letters. Free.
Reads invoices and receipts from PDF to JSON and checks the math. $0.04/page via x402.
Lease analysis: flag illegal/risky clauses by jurisdiction (ontario, bc, nyc, texas, general).
Audit a pasted SaaS subscription list for redundant-category overlap and overspend.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables renters to cross-examine their rent ledger against their lease using deterministic tools, uncovering discrepancies in charges, fees, and rent amounts.15MIT
- FlicenseNot gradedqualityDmaintenanceEnables querying, extracting terms, and projecting rent from commercial lease documents via MCP tools.-
- AlicenseNot gradedqualityDmaintenanceAudit any Airbnb, VRBO, or STR listing URL for dollar-denominated revenue gaps. Free tier shows category grades and monthly losses. Pro tier unlocks ranked action plans.6 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents and finance teams to extract structured fields from messy invoices and audit them before payment, applying seven evidence-backed risk rules that catch total/tax mismatches, duplicate invoices, missing fields, future dates, and round amounts, then returning a 0–100 score with a payment link. Exposes four MCP tools over stdio and Streamable HTTP (spec 2025-11-25) plus a web UI, backed by an optional AWS Bedrock or OpenAI-compatible extraction brain that degrades gracefully to a zero-dependency offline engine.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.