Live

Service Autopilot logo

Service Autopilot API and MCP server

serviceautopilot.com

Service Autopilot has no public API, developer portal or self-service API keys (checked 11 Oct 2026). Cotlet is a hosted MCP server and REST API for Service Autopilot with 14 endpoints (6 read, 8 write): your AI agent signs in as you and does the work.

Endpoints
14 6 read, 8 write
Updated
How Cotlet connects your agent to Service Autopilot
  1. Your agent

    Claude Code, Codex, Cursor or a script

  2. Cotlet

    MCP server and REST API · 14 endpoints

    cotlet.dev/mcp/v1

  3. Service Autopilot logo

    Service Autopilot

    Signed in as you on serviceautopilot.com

You sign in once. We never store your password.

Official API

Does Service Autopilot have an official API?

Service Autopilot has no public API, developer portal or self-service API keys (checked 11 Oct 2026). Data moves through a two-way QuickBooks sync, a few partners the vendor picks, a Zapier trigger that only sends completed jobs out, and manual import and export; the QuickBooks sync needs the Pro or Pro Plus plan.

What Service Autopilot's own tools do compared with Cotlet
Task Service Autopilot official Cotlet
Search clients and see account history No Yes
Add a client or lead Partly Customers sync from QuickBooks; otherwise you add them in the app Yes
Create and reschedule jobs No Yes
Read a crew route for a day No Yes
Create and send estimates No Yes
List unpaid invoices Partly Invoices and payments sync through the paid two-way QuickBooks sync Yes
Create and send invoices No Yes
Text a client No Yes

Sources: Service Autopilot pricing and plan features · Service Autopilot 2-way QuickBooks sync · Service Autopilot lawn care software features · Service Autopilot Help: Zapier Integration, Completed Jobs Trigger · Service Autopilot Help: Two Way Texting Settings

Common use cases

What can an AI agent do in Service Autopilot?

Cotlet is best for lawn care and landscaping office managers who want an AI agent to add clients, move jobs, send estimates and chase invoices without running or fixing a server.

  • Add a new client and set up recurring mowing Runs: Weekly

    Add the Hendersons from this email as a client at 12 Oak Lane, gate code 1234, and set up weekly mowing on Tuesdays with Crew 2 at $45 a visit, starting next week. Check first that they are not already in Service Autopilot as a lead. Your agent calls search_clients, add_client and create_job.

  • Reschedule jobs after rain Runs: Daily

    Rain tomorrow: move Crew 2's mowing visits to Friday, but skip the contract clients, keep any visit that already moved this week, and text each moved client the new day. Your agent calls list_jobs, reschedule_job and send_text.

  • Create and send estimates from site visit notes

    Build an estimate for the Hendersons at 12 Oak Lane from my site visit notes: spring cleanup $250, 6 yards of mulch at $35 a yard, and offer edging at $60 as an option. Show it to me, then email it. Your agent calls search_clients, add_client, list_estimates, create_estimate and send_estimate.

  • Find unpaid invoices Runs: Weekly

    Which clients have invoices unpaid for more than 30 days, and how much do they owe? Your agent calls list_invoices.

  • Text clients about tomorrow's visits Runs: Daily

    Text every client on tomorrow's schedule that the crew arrives between 8 and 10. Your agent calls list_jobs and send_text.

Endpoints

What is the Service Autopilot API?

Cotlet's Service Autopilot API exposes 14 endpoints for your own Service Autopilot account: search clients, get client, list jobs, get route, list estimates, list invoices, add client, create job, reschedule job, add job note, create estimate, send estimate, create invoice and send text. The search_clients endpoint returns find clients and leads by name, address, email or phone. Each endpoint takes simple JSON inputs like client_id, crew or limit and works both as an MCP tool for agents and as a REST call for scripts.

All endpoints · 14 total

