PropLane
  • Contact
Log inGet started
PropLane
PropLane

Product

  • Why PropLane
  • Pricing
  • Docs
  • MCP & API
  • Mobile app
  • About us

Who it's for

  • Managers
  • Residents
  • Vendors

Support

  • Contact us
  • Support
  • Partner inquiries

Contact

  • (510) 309-8345
  • support@prop-lane.space
  • 5259 Brooklyn Ave NE, Seattle, WA 98105
© 2026 PropLane. All rights reserved.
Privacy PolicyTerms of ServiceSupportContact
Developers

MCP server & API

Run PropLane from your own AI agent. The same 98 tools that power the built-in assistant, exposed over the Model Context Protocol and a plain HTTP API, so you can bring whatever harness you already use.

On this page
Start here
  • What this is
  • Create an API key
  • Connect your agent
Reference
  • Tools
  • Write actions
  • REST API
Operating
  • Limits & errors
  • Security
Start here

What this is

PropLane exposes its whole capability surface as typed, permission-scoped tools. The assistant inside the product calls those tools; this page is how your agent calls the same ones, with the same per-account scoping and the same confirmation gate on anything that changes data.

  • One endpoint: https://prop-lane.space/api/mcp, stateless Streamable HTTP. No install, no local process, nothing to keep running.
  • Browser sign-in for MCP: paste the server URL, then authenticate and approve the connection in PropLane.
  • Every number is tool-grounded. Balances, dates and statuses come from tool results, so your agent reports what PropLane actually holds rather than an estimate.

Today the server covers the manager account: your properties, residents, applications, leases, charges, work orders, vendors, calendar and messages. Resident and vendor endpoints are not open yet.

Start here

Connect MCP or create an API key

In the portal, go to Settings → API & MCP and copy the MCP server URL. Your client opens PropLane in a browser to sign in and approve the complete manager assistant connection. Choose Create API keywhen you need to grant only the product areas and tools an integration needs:

  • Read Look up the selected product area. This is right for reporting, dashboards and question-answering.
  • Write Also proposes changes for that area and includes its read tools. Use Advanced tools to choose an exact subset. A write still cannot happen in one step, see Write actions.

The key is shown once. PropLane stores only a hash of it, so it cannot be recovered or re-displayed. If you lose it, revoke it and create another. Revoking takes effect on the next request.

Start here

Connect your agent

Any client that speaks Streamable HTTP connects directly. Claude Code, Cursor, Windsurf and VS Code all take the same server URL. Claude Code can add it with:

terminal
claude mcp add --transport http proplane https://prop-lane.space/api/mcp

On first use, the client follows the secure browser sign-in and consent flow. PropLane never asks you to paste a long-lived API key into an MCP configuration.

Building your own loop, or just checking it works? It is ordinary JSON-RPC over POST:

curl
curl -X POST https://prop-lane.space/api/mcp \
  -H "Authorization: Bearer <OAuth access token>" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

The server implements initialize, tools/list, tools/call and ping. It is stateless, so there is no session header and GET returns 405. Protocol versions 2024-11-05 through 2025-06-18 are negotiated; newer clients are answered with the latest version supported here.

Reference

Tools

An MCP connection sees the complete manager catalog after browser authorization. A REST API key sees only its selected tools. Write tools return an approval preview rather than executing. Call tools/listfor the full JSON Schema of each one; this reference has 30read and 68 write tools and is generated from the live registry.

Read (30)

