Rent ledgers and prorated rent
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Full monthly rent in USD, e.g. 1450.
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.
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.
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 (last day the tenant pays for), YYYY-MM-DD, e.g. 2026-11-10.
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.
| Argument | Type | Description |
|---|---|---|
| method | string | 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 | string | 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* | number | Full monthly rent in USD, e.g. 1450. |
| move_in_date | string | 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 | string | 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": [
"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."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| late_fee | object | Late fee rule from the lease, e.g. {"type": "flat", "amount": 75, "grace_days": 5}. Omit for no late fees. |
| payments | array | Payments received from the tenant, e.g. [{"date": "2026-02-03", "amount": 1450}]. Payments before a due date become a credit. |
| property | string | Property or unit, e.g. 412 Oak St, Unit 2B, Austin, TX. |
| lease_end | string | Move-out date (last day charged), YYYY-MM-DD, e.g. 2026-08-10. Omit for an ongoing tenancy. |
| as_of_date* | string | 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* | string | 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 | string | Tenant name shown on the statement, e.g. Maria Lopez. Do not include a Social Security number. |
| monthly_rent* | number | Monthly rent in USD from the lease, e.g. 1450. |
| rent_changes | array | Rent increases or decreases during the period, e.g. [{"effective_date": "2026-07-01", "monthly_rent": 1525}]. |
| rent_due_day | integer | Day of the month rent is due, 1-28, e.g. 1 (default). |
| landlord_name | string | Landlord or property manager name for the statement header, e.g. Oak Street Rentals LLC. |
| other_charges | array | 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 | string | 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 | object | Optional CSV or Excel (.xlsx) list of payments with a date column and an amount column, e.g. payments-2026.csv. |
| proration_method | string | 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 | string | 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": [
"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)."
}
}
}