Local services & SaaS
SingleOps
Leads, proposals, jobs, visits and invoices in SingleOps tree care software by Granum.
6 endpoints
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.
23 tools Read and write
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.
| What you need | LMN + Zapier | AskLMN | Cotlet |
|---|---|---|---|
| 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
Once, in a browser we host for you.
One address in its settings.
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
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.
Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as the MCP server or connector URL in your agent.
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.
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth 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/mcp.json
{
"mcpServers": {
"cotlet": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: lmn_read 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.
The operating budget prices every estimate through the Price List; services and service types carry estimates into jobs.
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
| Name | Type | Description |
|---|---|---|
| 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`. |
{
"action": "action"
} {
"budget": "2027 Operating Budget",
"sales_goal": 1850000,
"profit_margin": 12,
"recovery_method": "MORS",
"active": false
} 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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"action": "action"
} {
"production_rates": [
{
"name": "Sod install",
"unit": "sq ft",
"hours_per_unit": 0.012
}
],
"default_tax": "HST 13%"
} 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
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `list`, `add_service`, `add_service_type`. `list` only reads. |
| name string | string | Service or service type name. |
{
"action": "action"
} {
"services": [
"Weekly mowing",
"Spring cleanup",
"Fall cleanup"
],
"service_types": [
"Maintenance",
"Snow"
]
} Service estimates for recurring work, Standard estimates for installs, and web proposals clients sign in the browser.
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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"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
}
]
} 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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"action": "action"
} {
"id": "E-2291",
"type": "Service",
"client": "Oakridge HOA",
"billing": "Per Season",
"payments": 8,
"total": 38400,
"saved": true
} 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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"action": "action",
"estimate": "estimate"
} {
"estimate": "E-2291",
"channel": "email_text",
"sent_to": "board@example.com",
"status": "Sent"
} 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
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `get`, `update`. `get` only reads. |
| fields object | object | Form settings as Lead Form Settings shows them. |
{
"action": "action"
} {
"enabled": true,
"link": "https://example.com/lead-form",
"creates": [
"Contact",
"Jobsite",
"To-Do"
]
} Jobs from sold estimates, change orders, visits on the calendar and the timesheets crews send back.
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
| Name | Type | Description |
|---|---|---|
| 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). |
{
"action": "action"
} {
"job": "Oakridge HOA maintenance",
"from_estimate": "E-2291",
"tasks": [
"Weekly mowing",
"Spring cleanup",
"Fall cleanup"
],
"estimated_hours": 412,
"saved": true
} 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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"action": "action",
"job": "job"
} {
"job": "Miller patio install",
"change_order": "Add seat wall",
"total": 2850,
"status": "Sent"
} 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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"action": "action"
} {
"job": "Oakridge HOA maintenance",
"recurring": true,
"start": "2026-11-17",
"crew": "Crew 2",
"visits": "Weekly"
} 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
| Name | Type | Description |
|---|---|---|
| job string required | string | Job name, as manage_jobs `list` returns it. |
| from string required | string | ISO date from which visits and billing stop. |
{
"job": "job",
"from": "from"
} {
"job": "Example Homeowner lawn care",
"from": "2026-12-01",
"visits_removed": 6,
"billing_stopped": true
} 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
| Name | Type | Description |
|---|---|---|
| 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`. |
{
"action": "action"
} {
"calendars": [
{
"name": "Mowing",
"kind": "recurring"
},
{
"name": "Installs",
"kind": "non_recurring"
}
]
} 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
| Name | Type | Description |
|---|---|---|
| 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`. |
{
"action": "action",
"date": "date"
} {
"date": "2026-11-13",
"alerts": [
{
"staff": "Crew lead A",
"alert": "Not approved"
},
{
"staff": "Crew member B",
"alert": "Skipped lunch"
}
],
"approved": 0
} 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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"action": "action"
} {
"payroll_codes": [
"Regular",
"Overtime",
"Snow premium"
]
} 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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"action": "action"
} {
"templates": [
"Pre-visit notification",
"Mowing visit reminder"
],
"visit_reminders": true
} Generate, send and remind; record checks; charge saved cards only after your OK.
`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
| Name | Type | Description |
|---|---|---|
| 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`. |
{
"action": "preview",
"from": "2026-11-01",
"to": "2026-11-30",
"group": "Maintenance",
"filter": "all_billable"
} {
"from": "2026-11-01",
"to": "2026-11-30",
"group": "Maintenance",
"ready": 42,
"flagged_for_review": 1
} `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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"action": "action"
} {
"invoice": "INV-5530",
"job": "Miller patio install",
"total": 7325,
"stage": "Not Sent",
"status": "Approved"
} 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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"action": "action"
} {
"group": "Maintenance",
"jobsites": 42
} 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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"action": "action"
} {
"reminders": true,
"reminder_days": [
7,
14
],
"channel": "Email"
} 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
| Name | Type | Description |
|---|---|---|
| from string | string | ISO date. |
| to string | string | ISO date. |
| status string | string | For example Pending or Settled. |
{
"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"
}
]
} 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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"invoices": "invoices",
"method": "method",
"amount": 1
} {
"invoices": [
"INV-5530"
],
"method": "Check",
"amount": 7325,
"reference": "1042",
"balance": 0
} 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
| Name | Type | Description |
|---|---|---|
| action string required | string | One of `preview`, `run`. `preview` only reads. |
| invoices array | array | For `run`: the invoices to charge. |
{
"action": "action"
} {
"ready": [
{
"invoice": "INV-5521",
"customer": "Oakridge HOA",
"amount": 3200
}
],
"total": 3200
} 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
| Name | Type | Description |
|---|---|---|
| contact string required | string | CRM contact with an email address. |
{
"contact": "contact"
} {
"contact": "Example Homeowner",
"status": "Requested"
} Your signed-in LMN browser profile, AES-256-GCM encrypted, in Finland. Never your password.
The 23 LMN tools. The session cookie stays in the Cloud Browser.
What your LMN user and its permissions open: estimates, jobs, timesheets, invoices.
Users and seats, security permissions, SMS verification, payment processor settings, and the QuickBooks connection and sync.
You log in again yourself, in the same Cloud Browser.
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).
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.
| Action | How to put it right |
|---|---|
| Invoices generated too early | Revert the invoice run; the invoices go back to Generate |
| Visit scheduled on the wrong day | Move it again with manage_schedule |
| Proposal or invoice sent | Already with your customer: follow up with them |
| Payment run charged | A 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.
{
"name": "generate_invoices",
"arguments": {
"action": "preview",
"from": "2026-11-01",
"to": "2026-11-30",
"group": "Maintenance",
"filter": "all_billable"
}
} 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"}' {
"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.
About $26 a monthfor a landscape company with two crews in season, 4,440 credits. Your LMN plan stays as it is.
| Job | Calls | Credits |
|---|---|---|
| Timesheet review and approval | 3 × 22 | 660 |
| Schedule moves | 2 × 20 | 400 |
| Daily payments check | 1 × 20 | 200 |
| Monday proposal follow-up | 11 × 4 | 440 |
| New estimates and proposals | 3 × 10 | 300 |
| Jobs from sold estimates | 2 × 6 | 120 |
| Change orders | 2 × 3 | 60 |
| Payments recorded | 1 × 30 | 300 |
| Month-end billing, 42 invoices | 44 × 1 | 440 |
| Autopay payment run | 2 × 1 | 20 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 294 calls | 4,440 |
The smallest pack, 5,000 credits for $29, covers this month. Winter months with fewer visits use fewer calls.
Credit packs are one-time purchases, not a subscription. The month above is built from our own assumptions, not measured customer usage.
| 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.
| Option | What it does | Where it stops |
|---|---|---|
| LMN + Zapier | An estimate trigger and contact, to-do, request and history actions. | Nothing for jobs, timesheets, invoices or payments; needs a plan that includes it. |
| AskLMN | Plain-English answers about your LMN data, inside LMN. | Closed beta, Professional and above; it answers, it does not act. |
| LMN automations | Invoice reminders, visit reminder texts and invoice schedules you set once. | Fixed rules inside LMN, no agent. |
| By hand | Open 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.
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.
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.
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.
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.
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.
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.
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.
No. Cotlet is independent and not affiliated with LMN or Granum.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy