Claude and ChatGPT can already do a lot in LawnPro — look up customers, money, schedule, chemicals, and queue office work after you click Allow. This page is the honest list of what they cannot do yet, what works differently than the app, and what we are building next.
> Good to know: This is about the merchant AI connection at https://secure.lawnprosoftware.com/mcp (Claude / ChatGPT custom connector). It is separate from the LawnPro API and from the in-app LawnPro assistant, which has a few extra tools MCP does not expose.
For setup and everyday examples, start with Connect an AI Assistant to Your LawnPro Account.
—
What your assistant can do today
In plain terms, a connected assistant can:
- Read your live account — customers, properties, invoices, estimates, payments, schedule, crews, recurring jobs, chemicals, equipment, time tracking, contracts, and dozens of built-in reports (aging, revenue, profit per truck hour, and more).
- Queue changes — after you click Allow (or if you turned on Trust this connection): text a customer, email the account owner a one-shot report summary, email a customer (address on file, subject and body you approve — not tied to an invoice or estimate), create or send invoices and estimates, record a payment you already collected, complete / skip / reopen visits (including a whole day at once), reassign crews, move an existing visit, attach photos (single file, before/after pair, or up to 10 files on one visit), add a customer or property, schedule a visit, recurring visit series, meeting, or task, and set a custom field on a customer, property, or visit.
- Explain the product — search LawnPro help articles and official how-to videos instead of guessing click-paths.
Ask it directly: “What can you do in LawnPro right now?” It is instructed to answer from its tool list, not from memory.
—
Known limitations — cannot do
These are deliberate guardrails, not bugs.
| Limitation | What that means for you | |—|—| | Charge cards or move money | It can record a payment you already took (cash, check, card taken elsewhere). It never charges a card, runs ACH, or refunds. | | Apply customer credit as payment | Spending credit already on an account is not supported through the assistant. | | Text or email a random address | Texts go to the cell on the customer’s profile only. Invoice and estimate emails go to the address on file for that document’s customer. General customer emails and report summaries go to the address on file or the account owner only — not an arbitrary address you type in chat. | | Delete or edit existing records | No deleting customers, changing invoice lines after the fact, or editing addresses through the assistant. Creates and queue-and-approve actions only. | | Run ad-hoc SQL | The in-app assistant can run guarded read-only SQL for owners; merchant MCP uses fixed report tools instead (get_revenue_report, get_invoice_aging, etc.). | | Scheduled or recurring AI reports | One-shot “email me July revenue” works today. LawnPro automations can email reports on a standing schedule in the product, but the assistant cannot set that up yet. | | Skip Allow by default | Every write waits for the owner to open the LawnPro link and click Allow, unless Trust this connection is on for that app. API keys always require Allow. | | Gemini | Google’s connector needs a different sign-in model than we support today. Claude and ChatGPT are the supported path. | | Trial accounts | MCP is included on Startup, Grow, and Plus paid plans, not on trial. |
—
Known limitations — works differently than the app
| Topic | MCP behavior | |—|—| | Reopen an invoiced visit | Refused — reopen in Schedule in LawnPro (that path touches invoice lines). Same money-path rule as the browser. | | Reopen a contract / level-billing visit | Refused on MCP. | | Close out a whole day | Bulk complete does not invoice — same as Complete Selected – Invoice Later in Schedule. Invoice one visit at a time, or invoice in the app. | | Bulk actions | Up to 50 visits per approval. If one visit in the list cannot be changed, nothing runs — you get the bad ids named. | | Custom fields | Read saved values on customers, properties, visits, invoices, and estimates. Set values on customers, properties, and visits only (with Allow). Not on chemicals, equipment, vendors, or other record types. list_* tools do not include custom fields — use get_customer, get_property, get_visit, get_invoice, or get_estimate. | | Visit photos | View: get_visit returns signed links to photos already on a visit, including before-and-after pairs. Attach: one photo or video per single-file approval; up to 10 files on one visit in one approval; before/after pairs via a dedicated tool (at least one side required). | | QuickBooks | Push one invoice only if QuickBooks is already connected. | | Numbers vs reports | The assistant summarizes live data. For money you will act on, confirm against the matching report in LawnPro. |
—
Custom fields — how to use them
Custom fields are the extra columns you define under Settings (gate codes, PO numbers, program flags, and so on). The assistant can read saved values and queue a save on customers, properties, and visits. Invoice and estimate fields are read-only through MCP for now.
Reading
Ask in plain English, or have the assistant call the matching get tool:
| You ask… | It uses… | |—|—| | “What’s the gate code on the Smith customer?” | get_customer → custom_fields | | “Does the Johnson property have a sprinkler system flag?” | get_property → custom_fields | | “What crew notes are on tomorrow’s visit at 12 Oak?” | get_visit → custom_fields | | “What’s the PO number on invoice 1042?” | get_invoice → custom_fields | | “Does estimate 8812 include our referral source field?” | get_estimate → custom_fields |
Each saved field comes back roughly like this:
“json { "definition_id": 42, "name": "Gate code", "type": "text", "value": "5678" } “
Good to know: Only fields that already have a saved value appear. If a definition exists in Settings but nobody filled it in yet, it is omitted — ask the assistant to call list custom field definitions, or tell it the exact field name from Settings.
Setting (customer, property, or visit)
These go through Allow like any other write (unless you trusted the connection).
Examples:
- “Set the gate code on customer Smith to 5678” — queues a save on that customer record.
- “Mark the Johnson property as having a sprinkler system” — for a checkbox field, the assistant passes
trueorfalse. - “Add crew note ‘Watch the dog’ to tomorrow’s visit at 12 Oak” — saves on that visit (calendar event).
The assistant needs:
- Which record — customer, property, or visit id (from
find_customer,find_property, or the schedule). - Which field — either
definition_idfrom a priorget_*read, or the exact field name from Settings. - The value — text, number, date (
YYYY-MM-DD), or yes/no for checkboxes.
It cannot invent field names. If the field was never saved before, there is no definition_id in a prior read — tell it the field name as it appears in LawnPro Settings.
Scopes
Reading invoice or estimate custom fields needs invoices:read or estimates:read on a Cursor API key. Setting a field checks the read scope for that object type (customers:read, properties:read, or schedule:read) — same pattern as other propose_* tools.
—
Where LawnPro is already ahead
Worth knowing so you do not assume Homeworks-style gaps we already closed:
- SMS to customers (number on file, with Allow).
- Standalone invoices with line items — not only estimate → invoice.
- Recording offline payments against an invoice.
- Bulk complete, skip, reopen, and crew assign (50 visits, one approval).
- Reschedule an existing visit without recreating it.
- Meetings, tasks, and recurring visit series on the calendar (daily / weekly / biweekly from the assistant).
- Email yourself a report — one-shot revenue, payments, expenses, top customers, or invoice aging summary to the account owner.
- Email a customer — general message to the address on file (with Allow), not only invoice or estimate sends.
- Custom field reads on customers, properties, visits, invoices, and estimates.
- Custom field writes on customers, properties, and visits (with Allow).
- Work request inbox read and convert (with Allow).
- Rain-day bulk move — reschedule up to 50 visits to one date (with Allow).
- Program due customers, morning briefing, expense entry, contract pause/resume, and review requests (with Allow where noted).
- Visit photo read, single attach, before/after pairs, and multi-file attach on one visit.
—
What’s coming soon
On the roadmap next
- Scheduled AI reports — true “every Monday morning” delivery wired to LawnPro automations (one-shot report email shipped first).
—
Frequently asked questions
Why can’t it do everything the in-app assistant does? The in-app assistant runs inside your logged-in browser session and includes a few tools (ad-hoc SQL, support tickets) we have not exposed on the merchant MCP connection yet. MCP is built for Claude and ChatGPT with stricter confirm gates.
Will recurring scheduled reports arrive? One-shot “email me July revenue” is available now. True “every Monday morning” scheduling needs a product decision beyond MCP — LawnPro automations already email some reports; wiring the assistant to that is future work.
How do I turn it off? Settings → MCP, API & Integrations → Disconnect, or ask support. Takes effect immediately.
Where do I report a missing feature? Use in-app help chat. Mention whether you need it in Claude/ChatGPT (MCP) or only inside LawnPro.