missing one? request an endpoint

  • POST

    search_clients

    read

    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.

    POST /api/v1/service-autopilot/search_clients

    Input

    Input: search_clients
    Parameter 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.

    Example response

    {
      "clients": [
        {
          "client_id": "4410382",
          "name": "Dana Henderson",
          "type": "client",
          "address": "12 Oak Lane",
          "phone": "555-0142"
        }
      ]
    }
  • POST

    get_client

    read

    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.

    POST /api/v1/service-autopilot/get_client

    Input

    Input: get_client
    Parameter Type Description
    client_id required string Client ID from search_clients.

    Example response

    {
      "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"
      ]
    }
  • POST

    list_jobs

    read

    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.

    POST /api/v1/service-autopilot/list_jobs

    Input

    Input: list_jobs
    Parameter 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.

    Example response

    {
      "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"
        }
      ]
    }
  • POST

    get_route

    read

    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.

    POST /api/v1/service-autopilot/get_route

    Input

    Input: get_route
    Parameter Type Description
    crew required string Crew or technician name.
    date required date Route day.

    Example response

    {
      "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"
        }
      ]
    }
  • POST

    list_estimates

    read

    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.

    POST /api/v1/service-autopilot/list_estimates

    Input

    Input: list_estimates
    Parameter 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.

    Example response

    {
      "estimates": [
        {
          "estimate_id": "E-20418",
          "client": "Dana Henderson",
          "total": "450.00",
          "status": "sent",
          "sent_at": "2026-10-08"
        }
      ]
    }
  • POST

    list_invoices

    read

    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.

    POST /api/v1/service-autopilot/list_invoices

    Input

    Input: list_invoices
    Parameter 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.

    Example response

    {
      "invoices": [
        {
          "invoice_id": "I-70198",
          "client": "Lee Park",
          "amount": "120.00",
          "due_date": "2026-09-05",
          "status": "unpaid",
          "days_past_due": 36
        }
      ]
    }
  • POST

    add_client

    write

    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.

    POST /api/v1/service-autopilot/add_client

    Input

    Input: add_client
    Parameter Type Description
    name required string Person or company name.
    address required string Service address.
    email string Client email.
    phone string Mobile number.
    type enum client or lead. Default: client.
    notes string Gate codes, pets, special instructions.

    Example response

    {
      "client_id": "4410382",
      "name": "Dana Henderson",
      "type": "client",
      "address": "12 Oak Lane"
    }
  • POST

    create_job

    write

    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.

    POST /api/v1/service-autopilot/create_job

    Input

    Input: create_job
    Parameter 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.

    Example response

    {
      "job_id": "9827514",
      "client_id": "4410382",
      "service": "Mowing",
      "recurrence": "weekly",
      "next_visit": "2026-10-13",
      "crew": "Crew 2",
      "price": "45.00",
      "status": "scheduled"
    }
  • POST

    reschedule_job

    write

    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.

    POST /api/v1/service-autopilot/reschedule_job

    Input

    Input: reschedule_job
    Parameter Type Description
    job_id required string Job ID from list_jobs.
    date required date New day.
    crew string New crew or technician. Default: unchanged.

    Example response

    {
      "job_id": "9827514",
      "date": "2026-10-16",
      "crew": "Crew 2",
      "status": "scheduled"
    }
  • POST

    add_job_note

    write

    Adds a text note to one job. It reaches no client and runs without asking first.

    POST /api/v1/service-autopilot/add_job_note

    Input

    Input: add_job_note
    Parameter Type Description
    job_id required string Job ID from list_jobs.
    note required string Note text.

    Example response

    {
      "job_id": "9827514",
      "note_id": "n_3301",
      "status": "added"
    }
  • POST

    create_estimate

    write

    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.

    POST /api/v1/service-autopilot/create_estimate

    Input

    Input: create_estimate
    Parameter 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.

    Example response

    {
      "estimate_id": "E-20418",
      "client_id": "4410382",
      "total": "450.00",
      "status": "created"
    }
  • POST

    send_estimate

    write

    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.

    POST /api/v1/service-autopilot/send_estimate

    Input

    Input: send_estimate
    Parameter Type Description
    estimate_id required string Estimate ID from list_estimates or create_estimate.

    Example response

    {
      "estimate_id": "E-20418",
      "status": "sent",
      "sent_to": "dana@example.com"
    }
  • POST

    create_invoice

    write

    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.

    POST /api/v1/service-autopilot/create_invoice

    Input

    Input: create_invoice
    Parameter 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.

    Example response

    {
      "invoice_id": "I-70231",
      "client_id": "4410382",
      "jobs": 4,
      "amount": "180.00",
      "sent": true
    }
  • POST

    send_text

    write

    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.

    POST /api/v1/service-autopilot/send_text

    Input

    Input: send_text
    Parameter Type Description
    client_id required string Client ID from search_clients.
    message required string Text message body.

    Example response

    {
      "client_id": "4410382",
      "status": "sent",
      "sent_at": "2026-10-12T17:30:00-04:00"
    }

Setup

How do I connect Service Autopilot to Claude Code, Codex or Cursor?

Connecting Service Autopilot takes three steps: request access, sign in to Service Autopilot once, then add one MCP server or call the REST API with the same key.

Connect Service Autopilot over MCP

  1. 1

    Create an account

    Sign up and add Service Autopilot in the console. Your API key is there too.

  2. 2

    Sign in to Service Autopilot once

    Open the connect page from the console and sign in to Service Autopilot the way you always do. We keep the session, never your password, and you can revoke it anytime.

  3. 3

    Add Cotlet to your agent

    Claude Code
    claude mcp add --transport http cotlet \
      https://cotlet.dev/mcp/v1 \
      --header "Authorization: Bearer $COTLET_API_KEY"
    Cursor
    {
      "mcpServers": {
        "cotlet": {
          "url": "https://cotlet.dev/mcp/v1",
          "headers": {
            "Authorization": "Bearer ${COTLET_API_KEY}"
          }
        }
      }
    }
    Codex
    # ~/.codex/config.toml
    [mcp_servers.cotlet]
    url = "https://cotlet.dev/mcp/v1"
    bearer_token_env_var = "COTLET_API_KEY"

    Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

  4. 4

    Ask your agent

    Prompt

    Add the Hendersons from this email as a client at 12 Oak Lane, gate code 1234, and set up weekly mowing on Tuesdays with Crew 2 at $45 a visit, starting next week. Check first that they are not already in Service Autopilot as a lead.

    Ask in plain words. Your agent finds the Service Autopilot tools on the server and calls them for you; anything that reaches other people waits for your OK unless you switch that off for a tool.

Call Service Autopilot over REST

  1. 1

    Export your API key

    Shell

    export COTLET_API_KEY="cotlet_..."

    Your scripts use the same API key as your agent. Keep it in an environment variable, never in your code.

  2. 2

    Call a tool

    curl

    curl https://cotlet.dev/api/v1/service-autopilot/create_job \
      -H "Authorization: Bearer $COTLET_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"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."}'

    Every tool is a POST endpoint at /api/v1/service-autopilot/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

  3. 3

    Read the result

    Example response · create_job

    {
      "job_id": "9827514",
      "client_id": "4410382",
      "service": "Mowing",
      "recurrence": "weekly",
      "next_visit": "2026-10-13",
      "crew": "Crew 2",
      "price": "45.00",
      "status": "scheduled"
    }

    You get plain JSON back, ready for your script. A failed call costs nothing.

Why Cotlet

Why use Cotlet for Service Autopilot? Hosted, safe and kept working.

  • Built for agents

    • One MCP server for every app you connect.
    • The same tools as a REST API for scripts and cron jobs.
    • Works with Claude Code, Codex and Cursor.
  • Your login stays yours

    • You sign in to Service Autopilot yourself. We keep only the session, encrypted with AES-256.
    • The model never sees a login.
    • No stored passwords, no CAPTCHA solving, no MFA bypass.
  • You stay in control

    • Pick read only, or read and write.
    • Anything that reaches other people waits for your OK, unless you switch it off per tool.
    • Revoke access in one click.
  • Kept working for you

    • We test every integration daily.
    • When Service Autopilot changes, the tool pauses until we fix it.
    • Failed calls cost nothing.

