LeaseLine Rent Ledger MCP
A rent ledger and prorated rent calculator for small landlords and property managers. It builds tenant ledgers with monthly charges, prorated move-in/out rent, late fees, payments, and running balances. Users can input lease terms and payments via chat or CSV/Excel to generate PDF statements, Excel workbooks, and CSV files.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://rent-ledger.zovo.one/mcpWhat you can do with it
- Calculate prorated rent for move-in and move-out dates
- Generate tenant rent ledgers with late fees and running balances
- Apply payments to oldest charges first and track overpayment credits
- Download PDF tenant ledger statements and Excel workbooks
Source and maintenance
Protocol and capabilities
- Server
- rent-ledger 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 2 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
2 advertised
calculate_prorated_rent — Calculate prorated rent
Use this when the user wants prorated rent for a move-in or move-out (prorated rent calculator, 'tenant moved in on the 17th, how much rent do they owe', partial month rent). Returns the amount, computed to the cent, by three methods side by side (actual days in the month, 30-day month, 365-day year), the daily rate, and the formula, counting the move-in and move-out days inclusively; leap-year February is handled. Assumes rent covers calendar months (due on the 1st). Does not build a full ledger (use generate_rent_ledger for payments and balances) and does not give legal advice.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"monthly_rent"
],
"properties": {
"method": {
"enum": [
"actual_days",
"thirty_day",
"annual_365"
],
"type": "string",
"description": "The proration method the lease uses; the result shows all three. actual_days (default): rent / days in that month. thirty_day: rent / 30. annual_365: rent x 12 / 365."
},
"rounding": {
"enum": [
"round_total",
"daily_rate_first"
],
"type": "string",
"description": "round_total (default): round only the final amount to the cent. daily_rate_first: round the daily rate to the cent first, then multiply by the days."
},
"monthly_rent": {
"type": "number",
"description": "Full monthly rent in USD, e.g. 1450."
},
"move_in_date": {
"type": "string",
"maxLength": 40,
"description": "Move-in date (first day the tenant has the unit), YYYY-MM-DD, e.g. 2026-10-17. Give this, move_out_date, or both."
},
"move_out_date": {
"type": "string",
"maxLength": 40,
"description": "Move-out date (last day the tenant pays for), YYYY-MM-DD, e.g. 2026-11-10."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"monthly_rent",
"method",
"method_label",
"rounding",
"periods",
"full_months_between",
"total_prorated",
"display",
"notes"
],
"properties": {
"kind": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"method": {
"type": "string"
},
"display": {
"type": "object",
"required": [
"total",
"monthly_rent"
],
"properties": {
"total": {
"type": "string"
},
"monthly_rent": {
"type": "string"
}
},
"additionalProperties": false
},
"periods": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"month",
"label",
"from",
"to",
"days_occupied",
"days_in_month",
"full_month",
"amount",
"methods"
],
"properties": {
"to": {
"type": "string"
},
"from": {
"type": "string"
},
"type": {
"type": "string"
},
"label": {
"type": "string"
},
"month": {
"type": "string"
},
"amount": {
"type": "number"
},
"methods": {
"type": "array",
"items": {
"type": "object",
"required": [
"method",
"label",
"daily_rate",
"amount",
"formula"
],
"properties": {
"label": {
"type": "string"
},
"amount": {
"type": "number"
},
"method": {
"type": "string"
},
"formula": {
"type": "string"
},
"daily_rate": {
"type": "number"
}
},
"additionalProperties": false
}
},
"full_month": {
"type": "boolean"
},
"days_in_month": {
"type": "number"
},
"days_occupied": {
"type": "number"
}
},
"additionalProperties": false
}
},
"rounding": {
"type": "string"
},
"method_label": {
"type": "string"
},
"monthly_rent": {
"type": "number"
},
"total_prorated": {
"type": "number"
},
"full_months_between": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Calculate prorated rent",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}generate_rent_ledger — Generate rent ledger
Use this when the user wants a rent ledger, tenant ledger, rent ledger template filled in, or proof of rent payments for a tenant: 'make a ledger of my tenant payments this year', 'tenant paid 800 of 1200 rent, what is the balance', amount due as of a date. Takes lease terms (rent, start, due day, late fee rule with grace period) and payments typed or from an attached CSV/Excel file; charges rent monthly with prorated first/last months, applies payments oldest first, adds late fees (flat, percent, daily with cap), carries overpayments forward as credit, and returns a running balance plus PDF statement, Excel and CSV downloads. Does not check state late-fee limits, give legal advice, collect rent, or make rent receipts for proof of address.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"monthly_rent",
"lease_start",
"as_of_date"
],
"properties": {
"late_fee": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"enum": [
"none",
"flat",
"percent",
"daily",
"flat_plus_daily"
],
"type": "string",
"description": "Late fee rule from the lease: none, flat (e.g. $75 once per month), percent (e.g. 5% of the month's rent), daily (e.g. $10 per day late), flat_plus_daily (e.g. $50 then $10 per day)."
},
"amount": {
"type": "number",
"description": "Flat late fee in USD for type flat or flat_plus_daily, e.g. 75."
},
"percent": {
"type": "number",
"description": "Percent for type percent, e.g. 5 for 5%."
},
"max_total": {
"type": "number",
"description": "Optional cap on all late fees for one month's rent, in USD, e.g. 150."
},
"grace_days": {
"type": "integer",
"maximum": 31,
"minimum": 0,
"description": "Days after the due date that rent is still on time, e.g. 5: due the 1st, paid by the 6th is on time, fee on the 7th. If the lease says 'late after the 5th', use 4. Default 0."
},
"percent_of": {
"enum": [
"rent",
"unpaid_rent"
],
"type": "string",
"description": "For type percent: the month's rent charge (default) or only the unpaid part of it."
},
"daily_amount": {
"type": "number",
"description": "Daily late fee in USD for type daily or flat_plus_daily, e.g. 10."
},
"max_percent_of_rent": {
"type": "number",
"description": "Optional cap as a percent of that month's rent, e.g. 10. With max_total, the lower cap applies."
}
},
"description": "Late fee rule from the lease, e.g. {\"type\": \"flat\", \"amount\": 75, \"grace_days\": 5}. Omit for no late fees."
},
"payments": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"amount"
],
"properties": {
"date": {
"type": "string",
"maxLength": 40,
"description": "Date the payment was received, YYYY-MM-DD, e.g. 2026-02-03."
},
"memo": {
"type": "string",
"maxLength": 60,
"description": "Optional short note, e.g. Check 1042, Zelle, Cash. No bank account numbers."
},
"amount": {
"type": "number",
"description": "Amount received in USD, e.g. 800. A returned or bounced payment is negative, e.g. -1450 with memo 'Returned check 1042'."
}
}
},
"maxItems": 5000,
"description": "Payments received from the tenant, e.g. [{\"date\": \"2026-02-03\", \"amount\": 1450}]. Payments before a due date become a credit."
},
"property": {
"type": "string",
"maxLength": 120,
"description": "Property or unit, e.g. 412 Oak St, Unit 2B, Austin, TX."
},
"lease_end": {
"type": "string",
"maxLength": 40,
"description": "Move-out date (last day charged), YYYY-MM-DD, e.g. 2026-08-10. Omit for an ongoing tenancy."
},
"as_of_date": {
"type": "string",
"maxLength": 40,
"description": "Statement date: charges and payments up to and including this day, YYYY-MM-DD, e.g. 2026-10-03. Use the date the user names, otherwise today's date from the conversation (the user's local date)."
},
"lease_start": {
"type": "string",
"maxLength": 40,
"description": "Lease start or move-in date, YYYY-MM-DD, e.g. 2026-01-17. A mid-month start is prorated when rent is due on the 1st."
},
"tenant_name": {
"type": "string",
"maxLength": 80,
"description": "Tenant name shown on the statement, e.g. Maria Lopez. Do not include a Social Security number."
},
"monthly_rent": {
"type": "number",
"description": "Monthly rent in USD from the lease, e.g. 1450."
},
"rent_changes": {
"type": "array",
"items": {
"type": "object",
"required": [
"effective_date",
"monthly_rent"
],
"properties": {
"monthly_rent": {
"type": "number",
"description": "New monthly rent in USD, e.g. 1525."
},
"effective_date": {
"type": "string",
"maxLength": 40,
"description": "First rent due date at the new amount, YYYY-MM-DD, e.g. 2026-07-01."
}
}
},
"maxItems": 24,
"description": "Rent increases or decreases during the period, e.g. [{\"effective_date\": \"2026-07-01\", \"monthly_rent\": 1525}]."
},
"rent_due_day": {
"type": "integer",
"maximum": 28,
"minimum": 1,
"description": "Day of the month rent is due, 1-28, e.g. 1 (default)."
},
"landlord_name": {
"type": "string",
"maxLength": 80,
"description": "Landlord or property manager name for the statement header, e.g. Oak Street Rentals LLC."
},
"other_charges": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"description",
"amount"
],
"properties": {
"date": {
"type": "string",
"maxLength": 40,
"description": "Date of the charge or credit, YYYY-MM-DD, e.g. 2026-03-05."
},
"amount": {
"type": "number",
"description": "Amount in USD; positive = charge (e.g. 45.20), negative = credit to the tenant (e.g. -100)."
},
"description": {
"type": "string",
"maxLength": 80,
"description": "What it is, e.g. Water bill, Pet rent, Returned check fee, Rent concession."
}
}
},
"maxItems": 500,
"description": "Charges other than rent (utilities, pet rent, repair, returned check fee) and credits (concessions). Do not include the security deposit unless the user asks."
},
"payment_order": {
"enum": [
"oldest_first",
"rent_first"
],
"type": "string",
"description": "How payments are applied: oldest_first (default, oldest unpaid charge first, including late fees) or rent_first (rent and other charges before late fees)."
},
"payments_file": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "ChatGPT file id, e.g. file_abc123."
},
"file_name": {
"type": "string",
"description": "Original file name if known, e.g. statement.pdf."
},
"mime_type": {
"type": "string",
"description": "Media type if known, e.g. application/pdf."
},
"download_url": {
"type": "string",
"description": "Temporary download link for the file, supplied by ChatGPT."
}
},
"description": "Optional CSV or Excel (.xlsx) list of payments with a date column and an amount column, e.g. payments-2026.csv."
},
"proration_method": {
"enum": [
"actual_days",
"thirty_day",
"annual_365"
],
"type": "string",
"description": "How a partial first or last month is prorated: actual_days (default, rent / days in month), thirty_day (rent / 30), annual_365 (rent x 12 / 365)."
},
"proration_rounding": {
"enum": [
"round_total",
"daily_rate_first"
],
"type": "string",
"description": "round_total (default, round only the final amount to the cent) or daily_rate_first (round the daily rate to the cent before multiplying)."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"tenant",
"property",
"as_of",
"lease",
"summary",
"display",
"aging",
"months",
"months_total",
"rows_total",
"recent_rows",
"open_items",
"prorations",
"payments_file",
"warnings",
"downloads"
],
"properties": {
"kind": {
"type": "string"
},
"aging": {
"type": "object",
"required": [
"current",
"days_31_60",
"days_61_90",
"over_90"
],
"properties": {
"current": {
"type": "number"
},
"over_90": {
"type": "number"
},
"days_31_60": {
"type": "number"
},
"days_61_90": {
"type": "number"
}
},
"additionalProperties": false
},
"as_of": {
"type": "string"
},
"lease": {
"type": "object",
"required": [
"monthly_rent",
"start",
"end",
"rent_due_day",
"proration_method",
"late_fee_rule",
"payment_order"
],
"properties": {
"end": {
"type": [
"string",
"null"
]
},
"start": {
"type": "string"
},
"monthly_rent": {
"type": "number"
},
"rent_due_day": {
"type": "number"
},
"late_fee_rule": {
"type": "string"
},
"payment_order": {
"type": "string"
},
"proration_method": {
"type": "string"
}
},
"additionalProperties": false
},
"months": {
"type": "array",
"items": {
"type": "object",
"required": [
"month",
"rent",
"paid_on",
"late_fees",
"unpaid",
"status"
],
"properties": {
"rent": {
"type": "number"
},
"month": {
"type": "string"
},
"status": {
"type": "string"
},
"unpaid": {
"type": "number"
},
"paid_on": {
"type": [
"string",
"null"
]
},
"late_fees": {
"type": "number"
}
},
"additionalProperties": false
}
},
"tenant": {
"type": [
"string",
"null"
]
},
"display": {
"type": "object",
"required": [
"total_charged",
"total_paid",
"late_fees",
"balance",
"balance_label",
"as_of"
],
"properties": {
"as_of": {
"type": "string"
},
"balance": {
"type": "string"
},
"late_fees": {
"type": "string"
},
"total_paid": {
"type": "string"
},
"balance_label": {
"type": "string"
},
"total_charged": {
"type": "string"
}
},
"additionalProperties": false
},
"summary": {
"type": "object",
"required": [
"total_charged",
"rent_charged",
"other_charges",
"late_fees",
"total_paid",
"returned_payments",
"credits",
"balance_due",
"credit_balance",
"payments_count",
"status"
],
"properties": {
"status": {
"type": "string"
},
"credits": {
"type": "number"
},
"late_fees": {
"type": "number"
},
"total_paid": {
"type": "number"
},
"balance_due": {
"type": "number"
},
"rent_charged": {
"type": "number"
},
"other_charges": {
"type": "number"
},
"total_charged": {
"type": "number"
},
"credit_balance": {
"type": "number"
},
"payments_count": {
"type": "number"
},
"returned_payments": {
"type": "number"
}
},
"additionalProperties": false
},
"property": {
"type": [
"string",
"null"
]
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"properties": {
"csv": {
"type": "string"
},
"pdf": {
"type": "string"
},
"xlsx": {
"type": "string"
}
},
"additionalProperties": false
},
"open_items": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"description",
"unpaid",
"days_old"
],
"properties": {
"date": {
"type": "string"
},
"unpaid": {
"type": "number"
},
"days_old": {
"type": "number"
},
"description": {
"type": "string"
}
},
"additionalProperties": false
}
},
"prorations": {
"type": "array",
"items": {
"type": "object",
"required": [
"month",
"days",
"days_in_month",
"chosen",
"actual_days",
"thirty_day",
"annual_365"
],
"properties": {
"days": {
"type": "number"
},
"month": {
"type": "string"
},
"chosen": {
"type": "string"
},
"annual_365": {
"type": "number"
},
"thirty_day": {
"type": "number"
},
"actual_days": {
"type": "number"
},
"days_in_month": {
"type": "number"
}
},
"additionalProperties": false
}
},
"rows_total": {
"type": "number"
},
"recent_rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"description",
"charge",
"payment",
"balance"
],
"properties": {
"date": {
"type": "string"
},
"charge": {
"type": "number"
},
"balance": {
"type": "number"
},
"payment": {
"type": "number"
},
"description": {
"type": "string"
}
},
"additionalProperties": false
}
},
"months_total": {
"type": "number"
},
"payments_file": {
"anyOf": [
{
"type": "object",
"required": [
"name",
"rows_read",
"payments_used",
"skipped",
"skipped_reasons"
],
"properties": {
"name": {
"type": "string"
},
"skipped": {
"type": "number"
},
"rows_read": {
"type": "number"
},
"payments_used": {
"type": "number"
},
"skipped_reasons": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
}{
"title": "Generate rent ledger",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
rent-ledger-widget — LeaseLine Rent Ledger view
Interactive view for LeaseLine Rent Ledger.
ui://widget/rent-ledger-v1-1.0.0-6daf55180bb66b911398c93948bac82dac079240b0cc7871b173323d67d4009b.htmlrent-ledger-widget-legacy — LeaseLine Rent Ledger view (previous versions)
ui://widget/rent-ledger-{version}.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 889 ms
- 95th percentile latency
- 889 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 889 ms · metadata changed · 2 tool(s), 1 resource(s), 1 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http leaseline-rent-ledger-mcp https://rent-ledger.zovo.one/mcpCodex
codex mcp add leaseline-rent-ledger-mcp --url https://rent-ledger.zovo.one/mcpCursor
{
"mcpServers": {
"leaseline-rent-ledger-mcp": {
"url": "https://rent-ledger.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"leaseline-rent-ledger-mcp": {
"type": "streamableHttp",
"url": "https://rent-ledger.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"leaseline-rent-ledger-mcp": {
"type": "http",
"url": "https://rent-ledger.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http leaseline-rent-ledger-mcp https://rent-ledger.zovo.one/mcpClaude Desktop
{
"mcpServers": {
"leaseline-rent-ledger-mcp": {
"url": "https://rent-ledger.zovo.one/mcp"
}
}
}Windsurf
{
"mcpServers": {
"leaseline-rent-ledger-mcp": {
"serverUrl": "https://rent-ledger.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like LeaseLine Rent Ledger MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.