payrent-mcp

PayRent MCP lets AI assistants help landlords manage properties, renters, billing, and settlements with security and convenience.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only

What it can do

  • Get Dashboard Summary: Load dashboard metrics for this landlord (occupancy, units, financial summaries). Use when the user asks about portfolio stats or the snapshot is insufficient.
  • Get Service Plan Details: Load this landlord’s PayRent **service plan**: display name, fee fields (subscription, ACH/card rates and per-tx fees, express, onboarding, per-unit pricing, cap), property l
  • List Properties: List rentable units (child properties). Each row: id is the unit id (use it for update_property, delete_property, and invites); parent_property_id is the building id (use it for creat

What data it sees

Do you need an account

No: the server works without sign-in

PayRent MCP lets AI assistants help landlords manage properties, renters, billing, and settlements with security and convenience.

Server tool list (23)

Raw names from tools/list. Only developers need these.

get_dashboard_summaryLoad dashboard metrics for this landlord (occupancy, units, financial summaries). Use when the user asks about portfolio stats or the snapshot is insufficient.
get_service_plan_detailsLoad this landlord’s PayRent **service plan**: display name, fee fields (subscription, ACH/card rates and per-tx fees, express, onboarding, per-unit pricing, cap), property limit, trial days, and **features.enabled** / **features.disabled** lists (boolean flags from the plan template, e.g. express funding, renter-pays-fees). Use when they ask about their plan, pricing vs another tier, or what their subscription includes. No parameters.
list_propertiesList rentable units (child properties). Each row: id is the unit id (use it for update_property, delete_property, and invites); parent_property_id is the building id (use it for create_property_unit, update_parent_property, delete_parent_property). Optional status filter (OCCUPIED or VACANT) and address search substring.
list_rentersList renters for this landlord with linked billing account fields (balance, amounts, status)—use this first for “who owes” or portfolio balance questions before calling list_billing_items per tenant. **Defaults to current renters only** (billing_account_state ACTIVE). Pass billing_account_state PENDING for future/invited renters or NOT_ACTIVE for previous/ended leases—only when the landlord asks for those. Optional filters: status (PASTDUE, CURRENT, INACTIVE), search, limit, page.
list_landlord_paymentsACH/card payment transactions for this landlord. Each row includes **payment_gateway**, **status**, amounts, and **meta** when present (stored processor state/failures for Finix/Thryve—check here before calling lookup_processor_payment). Omit renter_id to return **all renters' payments** (use for year-end or portfolio-wide). Optional start_date and end_date (prefer **YYYY-MM-DD**): a row matches if **either** payment **timestamp** or row **created_at** falls in that inclusive calendar range (aligned with dashboard-style periods). **limit** (default 250, max 500) and **page** (1-based) paginate large histories—check response **meta.has_more** and increment **page** instead of many small calls. Pass renter_id only when you need one tenant. Not the same as ledger rent charges—use list_billing_items for charges/credits.
list_renter_transactionsACH/card payment transactions for one renter by **customer_id** (same as user_id / payments.renter_id). No landlord scoping: for signed-in landlords, the renter must belong to you; for admin API integrations, supply the renter id directly. Optional start_date/end_date (YYYY-MM-DD): matches **timestamp** or **created_at** in range, same as list_landlord_payments. **limit** (default 250, max 500) and **page** for long histories—use meta.has_more. Same row shape as list_landlord_payments. Use list_landlord_payments for portfolio-wide or per-landlord views.
list_billing_itemsLedger charge/credit line items for one billing account (billing_item_id, amounts, memos). Pass billing_account_id from list_renters, OR renter_id (+ optional property_id). Optional start_date/end_date (YYYY-MM-DD) filter by order_date. **limit** (default 250, max 500) and **page** (1-based) paginate long ledgers—check **meta.has_more** for more pages.
search_helpSearch **support.payrent.com** (Tavily) for landlord-facing how-to content. Pass a concise **query**. Returns an optional synthesized **answer** plus **articles** (title, snippet, URL from that site only). Cite URLs. Not for account-specific data—use list_* tools.
lookup_processor_paymentLive Finix or Thryve GET for one ACH/card payment—use **only after** list_landlord_payments: call this if payment **meta**/status there is **not** enough to answer, or the landlord needs **current** processor state (settlement, returns, what processor shows now). Same payment_id; Finix/Thryve only; must belong to this landlord. Returns allowlisted processor_snapshot (state, failure fields, etc.). Optional processor must match payment_gateway.
list_settlementsList payout settlements for this landlord: gross/net amounts, status, settlement_date, and property group — the same data behind the app's Settlements tab. Optional filters: property_group_id, property_group_name (substring), date_from/date_to (YYYY-MM-DD, matches created_at), status (comma-separated: pending, completed, failed, error), sort_by, sort_order, page, size (default 10, max 100). Use get_settlement for one settlement's breakdown or get_settlement_transfers for transaction-level detail.
get_settlementFull detail for one settlement: gross/net settlement amounts, total charges, total fees, and the payments/charges/fees line items that make it up. settlement_id is the `id` field from list_settlements (not the processor's own settlement id). Use get_settlement_transfers instead for transaction-by-transaction processor detail.
get_settlement_transfersTransaction/transfer-level detail for one settlement — the same underlying data the PayRent web app uses to build its settlement CSV export (that export is client-side only; there is no separate download endpoint). For Finix settlements this makes a live, paginated call to the Finix API; for Thryve settlements it is derived from local records. Only Finix and Thryve settlements are supported. settlement_id is the `id` field from list_settlements. Optional limit and after_cursor (Finix pagination only).
invite_renter_to_propertyInvite a renter to a vacant unit. New invite: property_id, first/last name, lease_start_date, lease_end_date, and email OR cell_phone. Resend an existing invitation: resend_invite true + renter_id. Withdraw a pending invitation: delete_pending_invite true + renter_id + user_confirmed true. Only applies to PENDING renters — get renter_id from list_renters with billing_account_state PENDING.
create_parent_propertyCreate a parent property (building shell). If property_group_id is omitted the landlord's default portfolio group is used; any override must belong to this landlord. After it succeeds, offer to add a unit under it with create_property_unit.
create_property_unitAdd a rentable unit (child property) under an existing parent property. Address, city, state, and zip are inherited from the parent when omitted. Location data is reused from a sibling unit or the parent when available, otherwise geocoded; passing google_place_id, lat, and long together skips that lookup.
update_propertyUpdate one rentable unit. property_id is the unit id from list_properties. For building-level address changes use update_parent_property instead. Supply at least one of: scalar fields, payment_settings, or disassociate_renter_user_ids. Confirm the exact change with the landlord first, then call with user_confirmed: true.
delete_propertyDelete one rentable unit. Does not touch the parent building or sibling units — use delete_parent_property to remove an entire building. Confirm with the landlord first, then call with user_confirmed: true.
update_parent_propertyUpdate a parent property (building). Address changes sync down to its child units. parent_property_id comes from list_properties.parent_property_id on any unit in that building — not list_properties.id. Confirm with the landlord first, then call with user_confirmed: true.
delete_parent_propertyDelete a parent property and all of its units. Fails if any unit still has an active renter billing account. Use delete_property to remove a single unit instead. Confirm with the landlord first, then call with user_confirmed: true.
create_billing_itemPost a billing transaction to a renter ledger. transaction_type must be one of: Security Deposit, Fee, Credit, Payment, Rent Charge, Refund, Utility, Discount, Late Fee, Parking, Move In, Move Out. Requires billing_account_id and the renter user id.
reset_renter_balanceReset a renter billing account balance to $0 the way the PayRent app does: posts a Credit when the balance is positive or a Fee when it is negative, memo "Reset Account", amount equal to the absolute balance. Requires property_id (unit id) with an ACTIVE or PENDING billing account. Returns ok/skipped if the balance is already zero.
delete_billing_itemDelete a charge or credit line item the landlord created. Payment transactions cannot be deleted. Call list_billing_items first to get billing_item_id. Confirm with the landlord first, then call with user_confirmed: true.
send_email_to_renterSend an email to a linked renter. Show the landlord the full subject and body and get explicit approval before calling — then call once with user_confirmed: true. renter_id must match a list_renters id. Subject and html_body are required; HTML is sanitized server-side and wrapped in standard PayRent email chrome. Content must be professional and lease-related; threats, harassment, housing discrimination, sexual content, and severe profanity are rejected server-side.