Alternatives

Is there a Service Autopilot MCP server on GitHub?

No official or community MCP server exists for Service Autopilot, and its Zapier integration only sends completed jobs out, so Zapier or Make cannot create or change anything in it. Office staff click through the web app and retype jobs and estimates by hand.

Cotlet compared with a By hand (web app)
By hand (web app) Cotlet
Setup None, you already use the web app Request access, sign in to Service Autopilot once in your browser, add one MCP server or API key
Reading your data Open each client, route or invoice screen yourself Your agent searches clients and reads jobs, routes, estimates and invoices
Write actions Click through forms for every job, estimate and invoice Jobs, reschedules, estimates and invoices from one prompt; sends reach clients only after you confirm
When the session expires You log in again Your agent gets a link to sign in again
When Service Autopilot changes You relearn the screens Our team tests it daily and fixes it; failed calls are free
Where it runs Your browser, while you work Hosted: Claude Code, Codex, Cursor, n8n and scripts, also on a schedule
Price Free, paid in office hours Free 7-day trial with 5,000 credits, then credits per call

Which one fits you

Pick Cotlet if

  • you are not a developer, or you do not want to maintain a server
  • you need it to keep working when Service Autopilot changes, without checking it yourself
  • your agent or a script should run it on a schedule, also while your computer is off

Pick an open-source server if

  • you are comfortable installing, updating and fixing it yourself
  • you want the session to stay on your own computer
  • you only need it now and then, from one MCP client

For AI agents

Cotlet for Service Autopilot in plain text The facts on this page in one block: status, endpoints, access, pricing, contact.

Endpoint health

verified 2h ago

  • search_clients passing
  • get_client passing
  • list_jobs passing
  • get_route passing
  • list_estimates passing

+ 9 more endpoints

14/14 passing latest check self-healing

service-autopilot.txt

Service Autopilot has no public API, developer portal or self-service API keys (checked 11 Oct 2026). Data moves through a two-way QuickBooks sync, a few partners the vendor picks, a Zapier trigger that only sends completed jobs out, and manual import and export; the QuickBooks sync needs the Pro or Pro Plus plan.
Cotlet provides a hosted MCP server and REST API for Service Autopilot: 14 tools (6 read, 8 write).
Access       Request access at https://cotlet.dev/app/signup?app=service-autopilot; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/service-autopilot
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        search_clients, get_client, list_jobs, get_route, list_estimates, list_invoices, add_client, create_job, reschedule_job, add_job_note, create_estimate, send_estimate, create_invoice, send_text
Confirm      send_estimate, create_invoice, send_text (by default the user approves each call; the user can switch this off per tool, e.g. for scheduled automations)
Markdown     https://cotlet.dev/integrations/service-autopilot-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=service-autopilot (Service Autopilot is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to Service Autopilot once in a browser. An agent cannot do this step.
3. The API key goes into the MCP client or the REST call as a bearer token.

Fits: people who want a hosted Service Autopilot server that someone else maintains, including non-developers.

Policy: Cotlet never stores passwords, never solves CAPTCHAs, never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Session: the user signs in to Service Autopilot in a browser; Cotlet keeps only the session, AES-256 encrypted, revocable in the dashboard at any time.
Terms: the user stays responsible for following Service Autopilot's terms; Cotlet is not affiliated with Service Autopilot.
Full page as Markdown

Automations

Can Service Autopilot automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a Service Autopilot connection it does not have, with the same API key as your agent. Write actions ask for your OK by default; switch that off in your dashboard for the tools you choose, for example to add a new client and set up recurring mowing, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

