LMN API and MCP server Let your AI agent run the landscaping office.

LMN hands out an API Key only for its Zapier integration, and has no MCP server (checked 13 Nov 2026). Cotlet runs a hosted LMN MCP server with 23 tools that ChatGPT, Claude and your scripts use in your own LMN account. Proposals, invoices, texts and every card charge wait for your OK.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with LMN or Granum
LMN logo LMN Cloud Browser

23 tools Read and write

Landscape office work

What can your AI agent do in LMN? The office side of a landscape season, from proposal to payment.

  • Follow up proposals nobody answered

  • Turn a sold estimate into a scheduled job

  • Review and approve yesterday's timesheets

  • Generate and send month-end invoices

  • Run autopay payments after your OK

  • Stop visits and billing for a cancelled customer

Zapier key only, no MCP

Does LMN have an MCP server or an API? The official LMN routes, checked 13 November 2026.

LMN gives accounts on plans that include it an API Key and API Username, found by a Security Admin under Settings > Integrations, to connect its Zapier integration. No public developer API, LMN MCP server or official ChatGPT or Claude connector was verified.

  • The Zapier integration has one trigger, an estimate created or updated, and five actions: create a to-do, a request or communication history, and find or create and update a contact.
  • AskLMN answers questions about your LMN data in plain English inside LMN; it is a closed beta for Professional plans and above.
  • LMN syncs invoices and payments with QuickBooks Online from its own Accounting page.
LMN Zapier integration, AskLMN and Cotlet compared
What you need LMN + ZapierAskLMNCotlet
Ask ChatGPT or Claude to do the work Fixed zaps, no agent LMN's own assistant, closed beta Hosted MCP server
Proposals, jobs and schedule Estimate trigger only Answers questions, no actions 23 tools, writes after your OK
Timesheets, invoices and payments Not in the integration Answers questions, no actions Review, generate, send, charge
Run from n8n or a script Through Zapier Inside LMN only REST, same key

Checked 13 Nov 2026. Sources: LMN + Zapier: a guide · AskLMN · LMN Help Center · LMN by Granum · Help: New QuickBooks Online setup · Help: Build your LMN Operating Budget · Help: Create a Service Estimate · Help: Create a Standard Estimate · Help: Estimate List · Help: Send Proposals via Text · Help: Standard Web Proposals · Help: Jobs Setup & Management · Help: Change Orders in LMN · Help: Schedule Tab · Help: Cancel / Stop a Service · Help: Approve Timesheets · Help: Generate Invoices · Help: Invoice List · Help: Invoice Templates & Automation · Help: Payment Runs with Stripe · Help: Payment Runs with Fiserv & Payrix · Help: Automated Visit Reminder Texts

Set up once

How does the LMN MCP server work? The LMN MCP server by Cotlet: your agent works in your own LMN account.

  1. 1Log in to LMN

    Once, in a browser we host for you.

  2. 2Connect your AI agent

    One address in its settings.

  3. 3Hand it the office work

    It previews the billing, you approve it.

Your agent works in your own signed-in Cloud Browser. Writes, texts to customers and every card charge wait for your OK. Who can see your session

Any MCP client

How to connect LMN to your AI agent

  1. 1

    Sign in to LMN in a Cloud Browser. Open my.golmn.com in your Cotlet Cloud Browser and log in with your own LMN user.

  2. 2

    Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as the MCP server or connector URL in your agent.

  3. 3

    Let the agent in. Chat apps open a Cotlet sign-in page. Editors, n8n and scripts send an API key made in the console.

LMN answers on the shared address https://cotlet.dev/mcp/v1 like every other app you activate, so a single connector is enough. Activated LMN later? Refresh the connector and the 23 LMN tools load.

ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Claude
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: lmn_read
2 read, 21 write

All 23 LMN MCP tools

Built from the owner workflows of the LMN Help Center. Read tools run at once. Write tools take an `action`; `list`, `get`, `preview` and the review actions only read, the rest change LMN and ask first.

