lendlord-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP port (default 8080). Alternative to MCP_HTTP_PORT. | 8080 |
| MCP_HTTP_PORT | No | HTTP port (default 8080). Alternative to PORT. | 8080 |
| MCP_TRANSPORT | No | `stdio` (default) or `http`. | stdio |
| LENDLORD_EMAIL | No | Login email. | |
| MCP_AUTH_TOKEN | No | Required bearer token in HTTP mode. | |
| LENDLORD_PASSWORD | No | Login password. | |
| LENDLORD_READ_ONLY | No | `true` disables writes. | |
| LENDLORD_PAYLOAD_KEY | No | Override the auto-discovered payload key (normally not needed). | |
| LENDLORD_TOTP_SECRET | No | Base32 TOTP secret, if 2FA is enabled. | |
| LENDLORD_AUTO_CONFIRM | No | `true` skips the once-per-session write confirmation. | |
| LENDLORD_SESSION_COOKIE | No | Alternative to email/password: a `Cookie` header from a logged-in browser. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_accountA | The Lendlord account: user, team role, currency/country settings, applicants (property owners), and plan usage limits. Excludes property data (use list_properties). |
| list_propertiesB | All properties in the portfolio with key figures (address, postcode, value, rent, mortgage). Optionally filter by free text matched against address/postcode. |
| get_propertyB | Every stored field for one property, plus its tenants and the documents linked to it. |
| list_documentsB | Documents stored in Lendlord, with the entities (property, tenant, …) each is linked to. Optionally filter by linked entity id or name text. |
| get_rent_collectionB | Expected rent payments (per tenant, with due dates and matched transactions) between two dates. |
| list_transactionsA | Bank/manual transactions between two dates, with optional filters to find the one you want (e.g. the payment an invoice belongs to). A transaction's |
| get_profit_and_lossB | P&L per property by month, with the category list used for transactions. |
| list_communicationsA | Maintenance reports and other tenant/landlord communications, newest first. Fetches Lendlord's 100-item pages as needed up to |
| compliance_overviewA | Upcoming and overdue expiry dates across the portfolio (EPC, insurance, gas safety, EICR, mortgage rate expiry, …), sorted soonest first. |
| lendlord_requestA | Call any Lendlord /api endpoint directly (encryption handled). Use for features without a dedicated tool; see docs/api.md for endpoints. GET is read-only; other methods change data and need write confirmation. |
| list_property_fieldsA | Field names accepted by add_property / update_property, and the document slot keys for upload_document. |
| update_property_imagesA | Add photos to a property's Photos gallery, remove selected gallery images by key, or replace images by adding new files and removing old keys together. This is separate from upload_document, which stores files under Documents. Provide one or more image files and/or removeImageKeys. Image keys are the keys shown by get_property under fields.images. |
| add_propertyA | Create a property. |
| update_propertyA | Change fields on a property. Only the fields you pass change; set a field to null to clear it. Field names from list_property_fields. Dates as YYYY-MM-DD (DD/MM/YYYY also accepted). Money accepts 150000, "£150,000" or "150k". "Internal Area" is square metres ("73", "73 sq m"; "790 sq ft" is converted). Percentages (rates, agent fee, ownership) are stored as fractions: send "4.5%" or 4.5 (stored as 0.045); values of 1 or less are taken as fractions already. Invalid values are rejected with a field-specific error. |
| delete_propertyC | Permanently delete a property from the portfolio. |
| upload_documentA | Upload a file to Lendlord and link it to a property (or tenant). To attach a file to a bank transaction (payment) use attach_transaction_receipt instead. Provide exactly one of filePath (on the server's machine), url, or base64 + fileName. |
| rename_documentC | Change a document's display name. |
| delete_documentA | Remove a document from the property/tenant it is linked to (deletes it if that was its only link). |
| list_tenantsA | Tenants (actual and prospect), optionally for one property. Each tenant is linked to exactly one property (propertyId + propertyAddress); propertyMissing means it points at a property that no longer exists. Fix a wrong link with update_tenant { propertyDetailsId }. |
| get_tenantB | Every stored field for one tenant, plus documents linked to them. |
| add_tenantB | Add a tenant to a property. Optional |
| update_tenantA | Change fields on a tenant (same field names as add_tenant). Only the fields you pass change; null clears. Move a tenant to another property with { propertyDetailsId: }. |
| delete_tenantC | Permanently delete a tenant. |
| get_communicationC | One maintenance report or conversation, including its messages. |
| create_maintenance_reportB | Log a maintenance issue on a property. maintenanceType is one of: Air-conditioning, Heating and boiler, Electricity, Internet, Lighting, Plumbing, Water or leaks, Basin, Bathroom and Toilet, Laundry, Alarms and smoke detectors, Security camera system maintenance, Intercom, Doors and locks, Pests/Vermin, Floors walls and ceilings, Structural Issues, Windows, Furniture, Kitchen, Appliances, Mold, Cleaning, Carpentry, Exterior Maintenance, Roof, Garden, Garage, Shared facilities, Bike storage, Bin storage, Chimney, Stairs, Other. Not shared with tenants unless shareWithTenants is true. |
| log_communicationA | Record a past email thread, call or letter against a property (issue #3). Lendlord has no generic communication log and landlords cannot start a "conversation" without a tenant, so this is stored as a back-dated maintenance report (default type "Other", status closed, not shared with tenants) whose description lists the date, counterparties and summary. It then appears in list_communications/get_communication with the original date. Use file_email as well to keep the full message and attachments as documents. |
| update_communicationC | Change a maintenance report/conversation: status (open|closed), archived, summary, description, maintenanceType, shared. |
| add_communication_messageA | Add a message to a maintenance report/conversation. kind "note" = internal note (landlord only); kind "message" = reply visible to the tenant. |
| delete_communicationA | Permanently delete a maintenance report/conversation (use update_communication archived:true to keep history). |
| list_tasksB | Tasks (custom and Lendlord-generated, e.g. MISSING_DUE_DATES) and alerts (e.g. Payment Overdue). Defaults to active ones. |
| create_taskC | Add a custom task with a due date, optionally tied to a property. |
| update_taskB | Edit a task, or change its status: completed, active (reopen) or deleted. |
| link_documentA | Attach an existing document to another property or tenant. Lendlord stores this as a separate copy (same file, own id) under the original name. |
| send_documentA | Email a stored document to someone (Lendlord sends it with the file attached). Replies go to the account's email unless replyTo is given. This sends a real email. |
| find_propertyA | Rank properties against free text such as an email's subject/body, an address, postcode, tenant name/email, or a policy/certificate number. Use before file_email to pick the property. |
| file_emailA | Store an email (and its attachments) as documents on a property or tenant. Pass either emlBase64 (raw RFC 822 message) or subject/from/to/date/text/html. Attachments are uploaded as separate documents named " - - ". |
| update_transactionA | Change the property or category linked to a bank/manual transaction. Only the fields you pass change. The existing receipt is kept; this does not upload or remove a receipt. |
| get_transactionA | One bank/manual transaction with all its fields. If it has a receipt, |
| attach_transaction_receiptA | Attach an invoice, receipt or other file to a bank/manual transaction (payment). A transaction holds ONE attachment: attaching again replaces it. Use this instead of upload_document, which only links files to properties and tenants. Provide exactly one of filePath (on the server's machine), url, or base64 + fileName. Accepts PDF, images, Word/Excel/PowerPoint, CSV and text. Use list_transactions (search / amount / hasReceipt) to find the transaction. |
| remove_transaction_receiptA | Remove the file attached to a bank/manual transaction. The transaction itself is not changed. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 40 tools
Most tools target distinct resource+action pairs, and descriptions explicitly distinguish overlapping areas such as upload_document vs. attach_transaction_receipt vs. link_document vs. file_email. However, the generic lendlord_request and the maintenance-report workaround used by log_communication still require careful reading and could invite occasional misselection.
Nearly all tool names use snake_case with a clear verb_noun pattern, such as list_tenants, add_property, update_tenant, and delete_document. A few names break the pattern slightly (compliance_overview, lendlord_request, get_profit_and_loss), but the set remains readable and predictable.
With 40 tools, the server is far beyond the typical 3–15 well-scoped range and exceeds the 25+ threshold for being too heavy. While the property-management domain is broad, this many tools increases selection burden and suggests consolidation is needed.
Coverage is broad: CRUD for properties, tenants, communications, tasks, and documents, plus financials, compliance, rent collection, account details, and a raw API fallback. Minor gaps remain, such as no direct create/delete transaction tool and no get-single-task tool, but lendlord_request can work around less common operations.