Where to run Service Autopilot automations through Cotlet, and how to schedule them
Where How to connect How to schedule
Your AI agent Add https://cotlet.dev/mcp/v1 with your API key. A scheduled agent run, for example a Claude Code routine.
n8n MCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node to https://cotlet.dev/api/v1/service-autopilot/{tool}. Schedule Trigger node.
Make HTTP module: POST https://cotlet.dev/api/v1/service-autopilot/{tool} with an Authorization: Bearer header and a JSON body. Scenario schedule.
Zapier Webhooks by Zapier: POST https://cotlet.dev/api/v1/service-autopilot/{tool} with the same header and body. Schedule by Zapier trigger.
Your own script POST https://cotlet.dev/api/v1/service-autopilot/{tool} with your API key. cron or GitHub Actions.

Pricing & limits

How much does the Service Autopilot API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the Service Autopilot API comes with the Cotlet plan, from $29 a month for 3,000 credits, with no limit on apps. Each month's credits stay valid for 3 months, so unused credits add up.

Cotlet plan sizes: price, monthly credits and price per credit
Size Price Credits / month Per credit
Solo $29/mo 3,000 about $0.0097
Pro $99/mo 12,000 about $0.0083
Agency $299/mo 40,000 $0.0075

Each successful call uses credits for the work it takes; failed calls and timeouts cost nothing. A hard spend cap is on by default. Authenticate with the Authorization: Bearer header.

About Cotlet

How Cotlet holds your access

Cotlet hosts MCP servers and REST APIs for apps with no usable API. Your agent works in your own Service Autopilot account.

Company details
The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. Terms
Your session
You sign in to Service Autopilot yourself, in your browser. We keep only the session, never your password: encrypted with AES-256 in an EU vault, isolated to your account and used only when your agent calls a Service Autopilot tool you allowed. When it expires, your agent gives you a link to sign in again. Security
Revoking access
Disconnect Service Autopilot in your dashboard: the session is deleted and access ends at once. Actions that reach other people wait for your OK unless you switch that off per tool.
What we never do
Store passwords, solve CAPTCHAs or bypass MFA.
Service Autopilot's terms
You use your own Service Autopilot account and stay responsible for following Service Autopilot's terms. Cotlet is independent and not affiliated with Service Autopilot. Terms
Contact
Questions about the company, security or an app: contact@cotlet.dev
About Cotlet

Frequently asked questions

How do I get access?

Request access and pick Service Autopilot. Cotlet reviews each request and emails you your API key.

Do I need to be technical?

No. You sign in to Service Autopilot once in your browser and paste one command into your agent, or one URL into n8n. Your agent can walk you through it. There is no server to install, update or fix.

Is a hosted server safe? My Service Autopilot session would leave my computer.

Cotlet keeps your Service Autopilot session encrypted with AES-256 in an EU vault, isolated to your account and used only for the tools you allow: read only, or read and write. The AI model never sees it, and you revoke it in one click. A local server keeps the same session in a file on your computer, readable by any program you run, and needs a fresh sign-in whenever it expires.

Which Service Autopilot plan do I need?

Cotlet works in your own office account, so it needs no API plan. Some features follow your plan: the vendor lists estimates and proposals on Pro, and Two-Way Texting is a paid add-on for Pro and Pro Plus members and included in Elite, so send_estimate and send_text work only where your account has them.

Can my agent post or send messages in Service Autopilot without asking me?

No. Every call to send_estimate, create_invoice or send_text waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals. add_client, create_job, reschedule_job, add_job_note, create_estimate runs without asking, because it sends nothing to anyone and one call undoes it.

Can I use the Service Autopilot API in n8n?

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call https://cotlet.dev/api/v1/service-autopilot/{tool} from the HTTP Request node.

Give your agent access to Service Autopilot.

Request access and pick it. We review each request and email you your API key. Free 7-day trial with 5,000 credits, no card needed.