Available when selected in a product area or Advanced tools.

  • find_records

    Fuzzy-search the current landlord's residents, applications, vendors, properties, work orders, and leases by name, email, address, title, or unit, and return matching record ids with display labels.

  • get_application_details

    Get one of the current landlord's applications in detail: applicant name/email, stage, bucket, desired lease dates and term, room choice, derived screening status, and Checkr check status if one was run.

  • get_automation_settings

    Read the landlord's payment-reminder automation settings: pre-due reminder days, same-day and overdue-daily reminders, late-fee notice timing, and schedule visibility, plus a human-readable cadence summary.

  • get_dashboard_summary

    One-call portfolio overview for the current landlord: rent-roll and delinquency totals, property counts by status, open/scheduled work orders, pending applications, unread inbox threads, and calendar events in the next 7 days.

  • get_listing_creation_checklist

    Read the step-by-step checklist for building a quality listing through chat: required fields, recommended copy, photo handling, and when to call create_listing_draft.

  • get_listing_media_inventory

    Read room, bathroom, and shared-space ids and photo counts for a listing so you can place uploaded images in the correct slots.

  • get_manager_profile

    Get the current landlord's own account profile: name, email, subscription plan and property count vs.

  • get_overdue_charges

    List the current landlord's overdue charges (past due and unpaid): tenants who are late on rent or other charges.

  • get_property_details

    Get one of the current landlord's properties in detail: title, address, zip, neighborhood, beds/baths, rent, lifecycle status, per-room name/rent/availability/move-in date, and which resident payment methods the listing accepts.

  • get_thread_messages

    Read one of the current landlord's inbox threads in full: subject, sender, folder, date, the original message body, and any reply messages.

  • list_applications

    List the current landlord's rental applications with applicant name, email, property, stage, status (pending/approved/rejected), and background-screening status (pending_review/passed/flagged/not_applicable).

  • list_calendar_events

    List the current landlord's calendar entries: schedule records, confirmed events/tours (type planned_event), and tour requests (type tour_inquiry, with status).

  • list_charges

    List the current landlord's household charges (rent, deposits, fees, and other charges), optionally filtered by status or resident.

  • list_co_managers

    List the co-managers linked to the current landlord's workspace — accepted account links plus legacy pro-relationship links — with name, email, link direction, and assigned property ids.

  • list_documents

    List documents in the current landlord's Document Library (the Documents -> Library tab): display name, category (lease/insurance/tax/notice/invoice/inspection/photo/other), what the document is filed against (property, lease, resident, vendor, or work order), who it is shared with, expiry date, and signature status.

  • list_inbox_threads

    List the current landlord's message inbox threads (subject, sender, preview, folder, unread flag), optionally filtered by folder (inbox/sent/trash), unread state, or a search string over subject/sender/preview.

  • list_lease_sections

    List the sections in one of the landlord's generated HTML leases, including whether each section is editable.

  • list_leases

    List the current landlord's leases with their status (Draft, Manager Review, Resident Signature Pending, Manager Signature Pending, Fully Signed, Voided), resident, property, and lease dates.

  • list_promotions

    List the current landlord's marketing promotions from the Promotion page (AI flyer/social campaigns) with id, title, property, status (draft/generated), flyer template, and whether each carries a generated flyer image and/or marketing text.

  • list_properties

    List the current landlord's own properties/listings with title, address, unit, beds/baths, rent, and lifecycle status (pending, live, review, request_change, unlisted, rejected).

  • list_property_lease_template_sections

    List editable sections of a property's lease template (long-term or short-term) while the manager is in the Lease modal.

  • list_residents

    List the current landlord's active residents (approved applicants) with name, email, property, room, and monthly rent.

  • list_scheduled_messages

    List the current landlord's scheduled outbound messages (send time, status, subject, recipient).

  • list_service_requests

    List the current landlord's resident add-on service requests (e.g.

  • list_tour_inquiries

    List tour requests submitted by prospective tenants for the current landlord's properties: guest name/email, requested time windows, property, and status (pending/accepted/declined).

  • list_vendors

    List the current landlord's vendors (contractors/service providers) with name, trade, contact info, active status, and the properties they cover.

  • list_work_order_bids

    List the vendor bids submitted on one of the landlord's work orders (from list_work_orders): vendor name, labor amount, materials, proposed time, note, and status.

  • list_work_orders

    List the current landlord's maintenance work orders with status, priority, property/unit, resident, scheduled date, cost, assigned vendor, bidding state, and vendor-marked-done/paid automation status.

  • run_financial_report

    Run a financial report over the current landlord's books and return its computed columns, rows, and totals.

  • suggest_vendors_for_work_order

    Suggest a ranked shortlist of candidate vendors for one of the landlord's work orders, based on trade/category match, property coverage, and fairness (least-recently-assigned first).