Budget and pricing3

The operating budget prices every estimate through the Price List; services and service types carry estimates into jobs.

  • manage_budget Read or build an Operating Budget or Express Budget, choose the overhead recovery method and activate it. writeAsks first

    The active budget prices every estimate: labor burden, overhead recovery and profit targets flow into the Price List and from there into estimates. Activating a new budget changes future prices. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → manage_budget

    REST endpointPOST https://cotlet.dev/api/v1/lmn/budget/manage

    Parameters

    Parameters: manage_budget
    NameTypeDescription
    action string required string One of `get`, `create`, `update`, `activate`. `get` only reads.
    style string string For `create`: `operating` or `express` (markups only).
    fields object object Sales goal, field labor, equipment, materials, subcontracting, overhead and profit inputs.
    recovery_method string string `MORS` (LMN recommends it), `FLH` or `SORS`.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "budget": "2027 Operating Budget",
      "sales_goal": 1850000,
      "profit_margin": 12,
      "recovery_method": "MORS",
      "active": false
    }
  • manage_price_list Read or add production rate calculators, estimate templates and default taxes in the Price List. writeAsks first

    Production rate calculators turn quantities into labor hours so estimators price work the same way. Set default taxes before you build templates and estimates. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → manage_price_list

    REST endpointPOST https://cotlet.dev/api/v1/lmn/price-list/manage

    Parameters

    Parameters: manage_price_list
    NameTypeDescription
    action string required string One of `list`, `add_production_rate`, `add_template`, `set_tax`. `list` only reads.
    item object object Calculator, template or tax details as the Price List asks for them.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "production_rates": [
        {
          "name": "Sod install",
          "unit": "sq ft",
          "hours_per_unit": 0.012
        }
      ],
      "default_tax": "HST 13%"
    }
  • manage_services List or add the services and service types used on estimates, jobs and billing. writeAsks first

    Services live in Settings > Jobs > Services so every job uses one standard list. Crews confirm them at clock-out, and they drive billing, reporting and scheduling. Each service area on an estimate needs a service type to carry over to jobs. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → manage_services

    REST endpointPOST https://cotlet.dev/api/v1/lmn/services/manage

    Parameters

    Parameters: manage_services
    NameTypeDescription
    action string required string One of `list`, `add_service`, `add_service_type`. `list` only reads.
    name string string Service or service type name.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "services": [
        "Weekly mowing",
        "Spring cleanup",
        "Fall cleanup"
      ],
      "service_types": [
        "Maintenance",
        "Snow"
      ]
    }

Estimates and proposals4

