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_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 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_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 create_property_unit, update_parent_property, delete_parent_property). Optional status filter (OCCUPIED or VACANT) and address search substring. |
| list_renters | List 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_payments | ACH/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_transactions | ACH/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_items | Ledger 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_help | Search **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_payment | Live 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_settlements | List 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_settlement | Full 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_transfers | Transaction/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_property | Invite 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_property | Create 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_unit | Add 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_property | Update 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_property | Delete 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_property | Update 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_property | Delete 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_item | Post 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_balance | Reset 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_item | Delete 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_renter | Send 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. |