# ServiceTitan MCP

> ServiceTitan connects your AI agent directly to field service operations. You manage customers, jobs, appointments, and inventory without leaving your chat window. Use it to list customer records, dispatch jobs, update appointment status, or record payments instantly.

## Overview
- **Category:** erp-operations
- **Price:** Free
- **Tags:** field-service-management, dispatch, hvac-software, plumbing-software, inventory-tracking

## Description

Connect your **ServiceTitan** account to any AI agent and ditch the switching screens. This server lets your agent talk straight to your core field service operations data. You manage customers, jobs, appointments, and inventory—all from your chat window.

### Managing Customer Records & Locations
You can check out a list of every existing customer using `list_customers`. If you're dealing with someone brand new, don't sweat it; you can whip up a whole new profile instantly with `create_customer`, just by feeding in the basic details. You also need to know where your crews are working—you can pull a list of every physical job site or office location tracked in ServiceTitan using `list_locations`.

### Handling Jobs and Appointments
When you need an update on work, you've got `list_jobs`. This tool pulls detailed info on every active job, giving you the full picture of what your team is doing. For appointments, keeping things straight is key; run `update_appointment` to change a scheduled appointment’s status—whether it's 'Completed,' 'Rescheduled,' or something else—keeping your field crew in sync right away.

### Billing and Accounting Control
Don't let money get messy. You can retrieve a list of outstanding invoices using `list_invoices`, so you know exactly what balances are owed. Need to record cash? Use `create_payment` to log a payment against an existing invoice directly in the chat, bypassing manual entry.

### Keeping Inventory Tight
Stock control is crucial out here. You can see every single SKU code and its description by calling `list_skus`. If you use up some materials or get a new shipment, you update the books with `create_inventory_adjustment` to record changes to stock levels for specific inventory items.

## Tools

### create_inventory_adjustment
Records changes to stock levels for specific inventory items (SKUs).

### create_customer
Creates a new customer profile in ServiceTitan using basic details.

### create_payment
Records a payment against an existing invoice in the accounting module.

### list_customers
Retrieves a list of all existing customers within your account.

### list_invoices
Retrieves a list of invoices, allowing you to check outstanding balances.

### list_jobs
Gets detailed information on active and past jobs dispatched through the system.

### list_locations
Lists all physical job sites or office locations tracked in ServiceTitan.

### list_skus
Shows a list of all current inventory item codes and descriptions.

### update_appointment
Changes the status of a scheduled appointment, keeping your team's schedule accurate.

## Prompt Examples

**Prompt:** 
```
List all customers in our ServiceTitan account.
```

**Response:** 
```
I've retrieved the customer list. You have several active records, including 'John Doe' (ID: 4567) and 'Jane Smith' (ID: 8901). Would you like to see more details for a specific customer?
```

**Prompt:** 
```
Update appointment ID 98765 to status 'Completed'.
```

**Response:** 
```
The appointment 98765 has been successfully updated to 'Completed' in the Dispatch module.
```

**Prompt:** 
```
Show me the current inventory SKUs.
```

**Response:** 
```
Fetching inventory... I found several items including 'Copper Pipe 1/2 inch' (SKU: CP-12) and 'Thermostat Model X' (SKU: TH-X). Do you need to adjust stock levels for any of these?
```

## Capabilities

### Manage Customer Records
List existing customers in ServiceTitan, or create a new one if you don't have their information.

### Dispatch and View Jobs
Retrieve full details for active jobs and track job dispatch status within the system.

### Update Service Appointments
Change an appointment's status (e.g., 'Completed,' 'Rescheduled') instantly, keeping your field team in sync.

### Handle Payments and Invoicing
List outstanding invoices or record a payment against an invoice directly through the chat interface.

### Control Inventory Stock
See what SKUs you have on hand, and make inventory adjustments when stock levels need correcting.

## Use Cases

### The Billing Problem
An accounting specialist needs to confirm if a client paid last week's bill. Instead of logging into ServiceTitan and navigating the billing module, they ask their agent: 'What payments are recorded for invoice ID 1234?' The agent runs `list_invoices` and `create_payment`, confirming the payment amount immediately.