Service estimates for recurring work, Standard estimates for installs, and web proposals clients sign in the browser.

  • list_estimates Read the Estimate List with type, status, proposal status, version and total. read

    Returns the columns of Estimates > Estimate List: date, client, type, address, project, ID, version, estimate status and proposal status. Use it to find estimates waiting for follow-up. Nothing is changed.

    MCP calllmn_read → list_estimates

    REST endpointGET https://cotlet.dev/api/v1/lmn/estimates

    Parameters

    Parameters: list_estimates
    NameTypeDescription
    type string string `standard`, `service` or empty for both.
    status string string In Progress, Lost or Sold.
    from string string ISO date the estimate was created from.

    Example response

    {
      "estimates": [
        {
          "id": "E-2291",
          "client": "Oakridge HOA",
          "type": "Service",
          "status": "In Progress",
          "proposal": "Sent",
          "total": 38400
        },
        {
          "id": "E-2295",
          "client": "Example Homeowner",
          "type": "Standard",
          "status": "Sold",
          "proposal": "Approved",
          "total": 14650
        }
      ]
    }
  • manage_estimates Create a Service estimate for recurring work or a Standard estimate for a project, and mark items optional. writeAsks first

    Service estimates split a per-season total over the payments you choose; Standard estimates support progress or milestone billing across several work areas. Optional work areas or services let the client choose on a web proposal. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → manage_estimates

    REST endpointPOST https://cotlet.dev/api/v1/lmn/estimates/manage

    Parameters

    Parameters: manage_estimates
    NameTypeDescription
    action string required string One of `get`, `create`, `update`, `set_optional`. `get` only reads.
    type string string `service` (maintenance, snow) or `standard` (design-build, install).
    contact string string CRM contact the estimate is for.
    items array array Service areas or work areas with price list items and quantities.
    billing object object Service: billing type per season, per visit or per hour, visits weekly, bi-weekly or monthly, contract start and end.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "id": "E-2291",
      "type": "Service",
      "client": "Oakridge HOA",
      "billing": "Per Season",
      "payments": 8,
      "total": 38400,
      "saved": true
    }
  • send_proposal Send an estimate as a web proposal by email, text or both, or read its proposal status. writeAsks first

    Clients approve and sign, request changes or decline in the browser, without a PDF or a login. Texting needs Verified SMS and an opted-in mobile number. A sent proposal has reached your client. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → send_proposal

    REST endpointPOST https://cotlet.dev/api/v1/lmn/proposals

    Parameters

    Parameters: send_proposal
    NameTypeDescription
    action string required string One of `status`, `send`. `status` only reads.
    estimate string required string Estimate ID.
    channel string string `email`, `text` or `email_text`.
    message string string Optional custom message; a text is at most 250 characters and LMN adds the link.

    Example input

    {
      "action": "action",
      "estimate": "estimate"
    }

    Example response

    {
      "estimate": "E-2291",
      "channel": "email_text",
      "sent_to": "board@example.com",
      "status": "Sent"
    }
  • configure_lead_form Read or change the Lead Generation Form that turns website inquiries into CRM contacts. writeAsks first

    Each submission creates a contact, a linked jobsite and a follow-up to-do. The form is in Open Beta and needs CRM admin access; your logo appears at the top. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → configure_lead_form

    REST endpointPOST https://cotlet.dev/api/v1/lmn/lead-form/configure

    Parameters

    Parameters: configure_lead_form
    NameTypeDescription
    action string required string One of `get`, `update`. `get` only reads.
    fields object object Form settings as Lead Form Settings shows them.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "enabled": true,
      "link": "https://example.com/lead-form",
      "creates": [
        "Contact",
        "Jobsite",
        "To-Do"
      ]
    }

Jobs, schedule and crews8