Actions (68)

Available when selected. Each returns a preview and actionId; nothing changes until a signed-in manager approves it.

  • accept_bid

    Accept a vendor's submitted bid on one of the landlord's work orders: assigns that vendor at the bid's stored amount, declines every other submitted bid, withdraws outstanding offers, closes bidding, and notifies the winning and declined vendors.

  • accept_tour_inquiry

    Accept a pending tour request (id from list_tour_inquiries), putting the tour on the calendar and clearing competing requests for the same slot.

  • add_vendor

    Add a new vendor (contractor / service provider) to the landlord's vendor directory with a name, trade, and optional contact details.

  • amend_lease

    Change a fully signed lease's move-out (end) date — extend, renew, or shorten it.

  • apply_listing_photos

    Place uploaded listing photos into the correct house gallery, room, bathroom, or shared-space slots on an open listing.

  • approve_and_pay_work_order

    Approve a finished work order and pay the vendor: completes it, logs expenses, marks the vendor paid, and — for the ACH channel — transfers the labor cost to the vendor's connected Stripe bank account.

  • approve_manager_bill

    Approve a pending accounts-payable bill so it can be paid.

  • approve_owner_distribution

    Approve a draft owner distribution statement.

  • assign_vendor

    Assign one of the landlord's vendors to a work order (or reassign from the current vendor).

  • cancel_calendar_event

    Cancel (delete) one of the current landlord's confirmed calendar events.

  • cancel_scheduled_message

    Cancel one of the landlord's own not-yet-sent scheduled messages so it never goes out.

  • cancel_scheduled_reminder

    Cancel one upcoming automatic payment reminder for a specific charge (e.g.

  • complete_work_order

    Mark one of the landlord's work orders completed and log its labor/materials costs as expense entries for reports.

  • confirm_tour_inquiry

    Confirm a pending tour request into a booked tour at the given open slot and notify the guest.

  • copy_listing_photos

    Copy uploaded listing photos and videos from one of the landlord's properties to another (house gallery, room photos, bathroom and shared-space photos, floor plans, and house video).

  • create_calendar_event

    Create a calendar event (tour, inspection, meeting, …) on the current landlord's calendar with a title, start/end time, and optional property (id from list_properties), attendee, and notes.

  • create_charge

    Create a new pending charge (rent, deposit, fee, etc.) for one of the landlord's approved residents.

  • create_lease_draft

    Start a new lease draft for one of the landlord's own residents (also used for renewals).

  • create_listing_draft

    Create a rich property listing DRAFT from facts gathered in chat (address, rent, beds/baths, description, amenities, and housePhotoUrls from uploaded images).

  • create_manager_bill

    Create a new accounts-payable bill (an unpaid obligation owed to a vendor).

  • create_manager_budget

    Create a budget for a property/fiscal-year/category (integer cents).

  • create_owner_distribution

    Create a draft owner distribution statement for a property and period.

  • create_promotion

    Create a marketing promotion and generate its printable flyer copy for the landlord.

  • create_property

    Create a minimal property stub from basic facts only (no photos or rich marketing copy).

  • create_work_order

    Create a new maintenance work order in the landlord's queue (manager-initiated, starts in the open bucket, no vendor assigned).

  • decide_service_request

    Approve or deny one of the landlord's pending add-on service requests (parking, storage, cleaning, equipment rentals — the Services -> Requests tab).

  • delete_charge

    Permanently delete one of the landlord's charges and its ledger entries.

  • delete_promotion

    Permanently delete one of the landlord's promotions, including its generated flyer and text copies.

  • dispose_security_deposit

    Dispose a held security deposit at move-out.

  • generate_promotion_flyer

    Generate printable flyer copy for an existing promotion (promotionId from list_promotions or create_promotion) and mark it generated so it appears under Promotions → Image.

  • invite_vendor

    Email a vendor from the directory an invite link to create their own Axis vendor portal account.

  • mark_charge_paid

    Record that a resident paid one of the landlord's charges outside Axis (Zelle, Venmo, cash, or check).

  • offer_to_vendors

    Invite one or more of the landlord's vendors to bid on a work order: creates an offer per vendor, emails each an invitation with the work order details, notifies their Axis inbox, and opens bidding.

  • order_background_check

    Order a paid background/screening check (Checkr or Certn) for one of the landlord's applicants.

  • propose_lease_section_edit

    Propose a text-only edit to one editable section of a lease in manager review.

  • propose_property_lease_template_section_edit

    Propose a text edit to one section of a property lease template (PropLane default long-term or short-term).

  • reconcile_bank_statement_line

    Reconcile a bank statement line: mark it cleared and/or match it to a ledger entry.

  • record_bill_payment

    Mark an approved accounts-payable bill as paid: creates the expense entry and posts the cash-out GL entry (DR accounts payable / CR operating cash).

  • record_expense

    Record a manual expense entry in the landlord's books (same bookkeeping as the Financials page).

  • record_income

    Record a manual income entry in the landlord's books (rent collected outside Axis, fees, other income — same bookkeeping as the Financials page).

  • record_move_out

    Record a resident's move-out date on their application record (bookkeeping only).

  • reply_to_thread

    Reply to an existing inbox conversation: the reply is appended to the landlord's thread and delivered to the other person (resident, applicant, co-manager, or vendor) in their portal inbox and by email.

  • reschedule_reminder

    Move one upcoming automatic payment reminder for a specific charge to a new send time.

  • restore_scheduled_reminder

    Turn a cancelled automatic payment reminder back on for one charge (the inverse of cancel_scheduled_reminder).

  • revoke_resident_access

    Permanently remove a resident's portal sign-in access.

  • schedule_message

    Schedule a message from the landlord to one connected recipient (resident, co-manager, or vendor) to be delivered at a future date/time instead of immediately.

  • schedule_vendor_visit

    Schedule (or reschedule) the assigned vendor's service visit on one of the landlord's work orders and notify the vendor (email + Axis inbox).

  • send_lease_for_signature

    Send a prepared lease to its resident for electronic signature: moves the lease to the resident's signing queue and notifies them in their portal inbox and by email.

  • send_message

    Send a message from the landlord to specific recipients by email and/or to all of their current residents at once, delivered to each recipient's portal inbox and optionally by email.

  • send_rent_reminder

    Send a payment reminder (email + portal inbox record) to residents with overdue charges.

  • send_resident_welcome

    Send the resident welcome / account-setup email (with their Axis ID and portal signup link) for an approved application.

  • send_work_order_reminder

    Send the assigned vendor a reminder about one of the landlord's work orders (email + Axis inbox), restating the work order and its visit details.

  • set_resident_approval

    Turn a resident's portal access on or off by setting their application-approved flag.

  • share_property_link

    Email a prospect an apply link, tour-scheduling link, or full listing details for one of the landlord's LIVE listings.

  • update_application_bucket

    Move one of the landlord's applications between the pending, approved, and rejected buckets.

  • update_automation_settings

    Change the landlord's default payment-reminder automation: pick a preset (basics, standard, gentle, minimal), customize pre-due days, same-day and daily overdue reminders, late-fee notice timing, and schedule visibility.

  • update_charge

    Update the amount, due date, or title of one of the landlord's existing unpaid charges.

  • update_lease_draft

    Update the unit or notes on one of the landlord's existing lease drafts (use list_leases to find the lease id).

  • update_lease_packet

    Update an in-review lease packet on the Leases page: change rent, utilities, deposit, move-in fee, lease dates, term, room, stay type (standard vs short-term), unit label, or notes.

  • update_listing_draft

    Update an existing listing draft (status draft) with more photos, copy, or pricing from chat.

  • update_manager_availability

    Add or remove the current landlord's tour-availability slots for one date and time window, either portfolio-wide or for a single property (propertyId from list_properties).

  • update_manager_budget

    Update an existing budget for a property/fiscal-year/category (upsert on the same key).

  • update_promotion

    Rename one of the landlord's promotions and/or change its status (draft/generated).

  • update_property

    Update one of the current landlord's properties: monthly rent, beds, baths, description, or toggle a listing between live and unlisted.

  • update_property_lease_config

    Update per-property lease document settings for a listing: PropLane standard lease (axis_default), custom manager terms addendum (custom_comments + customLeaseTerms), or a manager-uploaded PDF template (custom_format + leaseTemplateDocUrl).

  • update_thread

    Mark one of the landlord's own inbox threads read or unread, move it to trash (archive), or restore it from trash to its previous folder.

  • update_vendor

    Update a vendor's trade, active status, notes, or phone in the landlord's vendor directory.

  • void_lease

    Permanently void a lease so it can no longer be signed or enforced.

Reference

Write actions

Anything that changes data is a two-step. Calling an action tool does not perform it: it validates the input, builds a preview of exactly what would happen, and returns an actionId. The manager then approves it from PropLane’s AI drafts; an external credential cannot execute it.

propose, then approve in PropLane
# 1. Propose. Nothing is written.
POST /api/v1/tools/send_rent_reminder
{ "chargeIds": ["charge_id_from_get_overdue_charges"] }

202 Accepted
{
  "status": "awaiting_confirmation",
  "actionId": "9c1f…",
  "expiresInSeconds": 900,
  "preview": {
    "title": "Send rent reminder",
    "confirmLabel": "Send reminder",
    "fields": [{ "label": "To", "value": "Sam Ortiz" }]
  }
}

# 2. Nothing else can execute this with the API key.
# A signed-in manager reviews and approves the proposal in PropLane’s AI drafts.
  • The proposal stores the validated input server-side. PropLane’s signed-in approval sends only the id, so nothing between the two steps can alter what runs.
  • A proposal expires after 15 minutes and can be approved once. A second approval gets 410.
  • The manager reviews the same card the built-in assistant renders, then approves or rejects it in PropLane.

Approving a rental application and creating a listing are deliberately not available as tools. Both need browser-side steps that would otherwise leave a resident without their rent charges.

Reference

REST API

If you are not using MCP, create a REST API key. Its selected tools are reachable over plain HTTP; MCP OAuth tokens are deliberately refused here. Writes still stage the same manager-approved confirmation gate.

HTTP
# Every tool the key can reach, with JSON Schema
GET  /api/v1/tools

# Call one. The body IS the tool's input object.
POST /api/v1/tools/get_overdue_charges
{}

A staged write answers 202; a completed call answers 200; a refused or invalid call answers 400 with an error string you can hand straight back to your model.

Operating

Limits & errors

  • 120 requests per minute per key, plus a lower unauthenticated limit per IP. Over it, 429.
  • 401 means the key is missing, unknown, revoked or expired. These are deliberately indistinguishable.
  • 403 means the key is valid but the account no longer has manager access.
  • A tool that fails returns a normal MCP result with isError: true and a readable message, not a transport error, so your model can correct itself and retry.
Operating

Security

  • A key only ever reaches your own data. Every tool derives the account from the authenticated key, never from anything the model supplies, so no argument can widen the scope.
  • A key is a credential, not a standing grant. Your manager role is re-checked on every single request. Lose the role and every key stops working with it, immediately.
  • Keys are stored hashed. Nobody, including PropLane, can read one back after it is created.
  • MCP connections are revocable. Disconnect any OAuth-connected client from Settings → API & MCP to immediately invalidate its tokens.
  • Treat resident- and applicant-submitted text as untrusted. It reaches your agent as data, and it must never be allowed to trigger a write on its own.

Found a problem? Tell us.