### The Dispatch Check
An operations manager needs to know which crews were scheduled yesterday. They simply ask, 'Show me all jobs dispatched for the North End yesterday.' The agent runs `list_jobs`, giving them a consolidated list without opening the main dispatch board.

### The Missing Stock Count
A field tech finishes a job and realizes they used too many fittings. Instead of writing a ticket to inventory, they tell their agent: 'Adjust stock for fitting XYZ by -5.' The agent runs `create_inventory_adjustment`, keeping the count accurate on the fly.

### The New Client Setup
A sales rep closes a deal with a new client. Instead of manually entering data into multiple screens, they ask their agent to 'Add Mr. Smith as a customer.' The agent runs `create_customer` and logs the record instantly.

## Benefits

- **Dispatching is instant:** Use `list_jobs` to get an overview of all current job status. You don't have to click into the dispatch board; you just ask for the list, and it shows up.
- **Never lose track of money:** Need to record a payment? Running `create_payment` lets you attach funds directly to an invoice without ever leaving your AI agent window.
- **Fast Customer Lookup:** Start with `list_customers`. You can verify if John Doe exists in the system, or use `create_customer` if he's brand new. It keeps everything centralized.
- **Keep Inventory Accurate:** When a technician uses parts, running `create_inventory_adjustment` immediately updates stock levels. No more guessing how many copper pipes you actually have.
- **Real-time Scheduling:** Updating an appointment status with `update_appointment` ensures your team sees the change right away. It keeps field operations running without manual email updates.

## How It Works

The bottom line is, your agent handles the API calls. You just ask questions in plain English, and it does the heavy lifting across ServiceTitan's modules.

1. Subscribe to the ServiceTitan server. You'll enter your specific Client ID, Client Secret, and Tenant ID.
2. Your AI client authenticates with Vinkius and connects to the service via MCP.
3. You talk to your agent: 'List all jobs for John Doe.' The agent runs the necessary tools and provides you with the data.

## Frequently Asked Questions

**How do I use ServiceTitan MCP Server to see all my clients?**
You run `list_customers`. This tool retrieves a list of every customer record in your account. You can then ask for specific details on any ID listed.

**What if I need to track parts used during a job with ServiceTitan MCP Server?**
You use the inventory tools. First, run `list_skus` to see what you have. Then, run `create_inventory_adjustment` to subtract the parts that were used for the job.

**Can I update an appointment status using ServiceTitan MCP Server?**
Yes. Use the `update_appointment` tool and provide the specific ID and the new status (e.g., 'Completed' or 'Rescheduled'). The change is reflected in your system instantly.

**Does ServiceTitan MCP Server handle billing disputes?**
It helps by letting you check records. You can use `list_invoices` to view outstanding bills, and if a payment came in, you run `create_payment` to apply it.

**What credentials do I need to successfully use `list_customers` with ServiceTitan MCP Server?**
You must provide your ServiceTitan Client ID, Secret, and Tenant ID. These are standard developer credentials found in the ServiceTitan portal. Once you input these details, your AI client handles the secure connection flow automatically.

**How do I use `list_jobs` to retrieve historical job records from ServiceTitan?**
The `list_jobs` tool retrieves detailed job history, not just currently active dispatches. You can specify filtering parameters like date ranges or status types when making your request. This gives you a full audit trail of past work orders.

**If I attempt to `create_payment` and it fails, what information does ServiceTitan MCP Server provide?**
The API response includes specific error codes and messages detailing why the transaction failed. For example, if the account is flagged or funds are insufficient, you receive an immediate status code explaining the exact issue.

**Can I use `list_skus` to check inventory across multiple physical locations?**
Yes, the tool supports filtering by a list of location IDs. You provide several site identifiers, and it compiles all available SKUs from those specific sites into one comprehensive report for your agent.

**Can I update the status of an existing appointment directly?**
Yes. Use the `update_appointment` tool by providing the appointment ID and the new status payload. This will immediately reflect in the ServiceTitan Dispatch module.

**How do I check current inventory levels for specific parts?**
You can use the `list_skus` tool to retrieve a list of all inventory items and their current details from the Inventory module.

**Is it possible to record a new payment for a customer invoice?**
Absolutely. The `create_payment` tool allows you to record payment data directly into the Accounting module for any valid invoice.