Jobs from sold estimates, change orders, visits on the calendar and the timesheets crews send back.

  • manage_jobs List jobs, create one from a sold estimate, set it up for invoicing, add tasks or link an estimate. writeAsks first

    Creating from an estimate turns work areas or services into tasks with their estimated hours, and can carry crew notes over as task notes. `get` returns assignments, notes and job files (Professional and Enterprise). By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → manage_jobs

    REST endpointPOST https://cotlet.dev/api/v1/lmn/jobs/manage

    Parameters

    Parameters: manage_jobs
    NameTypeDescription
    action string required string One of `list`, `get`, `create_from_estimate`, `setup_invoicing`, `add_task`, `link_estimate`. `list` and `get` only read.
    job string string Job name, for the actions on one job.
    estimate string string Estimate ID, for `create_from_estimate` and `link_estimate`.
    invoicing string string For `setup_invoicing`: `hourly` or `monthly_contract`.
    task object object For `add_task`: name, notes, category (Default or Drive Time).

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "job": "Oakridge HOA maintenance",
      "from_estimate": "E-2291",
      "tasks": [
        "Weekly mowing",
        "Spring cleanup",
        "Fall cleanup"
      ],
      "estimated_hours": 412,
      "saved": true
    }
  • manage_change_orders Create a change order on a sold job, share it with the customer, or approve it. writeAsks first

    For jobs from a Standard estimate on the redesigned job page, with Add & Edit Jobs: Full Access. Only one change order can be in Draft or Sent at a time. Approving updates the job's scope; the original estimate stays unchanged. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → manage_change_orders

    REST endpointPOST https://cotlet.dev/api/v1/lmn/change-orders/manage

    Parameters

    Parameters: manage_change_orders
    NameTypeDescription
    action string required string One of `get`, `create`, `share`, `approve`. `get` only reads.
    job string required string Job name, as manage_jobs `list` returns it.
    items array array Work added or removed, with price list items.

    Example input

    {
      "action": "action",
      "job": "job"
    }

    Example response

    {
      "job": "Miller patio install",
      "change_order": "Add seat wall",
      "total": 2850,
      "status": "Sent"
    }
  • manage_schedule Read scheduled visits, or schedule a one-time or recurring visit for a job. writeAsks first

    Visits show on the Calendar, Whiteboard and Schedule Review. The Whiteboard's Route Optimizer orders each crew's sites; the tool does not reroute crews by itself. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → manage_schedule

    REST endpointPOST https://cotlet.dev/api/v1/lmn/schedule/manage

    Parameters

    Parameters: manage_schedule
    NameTypeDescription
    action string required string One of `list`, `schedule`, `move`. `list` only reads.
    job string string Job to schedule.
    recurring boolean boolean True for a recurring visit.
    start string string ISO date.
    crew string string Crew or crew lead.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "job": "Oakridge HOA maintenance",
      "recurring": true,
      "start": "2026-11-17",
      "crew": "Crew 2",
      "visits": "Weekly"
    }
  • stop_service Stop visits and billing for a job that should no longer be serviced. writeAsks first

    Follows LMN's Cancel / Stop a Service steps: upcoming visits from that date are removed, then the job's billing is stopped. Use it when a customer moves out or cancels a maintenance contract. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → stop_service

    REST endpointPOST https://cotlet.dev/api/v1/lmn/service/stop

    Parameters

    Parameters: stop_service
    NameTypeDescription
    job string required string Job name, as manage_jobs `list` returns it.
    from string required string ISO date from which visits and billing stop.

    Example input

    {
      "job": "job",
      "from": "from"
    }

    Example response

    {
      "job": "Example Homeowner lawn care",
      "from": "2026-12-01",
      "visits_removed": 6,
      "billing_stopped": true
    }
  • manage_work_calendars List work calendars or add one for recurring or non-recurring work. writeAsks first

    A work calendar sets defaults such as color, drive time and schedule templates for the jobs you schedule on it. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → manage_work_calendars

    REST endpointPOST https://cotlet.dev/api/v1/lmn/work-calendars/manage

    Parameters

    Parameters: manage_work_calendars
    NameTypeDescription
    action string required string One of `list`, `create`. `list` only reads.
    name string string Calendar name, for example Mowing.
    kind string string `recurring` or `non_recurring`.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "calendars": [
        {
          "name": "Mowing",
          "kind": "recurring"
        },
        {
          "name": "Installs",
          "kind": "non_recurring"
        }
      ]
    }
  • manage_timesheets Read the Daily Review and timesheet alerts, approve timesheets, or punch a crew out from the office. writeAsks first

    Daily Review shows crew notes and photos by foreman. Alerts flag timesheets not approved and skipped lunch breaks, and staff over their daily hours or clocked into several timesheets. LMN exports hours for payroll; it holds no pay rates. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → manage_timesheets

    REST endpointPOST https://cotlet.dev/api/v1/lmn/timesheets/manage

    Parameters

    Parameters: manage_timesheets
    NameTypeDescription
    action string required string One of `daily_review`, `alerts`, `approve`, `punch_out`, `create`. `daily_review` and `alerts` only read.
    date string required string ISO date.
    staff array array Employees, for `approve`, `punch_out` and `create`.
    job string string Job, for `create`.

    Example input

    {
      "action": "action",
      "date": "date"
    }

    Example response

    {
      "date": "2026-11-13",
      "alerts": [
        {
          "staff": "Crew lead A",
          "alert": "Not approved"
        },
        {
          "staff": "Crew member B",
          "alert": "Skipped lunch"
        }
      ],
      "approved": 0
    }
  • manage_payroll_settings List or add payroll codes, or add a wage cost for a staff member. writeAsks first

    Payroll codes link to payroll items in QuickBooks or other payroll software, which apply the wage. Wage costs make timesheets and job cost reports show real labor cost. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → manage_payroll_settings

    REST endpointPOST https://cotlet.dev/api/v1/lmn/payroll-settings/manage

    Parameters

    Parameters: manage_payroll_settings
    NameTypeDescription
    action string required string One of `list`, `add_payroll_code`, `add_wage_cost`. `list` only reads.
    staff string string For `add_wage_cost`.
    value object object Payroll code name, or wage cost details.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "payroll_codes": [
        "Regular",
        "Overtime",
        "Snow premium"
      ]
    }
  • manage_sms List SMS templates, add one with variables, or switch visit reminder texts on or off. writeAsks first

    Needs a Verified SMS account; saving templates needs Security admin permission. Automated reminders are logged in SMS history as sent by System. Texting customers reaches them, so each change waits for your OK. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → manage_sms

    REST endpointPOST https://cotlet.dev/api/v1/lmn/sms/manage

    Parameters

    Parameters: manage_sms
    NameTypeDescription
    action string required string One of `list`, `add_template`, `reminders_on`, `reminders_off`. `list` only reads.
    template object object Name and text, with variables such as {{ContactFirstName}} and {{VisitDay}}.
    job string string To turn reminders off for one job.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "templates": [
        "Pre-visit notification",
        "Mowing visit reminder"
      ],
      "visit_reminders": true
    }

