---
title: "ServiceTitan MCP server for AI agents - actionlake"
description: "Give Claude 591 ServiceTitan actions through one MCP server: CRM, accounting, JPM, inventory. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/servicetitan
updated: 2026-10-22
---

Connectors · Accounting & finance

# ServiceTitan MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to ServiceTitan and the rest of your systems. It gives your agent 591 ServiceTitan actions (331 reads, 218 writes and 42 that wait for a confirmation) and holds the ServiceTitan credential itself, so the agent never does. It paces ServiceTitan's limits and records every call.

[Connect ServiceTitan free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

`claude mcp add --transport http actionlake https://connect.actionlake.com/mcp`

the first call

```
do {
  action: "servicetitan.invoices.list",
  intent: "check which ServiceTitan account is connected"
}
# Retrieves a list of invoices. By default, all invoices will be returned regardless of status. · read · 1 upstream call
```

- 591 actions in one signed file
- 331 read look, never change
- 218 write create and update
- 42 wait for a yes destructive, confirmed first

Set up

## Connect ServiceTitan in three steps.

1. 01
   ### Add actionlake to Claude.
   Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
   `https://connect.actionlake.com/mcp`
2. 02
   ### Connect ServiceTitan.
   OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in. actionlake stores what you paste write-only, sealed under your tenant's key.
   - `client_id` ServiceTitan client ID: in ServiceTitan go to Settings > Integrations > API Application Access, connect your…
   - `client_secret` ServiceTitan client secret (shown once when generated for the tenant)
   - `app_key` Your ServiceTitan app key
   - `tenant_id` Your ServiceTitan tenant id
   ```
   account { op: "connections.requirements", service: "servicetitan" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "servicetitan.invoices.list" }
   # retrieves a list of invoices. by default, all invoices will be returned regardless of status. · read · 1 upstream call
   check { action: "servicetitan.invoices.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

ServiceTitan at a glance

**Sign-in**

OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in.

**You provide**

`client_id` `client_secret`

**Setup fields**

`app_key` `tenant_id`

**Limits we pace to**

60 calls a second, per connection

**API covered**

ServiceTitan (field service management: CRM, jobs, dispatch, pricebook, accounting, payroll) API ServiceTitan v2 tenant APIs (25 module OpenAPI 3.1 documents, 602 operations)`api.servicetitan.io`

**Built from**

ServiceTitan's documentation, read 22 October 2026[developer.servicetitan.io](https://developer.servicetitan.io/api/docs/apis/tenant-accounting-v2) [developer.servicetitan.io](https://developer.servicetitan.io/api/docs/apis/tenant-crm-v2) [developer.servicetitan.io](https://developer.servicetitan.io/api/docs/apis/tenant-customer-interactions-v2)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

331 of 331 reads, for up to 5 minutes; a write clears what it affects

**Shared entities**

17, so ask can line ServiceTitan up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in ServiceTitan.

591 actions in 25 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

- **331** read look, never change
- **218** write create and update
- **42** destructive wait for a confirmation

1. ### CRM
   86
   40 read · 35 write · 11 destructive
   Gets a list of contacts · Gets a list of Customers · Gets a list of locations · Gets a list of leads
2. ### Accounting
   76
   43 read · 31 write · 2 destructive
   Retrieves a list of invoices. By default, all invoices will be returned regardless of status. · Gets a paginated list of payments · create adjustment invoice · update invoice
3. ### JPM
   75
   45 read · 24 write · 6 destructive
   Gets a list of projects · Gets a list of jobs · Creates a New Project · Gets a list of appointments
4. ### Inventory
   53
   22 read · 30 write · 1 destructive
   Get a list of purchase orders · Create a new purchase order · Get purchase order by Id · Get a list of vendors
5. ### Dispatch
   41
   17 read · 18 write · 6 destructive
   Assigns the list of technicians to the appointment · Gets a list of appointment assignments · Unassigns the list of technicians from the appointment · ArrivalWindows Create
6. ### Payroll
   38
   28 read · 8 write · 2 destructive
   Gets a list of payroll activity codes · Gets a list of employee payrolls · Provides export feed for activity codes · Provides export feed for gross pay items
7. ### Pricebook
   38
   18 read · 15 write · 5 destructive
   ClientSpecificPricing GetAllRateSheets · Post to add a new discount or fee to your pricebook · Get data on all of the discounts or fees in the pricebook. Supports optional search filtering. · Post to add new equipment to your pricebook
8. ### Memberships
   30
   23 read · 7 write · 0 destructive
   Provides export feed for invoice templates · Provides export feed for customer membership status changes · Provides export feed for membership types · Provides export feed for customer memberships

**17 more areas · 154 actions**

- Sales **25**
- Settings **22**
- Equipment systems **19**
- Marketing **16**
- Timesheets **12**
- Findings **10**
- Reporting **8**
- Telecom **8**
- Marketing ads **7**
- Scheduling pro **5**
- Task management **5**
- Customer interactions **4**
- Forms **4**
- Service agreements **4**
- Fleet pro **3**
- Job booking **1**
- Marketing reputation **1**

Top actions

## The ServiceTitan API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 90 of ServiceTitan's 90 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `servicetitan.invoices.list` Retrieves a list of invoices. By default, all invoices will be returned regardless of status. | Retrieves a list of invoices. By default, all invoices will be returned regardless of status. | read | `finance.invoice.list` 101 connectors |
| `servicetitan.payments.list` Gets a paginated list of payments | Gets a paginated list of payments. | read | `finance.payment.list` 75 connectors |
| `servicetitan.estimates.list` Estimates GetList | Estimates GetList. | read | `finance.quote.list` 52 connectors |
| `servicetitan.purchase_orders.list` Get a list of purchase orders | Get a list of purchase orders. | read | `finance.purchase_order.list` 45 connectors |
| `servicetitan.contacts.list` Gets a list of contacts | Gets a list of contacts. | read | `crm.contact.list` 177 connectors |
| `servicetitan.customers.list` Gets a list of Customers | Gets a list of Customers. | read | `crm.company.list` 162 connectors |
| `servicetitan.technicians.list` Gets a list of technicians | Gets a list of technicians. | read | `identity.user.list` 474 connectors |
| `servicetitan.locations.list` Gets a list of locations | Gets a list of locations. | read | `crm.location.list` 48 connectors |
| `servicetitan.invoices.create` create adjustment invoice | create adjustment invoice. | write | `finance.invoice.create` 74 connectors |
| `servicetitan.estimates.create` Estimates Create | Estimates Create. | write | `finance.quote.create` 52 connectors |
| `servicetitan.purchase_orders.create` Create a new purchase order | Create a new purchase order. | write | `finance.purchase_order.create` 43 connectors |
| `servicetitan.contacts.delete` Deletes a contact | Deletes a contact. | destructive | `crm.contact.delete` 147 connectors |

Try it

## Prompts to paste into Claude.

Each one names the ServiceTitan actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Which ServiceTitan invoices are more than 30 days overdue? Group them by customer with the total owed.
   calls `servicetitan.invoices.list`
2. Write write
   create adjustment invoice in ServiceTitan. Show me exactly what you will send before you save it.
   calls `servicetitan.invoices.create`
3. Across systems read
   For each customer, how many invoices are in ServiceTitan and how many tickets in ConnectWise PSA?
   calls `servicetitan.invoices.list` `connectwise_manage.tickets.list`

Across your systems

## ServiceTitan, joined to the rest of your business.

One `ask` fetches from ServiceTitan and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.

- For each customer, how many invoices are in ServiceTitan and how many tickets in ConnectWise PSA?
  `servicetitan.invoices.list` + `connectwise_manage.tickets.list`, on `crm.company` · [ConnectWise PSA](https://actionlake.com/connectors/connectwise-psa)
- For each customer, how many invoices are in ServiceTitan and how many tickets in HubSpot CRM?
  `servicetitan.invoices.list` + `hubspot_crm.tickets.list`, on `crm.company` · [HubSpot CRM](https://actionlake.com/connectors/hubspot-crm)

Also mapped by other connectors `identity.user` **517** `crm.company` **227** `crm.contact` **192** `work.project` **116** `work.task` **105** `finance.invoice` **91** `hr.employee` **63** `service.ticket` **62**

ask

```
ask {
  intent: "for each customer, how many invoices are in ServiceTitan and how many tickets in ConnectWise PSA",
  steps: [
    { action: "servicetitan.invoices.list", as: "inv", input: {}, limit: 100, max_pages: 5 },
    { action: "connectwise_manage.tickets.list", as: "tix", input: {}, limit: 100, max_pages: 5 },
    { join: {
        left: "inv",
        right: "tix",
        on: "crm.company",
        group_by: "inv.company_name",
        select: ["inv.company_name", "count(inv.id) as invoices", "count(tix.id) as tickets"]
    } }
  ]
}
```

Example. Run it through check first: it validates the steps and prices them, and it is free.

Governance for ServiceTitan

## Destructive actions wait for a yes.

42 ServiceTitan actions are destructive. The first 10:

- Deletes a contact `servicetitan.contacts.delete`
- Deletes journal entry, supports only for external journal entry records. `servicetitan.journal_entries.delete`
- Deletes appointment with specified id. `servicetitan.appointments.delete`
- Deletes the specified activity `servicetitan.activities.delete`
- Remove multiple tags to more than 1 customer `servicetitan.tags.delete`
- Delete team `servicetitan.teams.delete`
- Deletes a zone `servicetitan.zones.delete`
- Deletes a service from your pricebook `servicetitan.services.delete`
- Deletes equipment from your pricebook `servicetitan.equipment.delete`
- Deletes a material from your pricebook `servicetitan.materials.delete`

A destructive action runs only with `confirm: true`. Under the `human` policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

do servicetitan.contacts.delete confirm_policy: **human**

Deletes a contact?

**intent:** the user asked me to deletes a contact

run suspended · waiting for a named person · key _servicetitan-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "servicetitan-agent",
  allowed_actions: ["servicetitan.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "servicetitan.contacts.delete", approver: "lead@example.com" },
    { match: "servicetitan.journal_entries.delete", approver: "lead@example.com" },
    { match: "servicetitan.appointments.delete", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to ServiceTitan only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What ServiceTitan costs on actionlake.

Every ServiceTitan action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call ServiceTitan refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

- 1 upstream call per action all 591 ServiceTitan actions
- 591 actions page each page of a long list is one call
- 331 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every ServiceTitan action.

591 actions by area: the id your agent calls, what it does, and its effect.

**CRM 86**

- `servicetitan.contacts.list` Gets a list of contacts read
- `servicetitan.customers.list` Gets a list of Customers read
- `servicetitan.leads.list` Gets a list of leads read
- `servicetitan.locations.list` Gets a list of locations read
- `servicetitan.booking_provider_bookings.create` Creates a booking for a booking provider write
- `servicetitan.booking_provider_bookings.dismiss` Bookings DismissBooking write
- and 80 more in this area

**Accounting 76**

- `servicetitan.invoices.create` create adjustment invoice write
- `servicetitan.invoices.list` Retrieves a list of invoices. By default, all invoices will be returned regardless of status. read
- `servicetitan.invoices.update` update invoice write
- `servicetitan.payments.list` Gets a paginated list of payments read
- `servicetitan.ap_bills.get` Returns a single AP bill by its unique identifier with complete details including items, expense items, and associated metadata read
- `servicetitan.ap_bills.list` Returns a paginated list of AP bills with detailed item information, filtering capabilities, and associated metadata read
- and 70 more in this area

**JPM 75**

- `servicetitan.appointments.list` Gets a list of appointments read
- `servicetitan.jobs.list` Gets a list of jobs read
- `servicetitan.projects.create` Creates a New Project write
- `servicetitan.projects.list` Gets a list of projects read
- `servicetitan.appointments.create` Adds a new appointment to an existing job write
- `servicetitan.appointments.delete` Deletes appointment with specified id. destructive
- and 69 more in this area

**Inventory 53**

- `servicetitan.purchase_orders.create` Create a new purchase order write
- `servicetitan.purchase_orders.get` Get purchase order by Id read
- `servicetitan.purchase_orders.list` Get a list of purchase orders read
- `servicetitan.vendors.list` Get a list of vendors read
- `servicetitan.adjustments.create` Create a new adjustment write
- `servicetitan.adjustments.list` Get a list of inventory adjustments read
- and 47 more in this area

**Dispatch 41**

- `servicetitan.appointment_assignments.assign_technicians` Assigns the list of technicians to the appointment write
- `servicetitan.appointment_assignments.list` Gets a list of appointment assignments read
- `servicetitan.appointment_assignments.unassign_technicians` Unassigns the list of technicians from the appointment write
- `servicetitan.arrival_windows.create` ArrivalWindows Create write
- `servicetitan.arrival_windows.activated` ArrivalWindows Activated write
- `servicetitan.arrival_windows.get` ArrivalWindows Get read
- and 35 more in this area

**Payroll 38**

- `servicetitan.activity_codes.list` Gets a list of payroll activity codes read
- `servicetitan.employees_payrolls.list` Gets a list of employee payrolls read
- `servicetitan.export_activity_codes.list` Provides export feed for activity codes read
- `servicetitan.export_gross_pay_items.list` Provides export feed for gross pay items read
- `servicetitan.activity_codes.get` Gets payroll activity code specified by ID read
- `servicetitan.employees_payroll_settings.get` Gets the employee payroll settings read
- and 32 more in this area

**Pricebook 38**

- `servicetitan.clientspecificpricing.list` ClientSpecificPricing GetAllRateSheets read
- `servicetitan.discounts_and_fees.create` Post to add a new discount or fee to your pricebook write
- `servicetitan.discounts_and_fees.list` Get data on all of the discounts or fees in the pricebook. Supports optional search filtering. read
- `servicetitan.equipment.create` Post to add new equipment to your pricebook write
- `servicetitan.clientspecificpricing.update` ClientSpecificPricing UpdateRateSheet write
- `servicetitan.discounts_and_fees.delete` Deletes a discount or fee from your pricebook destructive
- and 32 more in this area

**Memberships 30**

- `servicetitan.export_invoice_templates.list` Provides export feed for invoice templates read
- `servicetitan.export_membership_status_changes.list` Provides export feed for customer membership status changes read
- `servicetitan.export_membership_types.list` Provides export feed for membership types read
- `servicetitan.export_memberships.list` Provides export feed for customer memberships read
- `servicetitan.export_recurring_service_events.list` Provides export feed for recurring service events read
- `servicetitan.export_recurring_service_types.list` Provides export feed for recurring service types read
- and 24 more in this area

**Sales 25**

- `servicetitan.estimates.create` Estimates Create write
- `servicetitan.estimates.get` Estimates Get read
- `servicetitan.estimates.list` Estimates GetList read
- `servicetitan.estimates.update` Estimates Update write
- `servicetitan.contracts.list` Gets contracts owned by a job with their current statuses. read
- `servicetitan.estimate_templates.create` Creates a new estimate template. write
- and 19 more in this area

**Settings 22**

- `servicetitan.employees.list` Gets a list of employees read
- `servicetitan.technicians.create` Creates new technician write
- `servicetitan.technicians.get` Gets a technician by ID read
- `servicetitan.technicians.list` Gets a list of technicians read
- `servicetitan.business_units.get` Gets a business unit by ID read
- `servicetitan.business_units.list` Gets a list of business units read
- and 16 more in this area

**Equipment systems 19**

- `servicetitan.installed_equipment.create` InstalledEquipment Create write
- `servicetitan.installed_equipment.get` InstalledEquipment Get read
- `servicetitan.installed_equipment.list` InstalledEquipment GetList read
- `servicetitan.installed_equipment.update` InstalledEquipment Update write
- `servicetitan.equipment_systems.create` Creates a new equipment system write
- `servicetitan.equipment_systems.delete` Deletes an equipment system specified by ID destructive
- and 13 more in this area

**Marketing 16**

- `servicetitan.campaigns.create` Creates new campaign write
- `servicetitan.campaigns.list` Gets a paginated list of campaigns read
- `servicetitan.campaigns_costs.list` Gets a paginated list of campaign costs read
- `servicetitan.costs.create` Creates new campaign cost write
- `servicetitan.costs.list` Gets a paginated list of campaign costs read
- `servicetitan.campaign_cost_summary.get` CampaignCostSummary Get read
- and 10 more in this area

**Timesheets 12**

- `servicetitan.activities.create` Creates new activity write
- `servicetitan.activities.get` Gets activity specified by ID read
- `servicetitan.activities.list` Gets a list of activities read
- `servicetitan.activities.update` Updates the specified activity write
- `servicetitan.activities.delete` Deletes the specified activity destructive
- `servicetitan.activity_categories.get` Gets activity category specified by ID read
- and 6 more in this area

**Findings 10**

- `servicetitan.location_findings.create` Creates a new finding to document an issue or observation at a customer location write
- `servicetitan.location_findings.list` Gets a list of findings read
- `servicetitan.location_findings_attachments.create` Creates a new attachment for a finding write
- `servicetitan.location_findings_attachments.list` Gets a paginated list of attachments for a finding read
- `servicetitan.finding_assets.get` Downloads an asset by path. Redirects to a temporary download URL read
- `servicetitan.location_findings.get` Gets finding specified by ID read
- and 4 more in this area

**Reporting 8**

- `servicetitan.report_categories.list` List categories for existing reports read
- `servicetitan.report_category_reports.get_data` Get report data. The result is based on current report description which isn't constant in general. Beware that report columns may be changed. Result field nam… read
- `servicetitan.report_category_reports.list` List reports within given category read
- `servicetitan.report_category_reports_data.start_query` Start a long-running report data query. Returns 200 with the report payload streamed straight from the result blob if the query completes within the inline tim… read
- `servicetitan.data_queries.delete` Cancel a long-running report data query. The associated background task (if any) is signalled to stop and the token is released, freeing the per-tenant slot. A… destructive
- `servicetitan.data_queries.get` Poll the result of a long-running report data query. On Success, the gzipped JSON blob is streamed directly to the client (gzip pass-through when the client ac… read
- and 2 more in this area

**Telecom 8**

- `servicetitan.calls.get` Get call's details. read
- `servicetitan.calls.list` Provides a feed for telecom calls read
- `servicetitan.calls.list_v2` Get filtered calls. read
- `servicetitan.calls.update` Update existing call. write
- `servicetitan.export_calls.list` Provides export feed for telecom calls read
- `servicetitan.optinouts_optouts.create` Adds opt-outs for the specified phone numbers write
- and 2 more in this area

**Marketing ads 7**

- `servicetitan.attributed_leads.list` Returns attributed leads data. read
- `servicetitan.capacity_warnings.list` Returns all capacity awareness warnings. read
- `servicetitan.external_call_attributions.create` Attributes an external call (possibly coming from Call Tracking Software) to a web session. write
- `servicetitan.job_attributions.create` Attributes a job to a web session. write
- `servicetitan.performance.list` Returns performance data. read
- `servicetitan.web_booking_attributions.create` Attributes a web booking to a web session. write
- and 1 more in this area

**Scheduling pro 5**

- `servicetitan.routers_performance.get` Provides performance data for router read
- `servicetitan.routers_sessions.list` Gets a paginated list of sessions for router read
- `servicetitan.schedulers.list` Gets a list of schedulers read
- `servicetitan.schedulers_sessions.list` Gets a paginated list of sessions for scheduler read
- `servicetitan.schedulers_performance.get` Provides performance data for scheduler read

**Task management 5**

- `servicetitan.tasks.create` Tasks Create write
- `servicetitan.tasks.get` Get a Task by Id read
- `servicetitan.tasks.list` Get a list of tasks read
- `servicetitan.tasks.subtasks` Tasks CreateSubtask write
- `servicetitan.task_management_data.get` ClientSideData Get read

**Customer interactions 4**

- `servicetitan.export_technician_ratings.list` Provides export feed for technician ratings read
- `servicetitan.technician_rating_technician_job.update` Add a rating for the specified technician, tied to the specific job. If the rating already exists for that technician/ job combination, update it with the new… write
- `servicetitan.technician_ratings.create` Add a rating for the specified technician, tied to the specific job. If the rating already exists for that technician/ job combination, update it with the new… write
- `servicetitan.technician_ratings.list` Gets a list of technician ratings read

**Forms 4**

- `servicetitan.forms.list` Retrieve Form data read
- `servicetitan.jobs_attachments.delete` Deletes a specified job attachment. destructive
- `servicetitan.jobs_attachments.get` Gets Attachments on the specified Job read
- `servicetitan.submissions.list` Retrieve Form Submission Data read

**Service agreements 4**

- `servicetitan.export_service_agreements.list` Provides export feed for service agreements read
- `servicetitan.service_agreements.get` Gets service agreement specified by ID read
- `servicetitan.service_agreements.list` Gets a list of service agreements read
- `servicetitan.service_agreements_custom_fields.list` Gets a list of custom field types for service agreements read

**Fleet pro 3**

- `servicetitan.fleet_pro_events.query` Retrieves paginated Event data specifically for historical records older than 7 days. read
- `servicetitan.fleet_pro_gps.query` Retrieves paginated GPS data specifically for historical records older than 7 days. read
- `servicetitan.vehicles.list` Retrieves a list of all FleetPro vehicles for the current tenant. read

**Job booking 1**

- `servicetitan.call_reasons.list` Gets a list of call reasons read

**Marketing reputation 1**

- `servicetitan.reviews.list` reviews read

This index shows a sample of each area. All 591 actions, with their inputs and prices, are in the [catalogue](https://actionlake.com/console/catalogue), which a free sandbox key can search.

Questions

## The ServiceTitan MCP server, answered.

**Is there a ServiceTitan MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 591 ServiceTitan actions across CRM, accounting, JPM and inventory, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by ServiceTitan.

**What do I need to connect ServiceTitan?**

ServiceTitan client ID: in ServiceTitan go to Settings > Integrations > API Application Access, connect your… and ServiceTitan client secret (shown once when generated for the tenant). Plus your app key and your tenant id. The free call account { op: "connections.requirements", service: "servicetitan" } lists exactly what to paste.

**Can an AI agent delete or change things in ServiceTitan?**

Only if its key allows it, and only with an explicit confirmation. 42 ServiceTitan actions are destructive, including deletes a contact, deletes journal entry, supports only for external journal entry records. and deletes appointment with specified id.. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

**Will an AI agent use up my ServiceTitan API limit?**

actionlake paces every call to the limits in the ServiceTitan service file: 60 calls a second per connection. Repeated reads are answered from cache (331 ServiceTitan actions can be), which never reaches ServiceTitan.

**What does a ServiceTitan action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (591 ServiceTitan actions page). Cache hits, searches, dry runs and calls ServiceTitan refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

**Which ServiceTitan API does it cover?**

The ServiceTitan (field service management: CRM, jobs, dispatch, pricebook, accounting, payroll) API ServiceTitan v2 tenant APIs (25 module OpenAPI 3.1 documents, 602 operations) at api.servicetitan.io. It is built from ServiceTitan's documentation as read on 22 October 2026. 591 actions in 25 areas, each one in the signed service file (version 1.0.0).

**Can I combine ServiceTitan with my other systems?**

Yes. ask joins ServiceTitan to ConnectWise PSA or HubSpot CRM on the same customer and returns the answer rather than every row. ServiceTitan maps crm.company, which 227 other connectors also map.

**Does actionlake keep my ServiceTitan data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your ServiceTitan credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

**Which AI clients can use it?**

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

## More connectors like ServiceTitan

Shares the most action names with

- [ERPNext (Frappe) 65](https://actionlake.com/connectors/erpnext-frappe)
- [Simpro 45](https://actionlake.com/connectors/simpro)
- [Moneybird 41](https://actionlake.com/connectors/moneybird)
- [Exact Online 41](https://actionlake.com/connectors/exact-online)
- [Epicor Kinetic 38](https://actionlake.com/connectors/epicor-kinetic)
- [Harvest 35](https://actionlake.com/connectors/harvest)

Joins with, on shared entities

- [HaloPSA 12](https://actionlake.com/connectors/halopsa)
- [Zuper 11](https://actionlake.com/connectors/zuper)
- [ScalePad 10](https://actionlake.com/connectors/scalepad)
- [Syncro 10](https://actionlake.com/connectors/syncro)
- [RepairShopr 10](https://actionlake.com/connectors/repairshopr)
- [Microsoft Dynamics 365 9](https://actionlake.com/connectors/microsoft-dynamics-365)

Browse

- [All Accounting & finance connectors](https://actionlake.com/connectors/category/accounting-and-finance)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by ServiceTitan; the name is the vendor's own. Counts are from the ServiceTitan service file, version 1.0.0.

## Give your agent ServiceTitan today.

[Connect ServiceTitan free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/servicetitan
More: https://actionlake.com/llms.txt
