MCP tools reference
Service Autopilot MCP tools
14 tools for Service Autopilot on the Cotlet MCP server. Your agent picks them from tools/list.
- MCP server
- https://cotlet.dev/mcp/v1
- Connects with
- Your own Service Autopilot office user account
- Integration page
- Service Autopilot
| Endpoint | Access | Description |
|---|---|---|
| service-autopilot_search_clients | read | Find clients and leads by name, address, email or phone. |
| service-autopilot_get_client | read | Client account history: contact details, jobs, estimates, invoices and notes. |
| service-autopilot_list_jobs | read | Scheduled and completed jobs in a date range, with client, address, crew and price. |
| service-autopilot_get_route | read | A crew or technician route for one day: stops in route order with client and address. |
| service-autopilot_list_estimates | read | Estimates with client, total, date sent and status. |
| service-autopilot_list_invoices | read | Invoices with client, amount, due date, paid or unpaid and days past due. |
| service-autopilot_add_client | write | New client or lead with contact details and a service address. |
| service-autopilot_create_job | write | One-time or repeating job for a client, assigned to a crew. |
| service-autopilot_reschedule_job | write | Move a scheduled visit to another day or crew. |
| service-autopilot_add_job_note | write | Add a note to a job. |
| service-autopilot_create_estimate | write | Estimate for a client from line items. Nothing is sent until you call send_estimate. |
| service-autopilot_send_estimate | write | Email an estimate to the client. |
| service-autopilot_create_invoice | write | Invoice a client for completed jobs, optionally emailing it right away. |
| service-autopilot_send_text | write | Text message to a client with 2-Way Texting. |
Search clients
readMCP tool service-autopilot_search_clients
Returns matching clients and leads with ID, name, service address and type. Pass client_id to get_client, create_job or create_estimate. Results hold up to 100 clients.
Parameters
| Name | Type | Description |
|---|---|---|
| query required | string | Name, street address, email or phone. |
| type | enum | client, lead or all. Default: all. |
| limit | integer | 1 to 100. Default: 25. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_search_clients",
"arguments": {
"query": "query"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"clients": [
{
"client_id": "4410382",
"name": "Dana Henderson",
"type": "client",
"address": "12 Oak Lane",
"phone": "555-0142"
}
]
},
"isError": false
} Get client
readMCP tool service-autopilot_get_client
Returns one client with contact details, service address, recent jobs, estimates, invoices and notes, the same history the account page shows. Use it before replying to a client or billing one.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from search_clients. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_get_client",
"arguments": {
"client_id": "client_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"client_id": "4410382",
"name": "Dana Henderson",
"address": "12 Oak Lane",
"email": "dana@example.com",
"jobs": [
{
"job_id": "9827514",
"service": "Mowing",
"next_visit": "2026-10-13"
}
],
"estimates": [
{
"estimate_id": "E-20418",
"total": "450.00",
"status": "sent"
}
],
"invoices": [
{
"invoice_id": "I-70231",
"amount": "45.00",
"status": "paid"
}
],
"notes": [
"Side gate code 1234"
]
},
"isError": false
} List jobs
readMCP tool service-autopilot_list_jobs
Lists visits in a date range, ordered by date, with client, address, crew and price. Filter by crew or by status. Pass job_id to reschedule_job or add_job_note.
Parameters
| Name | Type | Description |
|---|---|---|
| from required | date | First day. |
| to | date | Last day. Default: same as from. |
| crew | string | Crew or technician name. |
| status | enum | scheduled, completed or all. Default: all. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_list_jobs",
"arguments": {
"from": "2026-10-01"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"jobs": [
{
"job_id": "9827514",
"date": "2026-10-13",
"client": "Dana Henderson",
"address": "12 Oak Lane",
"service": "Mowing",
"crew": "Crew 2",
"price": "45.00",
"status": "scheduled"
}
]
},
"isError": false
} Get route
readMCP tool service-autopilot_get_route
Returns the stops of one crew on one day in the order the route is set, each with client, address, service and price. It reads the route as Service Autopilot shows it and does not change it.
Parameters
| Name | Type | Description |
|---|---|---|
| crew required | string | Crew or technician name. |
| date required | date | Route day. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_get_route",
"arguments": {
"crew": "crew",
"date": "2026-10-01"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"crew": "Crew 1",
"date": "2026-10-13",
"stops": [
{
"order": 1,
"client": "Dana Henderson",
"address": "12 Oak Lane",
"service": "Mowing",
"price": "45.00"
},
{
"order": 2,
"client": "Lee Park",
"address": "40 Elm Street",
"service": "Mowing",
"price": "60.00"
}
]
},
"isError": false
} List estimates
readMCP tool service-autopilot_list_estimates
Lists estimates, newest first, with client, total and whether the estimate was sent. Filter by client or creation date. Pass estimate_id to send_estimate.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id | string | Only this client. |
| since | date | Only estimates created on or after this date. |
| limit | integer | 1 to 100. Default: 25. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_list_estimates",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"estimates": [
{
"estimate_id": "E-20418",
"client": "Dana Henderson",
"total": "450.00",
"status": "sent",
"sent_at": "2026-10-08"
}
]
},
"isError": false
} List invoices
readMCP tool service-autopilot_list_invoices
Lists invoices with client, amount, due date and status. Unpaid invoices come first by default, oldest due date first. Filter by client or date. Amounts are in your account currency.
Parameters
| Name | Type | Description |
|---|---|---|
| status | enum | unpaid, paid or all. Default: unpaid. |
| client_id | string | Only this client. |
| since | date | Only invoices dated on or after this date. |
| limit | integer | 1 to 200. Default: 50. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_list_invoices",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"invoices": [
{
"invoice_id": "I-70198",
"client": "Lee Park",
"amount": "120.00",
"due_date": "2026-09-05",
"status": "unpaid",
"days_past_due": 36
}
]
},
"isError": false
} Add client
writeMCP tool service-autopilot_add_client
Creates a client or a lead with a service address and optional contact details and notes. It sends nothing to the client, so it runs without asking first and the record can be edited or removed in the app.
Parameters
| Name | Type | Description |
|---|---|---|
| name required | string | Person or company name. |
| address required | string | Service address. |
| string | Client email. | |
| phone | string | Mobile number. |
| type | enum | client or lead. Default: client. |
| notes | string | Gate codes, pets, special instructions. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_add_client",
"arguments": {
"name": "Jane Doe",
"address": "address"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"client_id": "4410382",
"name": "Dana Henderson",
"type": "client",
"address": "12 Oak Lane"
},
"isError": false
} Create job
writeMCP tool service-autopilot_create_job
Puts a job on the calendar for a client, one time or repeating weekly, every other week or monthly. The service name must match one set up in your account. It sends nothing to the client, so it runs without asking first; reschedule_job fixes a wrong date.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from search_clients. |
| service required | string | Service name as set up in your account, e.g. Mowing. |
| start_date required | date | First visit. |
| recurrence | enum | one_time, weekly, every_other_week or monthly. Default: one_time. |
| crew | string | Crew or technician name. |
| price | string | Price per visit, e.g. 45.00. |
| instructions | string | Special instructions for the visit. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_create_job",
"arguments": {
"client_id": "4410382",
"service": "Mowing",
"start_date": "2026-10-13",
"recurrence": "weekly",
"crew": "Crew 2",
"price": "45.00",
"instructions": "Side gate code 1234, back yard first."
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"job_id": "9827514",
"client_id": "4410382",
"service": "Mowing",
"recurrence": "weekly",
"next_visit": "2026-10-13",
"crew": "Crew 2",
"price": "45.00",
"status": "scheduled"
},
"isError": false
} Reschedule job
writeMCP tool service-autopilot_reschedule_job
Moves one scheduled visit to a new date, and to another crew if you name one. It changes the calendar only and one more call moves it back, so it runs without asking first.
Parameters
| Name | Type | Description |
|---|---|---|
| job_id required | string | Job ID from list_jobs. |
| date required | date | New day. |
| crew | string | New crew or technician. Default: unchanged. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_reschedule_job",
"arguments": {
"job_id": "9827514",
"date": "2026-10-16"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"job_id": "9827514",
"date": "2026-10-16",
"crew": "Crew 2",
"status": "scheduled"
},
"isError": false
} Add job note
writeMCP tool service-autopilot_add_job_note
Adds a text note to one job. It reaches no client and runs without asking first.
Parameters
| Name | Type | Description |
|---|---|---|
| job_id required | string | Job ID from list_jobs. |
| note required | string | Note text. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_add_job_note",
"arguments": {
"job_id": "job_8c41d2",
"note": "note"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"job_id": "9827514",
"note_id": "n_3301",
"status": "added"
},
"isError": false
} Create estimate
writeMCP tool service-autopilot_create_estimate
Creates an estimate for a client from line items and returns its total. The line items add up to the total. It sends nothing to the client, so it runs without asking first; send_estimate delivers it.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from search_clients. |
| items required | object[] | Line items, each with service, quantity and price. |
| notes | string | Message shown on the estimate. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_create_estimate",
"arguments": {
"client_id": "4410382",
"items": [
{
"service": "Spring cleanup",
"quantity": 1,
"price": "250.00"
},
{
"service": "Mulch",
"quantity": 6,
"price": "35.00"
}
],
"notes": "Optional: edging along the front beds, $60.00."
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"estimate_id": "E-20418",
"client_id": "4410382",
"total": "450.00",
"status": "created"
},
"isError": false
} MCP tool service-autopilot_send_estimate
Emails one estimate to the client on file. Service Autopilot lists estimates and proposals on the Pro plan. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| estimate_id required | string | Estimate ID from list_estimates or create_estimate. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_send_estimate",
"arguments": {
"estimate_id": "estimate_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"estimate_id": "E-20418",
"status": "sent",
"sent_to": "dana@example.com"
},
"isError": false
} MCP tool service-autopilot_create_invoice
Bills a client for completed jobs, all unbilled ones by default, and returns the invoice total. Set send to email it to the client. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from search_clients. |
| job_ids | string[] | Completed jobs to bill. Default: all unbilled completed jobs. |
| send | boolean | Email the invoice to the client. Default: false. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_create_invoice",
"arguments": {
"client_id": "client_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"invoice_id": "I-70231",
"client_id": "4410382",
"jobs": 4,
"amount": "180.00",
"sent": true
},
"isError": false
} MCP tool service-autopilot_send_text
Sends a text to one client through Two-Way Texting, a paid add-on for Pro and Pro Plus members that the pricing page includes in Elite, so the call fails on accounts without it. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from search_clients. |
| message required | string | Text message body. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "service-autopilot_send_text",
"arguments": {
"client_id": "client_8c41d2",
"message": "message"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"client_id": "4410382",
"status": "sent",
"sent_at": "2026-10-12T17:30:00-04:00"
},
"isError": false
}