Invoicing and payments8

Generate, send and remind; record checks; charge saved cards only after your OK.

  • generate_invoices Find invoices ready to create for a date range and invoice group, generate them, or revert an invoice run. writeAsks first

    `preview` lists jobs with uninvoiced work and flags any invoice marked for review. Each generate becomes an invoice run; reverting a run sends its invoices back to Generate. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → generate_invoices

    REST endpointPOST https://cotlet.dev/api/v1/lmn/invoices/generate

    Parameters

    Parameters: generate_invoices
    NameTypeDescription
    action string required string One of `preview`, `generate`, `list_runs`, `revert_run`. `preview` and `list_runs` only read.
    from string string ISO date.
    to string string ISO date.
    group string string Invoice group.
    filter string string `all_billable`, `monthly_charges` or `billable_extras`.

    Example input

    {
      "action": "preview",
      "from": "2026-11-01",
      "to": "2026-11-30",
      "group": "Maintenance",
      "filter": "all_billable"
    }

    Example response

    {
      "from": "2026-11-01",
      "to": "2026-11-30",
      "group": "Maintenance",
      "ready": 42,
      "flagged_for_review": 1
    }
  • manage_invoices List invoices by stage, create an ad hoc invoice on a job, approve it, or email and publish it to the customer portal. writeAsks first

    `send` emails the invoice and publishes it to the customer portal, where the customer can pay. It reaches your customer, so the agent shows recipients and total first. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → manage_invoices

    REST endpointPOST https://cotlet.dev/api/v1/lmn/invoices/manage

    Parameters

    Parameters: manage_invoices
    NameTypeDescription
    action string required string One of `list`, `get`, `create`, `approve`, `send`. `list` and `get` only read.
    job string string For `create`: a job is required.
    invoice string string Invoice number.
    items array array For `create`: crew lead, cost code, quantity, rate and tax.
    stage string string For `list`: Not Sent, Sent, Reminded, Viewed or Paid.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "invoice": "INV-5530",
      "job": "Miller patio install",
      "total": 7325,
      "stage": "Not Sent",
      "status": "Approved"
    }
  • manage_invoice_groups List invoice groups, create one, or add and remove jobsites. writeAsks first

    Groups let you generate invoices for a whole set of similar customers at once. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → manage_invoice_groups

    REST endpointPOST https://cotlet.dev/api/v1/lmn/invoice-groups/manage

    Parameters

    Parameters: manage_invoice_groups
    NameTypeDescription
    action string required string One of `list`, `create`, `add_jobsites`, `remove_jobsites`. `list` only reads.
    group string string Group name, for example Maintenance.
    jobsites array array Jobsites to add or remove.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "group": "Maintenance",
      "jobsites": 42
    }
  • configure_invoice_automation Set a job's invoice schedule, or edit the invoice email templates and automatic reminders. writeAsks first

    Monthly billing runs from the invoice schedule; hourly and per visit billing can follow Crew App timesheets. Automatic reminders start off and only go out once switched on. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → configure_invoice_automation

    REST endpointPOST https://cotlet.dev/api/v1/lmn/invoice-automation/configure

    Parameters

    Parameters: configure_invoice_automation
    NameTypeDescription
    action string required string One of `get`, `set_schedule`, `update_templates`, `set_reminders`. `get` only reads.
    job string string For `set_schedule`.
    reminder_days array array For `set_reminders`: days after sending.
    template object object Subject and body of the Invoice Send or Invoice Reminder email.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "reminders": true,
      "reminder_days": [
        7,
        14
      ],
      "channel": "Email"
    }
  • list_payments Read the Payments page: online and manual payments by name, date, status and method. read

    Online payments show whether they were made in the customer portal or entered manually, and their settlement status. Pending means not yet exported to QuickBooks.

    MCP calllmn_read → list_payments

    REST endpointGET https://cotlet.dev/api/v1/lmn/payments

    Parameters

    Parameters: list_payments
    NameTypeDescription
    from string string ISO date.
    to string string ISO date.
    status string string For example Pending or Settled.

    Example response

    {
      "payments": [
        {
          "customer": "Oakridge HOA",
          "invoice": "INV-5521",
          "amount": 3200,
          "type": "Online/Portal",
          "status": "Settled"
        },
        {
          "customer": "Example Homeowner",
          "invoice": "INV-5530",
          "amount": 7325,
          "type": "Manual",
          "status": "Pending"
        }
      ]
    }
  • record_payment Record a check or cash payment, or charge a one-time online payment with the customer's saved method. writeAsks first

    Invoices must be Pending, Approved or Exported. `saved_online` charges the customer through LMN Pay (Stripe, or Fiserv and Payrix) and moves money, so it always waits for your OK. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → record_payment

    REST endpointPOST https://cotlet.dev/api/v1/lmn/payments

    Parameters

    Parameters: record_payment
    NameTypeDescription
    invoices array required array Invoice numbers; one payment can be split across several.
    method string required string A payment method from your Payment Settings, or `saved_online` for the CRM card or ACH.
    amount number required number Amount.
    reference string string Check number or note.

    Example input

    {
      "invoices": "invoices",
      "method": "method",
      "amount": 1
    }

    Example response

    {
      "invoices": [
        "INV-5530"
      ],
      "method": "Check",
      "amount": 7325,
      "reference": "1042",
      "balance": 0
    }
  • run_payments List invoices ready for a payment run, or charge them against the customers' cards on file. writeAsks first

    Invoices must be generated, approved and published to the Customer Portal, and each customer needs a default payment method with autopay. LMN asks you to type CONFIRM before a run; the agent does that only after your OK. Customers get an email for each payment. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → run_payments

    REST endpointPOST https://cotlet.dev/api/v1/lmn/payments/run

    Parameters

    Parameters: run_payments
    NameTypeDescription
    action string required string One of `preview`, `run`. `preview` only reads.
    invoices array array For `run`: the invoices to charge.

    Example input

    {
      "action": "action"
    }

    Example response

    {
      "ready": [
        {
          "invoice": "INV-5521",
          "customer": "Oakridge HOA",
          "amount": 3200
        }
      ],
      "total": 3200
    }
  • request_payment_method Email a customer a request to add a card, or a bank account for ACH, to their file. writeAsks first

    ACH is for U.S. customers only. The contact then shows the payment method as Requested until the customer adds one. By default you confirm each call; you can switch that off for this tool.

    MCP calllmn_write → request_payment_method

    REST endpointPOST https://cotlet.dev/api/v1/lmn/payment-method/request

    Parameters

    Parameters: request_payment_method
    NameTypeDescription
    contact string required string CRM contact with an email address.

    Example input

    {
      "contact": "contact"
    }

    Example response

    {
      "contact": "Example Homeowner",
      "status": "Requested"
    }
Encrypted, revocable

Who can see my LMN session, and how do I revoke it?

  • What we store

    Your signed-in LMN browser profile, AES-256-GCM encrypted, in Finland. Never your password.

  • What your agent gets

    The 23 LMN tools. The session cookie stays in the Cloud Browser.

  • What the session sees

    What your LMN user and its permissions open: estimates, jobs, timesheets, invoices.

  • What no tool touches

    Users and seats, security permissions, SMS verification, payment processor settings, and the QuickBooks connection and sync.

  • If LMN signs you out

    You log in again yourself, in the same Cloud Browser.

  • How to cut access

    Disable LMN for agents, reset the browser, or change your LMN password.

You type your LMN password yourself; the agent only uses the session that login leaves behind. Cotlet never sees your API Key. Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results).

We keep it working

What happens when LMN changes? The tools use the same LMN screens your office uses.

LMN is moving pages to new designs: change orders already live only on the redesigned job page, and web proposals replace the classic Print Reports flow on accounts that have them. Cotlet follows those screens, and your agent keeps the same tool names.

Features that LMN switches on per account, such as change orders, text proposals and the lead form, are there for the agent only when they are there for you.

If LMN logs you out, one click in the Cotlet console reopens the Cloud Browser so you can log in again.

21 tools ask first

Approvals, undo and mistakes Customers hear nothing and pay nothing until you say so.

  1. 01 Preview the billing generate_invoices lists what is ready.
  2. 02 Show you the totals And any invoice flagged for review.
  3. 03 Generate after your OK One invoice run you can revert.
  4. 04 Send when you say manage_invoices emails and publishes them.
Fixing an LMN write that went wrong
ActionHow to put it right
Invoices generated too earlyRevert the invoice run; the invoices go back to Generate
Visit scheduled on the wrong dayMove it again with manage_schedule
Proposal or invoice sentAlready with your customer: follow up with them
Payment run chargedA real card charge: no tool call undoes it, so keep confirmation on

All 21 write tools ask first: by default you confirm each call, and you can switch that off per tool. Keep it on for run_payments and record_payment, which move money. The 2 read tools run at once.

MCP call
{
  "name": "generate_invoices",
  "arguments": {
    "action": "preview",
    "from": "2026-11-01",
    "to": "2026-11-30",
    "group": "Maintenance",
    "filter": "all_billable"
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/lmn/invoices/generate \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"preview","from":"2026-11-01","to":"2026-11-30","group":"Maintenance","filter":"all_billable"}'
Response
{
  "from": "2026-11-01",
  "to": "2026-11-30",
  "group": "Maintenance",
  "ready": 42,
  "flagged_for_review": 1
}

The example previews November for the Maintenance group: 42 invoices ready, 1 flagged, nothing generated yet. A cron job or n8n flow can make the same call over REST at /api/v1/lmn with the same key and price, in JSON. Failed calls are free.

Pay per call

How much does the LMN MCP server cost?

About $26 a monthfor a landscape company with two crews in season, 4,440 credits. Your LMN plan stays as it is.

Illustrative month, our assumption: successful calls for this workload
JobCallsCredits
Timesheet review and approval3 × 22660
Schedule moves2 × 20400
Daily payments check1 × 20200
Monday proposal follow-up11 × 4440
New estimates and proposals3 × 10300
Jobs from sold estimates2 × 6120
Change orders2 × 360
Payments recorded1 × 30300
Month-end billing, 42 invoices44 × 1440
Autopay payment run2 × 120
Cloud Browser, 30 days1,500
Total294 calls4,440

The smallest pack, 5,000 credits for $29, covers this month. Winter months with fewer visits use fewer calls.

  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • Your LMN plan, payment processor and fees apply as they are

Credit packs are one-time purchases, not a subscription. The month above is built from our own assumptions, not measured customer usage.

Cotlet credit packs: price, credits and calls at 10 credits each
Credits Price, one time Calls at 10 credits Per 1,000 credits
5,000 $29 500 $5.80
15,000 $79 1,500 $5.27
32,000 $149 3,200 $4.66
60,000 $249 6,000 $4.15

Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.

Other options

LMN MCP server: other ways to connect What each route does for a landscape office, and where it stops.

Other ways to work with LMN, checked 13 Nov 2026
OptionWhat it doesWhere it stops
LMN + ZapierAn estimate trigger and contact, to-do, request and history actions.Nothing for jobs, timesheets, invoices or payments; needs a plan that includes it.
AskLMNPlain-English answers about your LMN data, inside LMN.Closed beta, Professional and above; it answers, it does not act.
LMN automationsInvoice reminders, visit reminder texts and invoice schedules you set once.Fixed rules inside LMN, no agent.
By handOpen each screen in LMN.One screen at a time, after the crews are in.

If the Zapier integration covers your job, use it: it is LMN's own route. Cotlet fits the rest, when you want ChatGPT, Claude or a script to work in LMN from your own login, with nothing to host.

EU company, since 2019

Who runs Cotlet A company you can look up.

Take Group sp. z o.o. builds and runs Cotlet. The company is registered in Poland, EU (VAT PL6342984273), has worked since 2019 and is led by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Ask about the LMN tools at contact@cotlet.dev.

LMN MCP server: questions

How do I get access?

Sign up free at https://cotlet.dev/signup?app=lmn, turn on LMN under Integrations in the console and log in at https://my.golmn.com/lmn/ in your Cloud Browser. Then connect your AI agent and ask it about your open estimates. The trial needs no card.

Does LMN have an API?

LMN gives accounts on eligible plans an API Key and API Username, which Security Admins find in Settings > Integrations, for its Zapier integration: one trigger (an estimate is created or updated) and five actions on to-dos, requests, communication history and contacts (checked 13 Nov 2026). No LMN MCP server or official ChatGPT or Claude connector was verified; AskLMN answers questions inside LMN in a closed beta. Cotlet does not use the API Key: it works in your own signed-in LMN account.

How is this different from AskLMN?

AskLMN is LMN's own assistant for questions about your data, in a closed beta for Professional plans and above. Cotlet is separate: it lets ChatGPT, Claude or a script you choose do work in LMN, such as sending proposals, approving timesheets and generating invoices, with your OK.

Can the agent charge my customers' cards?

Only through LMN Pay steps LMN already has: a one-time payment with a saved method, or a payment run against cards on file with autopay. Both wait for your OK every time, and LMN still asks for CONFIRM before a run. Reading payments charges nothing.

Do I need a Security Admin user?

Not for Cotlet. LMN asks for Security Admin to see the Zapier API Key and to save SMS templates. Cotlet uses your login, so each tool works when your user can do the same thing in LMN.

Is the MCP server different from the REST API?

Only in how it is called. Both carry the same 23 tools, inputs, answers, API key and price. Agents use MCP; scripts and n8n HTTP steps use REST.

Is Cotlet affiliated with LMN?

No. Cotlet is independent and not affiliated with LMN or Granum.

Let your agent run this month's LMN billing.

Free 7-day trial with 2,000 credits, no card needed.