Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoHTTP port (default 8080). Alternative to MCP_HTTP_PORT.8080
MCP_HTTP_PORTNoHTTP port (default 8080). Alternative to PORT.8080
MCP_TRANSPORTNo`stdio` (default) or `http`.stdio
LENDLORD_EMAILNoLogin email.
MCP_AUTH_TOKENNoRequired bearer token in HTTP mode.
LENDLORD_PASSWORDNoLogin password.
LENDLORD_READ_ONLYNo`true` disables writes.
LENDLORD_PAYLOAD_KEYNoOverride the auto-discovered payload key (normally not needed).
LENDLORD_TOTP_SECRETNoBase32 TOTP secret, if 2FA is enabled.
LENDLORD_AUTO_CONFIRMNo`true` skips the once-per-session write confirmation.
LENDLORD_SESSION_COOKIENoAlternative 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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 file is its attached receipt (see attach_transaction_receipt).

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 limit (max 1000); continue with skip = nextSkip while hasMore is true.

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. fields uses Lendlord field names (see list_property_fields), e.g. {"Property Value": 150000, "Date of Purchase": "2024-05-01"}. Owned by the first applicant unless ownerApplicantId is given.

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. key is a document slot from list_property_fields (e.g. gasCertificate, epc, eicr, insurancePolicy); any other key creates a custom document. Uses the account's upload quota.

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 fields may include: phone, mobile, dob, notes, unitName, tenancyStartDate, tenancyEndDate, firstPaymentDate, rentReviewDate (dates YYYY-MM-DD), rentReviewFrequency (Quarterly|Semi-Annually|Annually|Every 2 Years|Every 3 Years|Every 5 Years), generatePaymentScheduleFor (3 months|6 months|12 months|24 months), depositScheme (TDS|DPS|Mydeposits|Zerodeposits|FlatFair|SafeDeposits|Other), depositAmount, guarantor/rollingTenancy/inventoryUndertaken/legionellaInspectionRequired (Yes|No).

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, receipt holds its name and a temporary download link.

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 40 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessResponsive