Connect Claude to ServiceTitan via API. 60 tools covering CRM, Jobs, Accounting, Estimates, Dispatch, Pricebook, Inventory, Memberships, Payroll, Marketing, Reporting, Timesheets, Telecom, and more.
Built for any ServiceTitan customer — each tenant manages its own credentials independently.
# Clone and install
git clone https://github.com/glassdoc/servicetitan-mcp.git
cd servicetitan-mcp
pip install -e .Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, or %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"servicetitan": {
"command": "python",
"args": ["-m", "servicetitan_mcp.server"],
"env": {
"ST_APP_KEY": "your-app-key",
"ST_CLIENT_ID": "cid.your-client-id",
"ST_CLIENT_SECRET": "cs1.your-client-secret",
"ST_TENANT_ID": "your-tenant-id"
}
}
}
}For multiple tenants, add separate server entries (see claude_desktop_config_example.json).
- Go to Settings > Integrations > API Application Access in your ServiceTitan tenant
- Find the Claude MCP Integration app and click Connect
- Fill in the restriction fields (booking_provider, gps_provider, report_category)
- Accept Terms and Conditions
- Copy your Client ID and generate a Client Secret
- Your Tenant ID is shown in the top-right corner of any ServiceTitan page
- The App Key is:
wj8g1SurukhS4
list_customers— Search and list customersget_customer— Get customer details by IDlist_locations— List service locationsget_location— Get location detailslist_leads— List leads/opportunitieslist_bookings— List bookingslist_contacts— List customer contacts
list_jobs— List jobs with filters (status, customer, date range)get_job— Get full job detailslist_appointments— List appointments by date rangelist_job_types— List configured job typeslist_projects— List projectsget_project— Get project details
list_invoices— List invoices (filter by job, customer, date)get_invoice— Get invoice with line itemslist_payments— List payments receivedlist_payment_types— List payment typeslist_inventory_bills— List AP/inventory billslist_journal_entries— List journal entrieslist_payment_terms— List payment termslist_tax_zones— List tax zones
list_estimates— List estimates (filter by job, status, sold date)get_estimate— Get estimate with line items
list_appointment_assignments— Technician-to-appointment assignmentslist_technician_shifts— Shift scheduleslist_zones— Dispatch zoneslist_non_job_appointments— Meetings, training, etc.
list_pricebook_services— Sellable serviceslist_pricebook_materials— Materialslist_pricebook_equipment— Equipmentlist_pricebook_categories— Categories
list_purchase_orders— Purchase orderslist_warehouses— Warehouseslist_inventory_vendors— Vendors/supplierslist_trucks— Vehicle inventory
list_memberships— Customer membershipslist_membership_types— Membership type definitionslist_recurring_services— Recurring services
list_employees— Employeesget_employee— Employee detailslist_technicians— Technicianslist_business_units— Business unitslist_tag_types— Tag typeslist_user_roles— User roles
list_report_categories— Report categorieslist_reports_in_category— Reports in a categoryrun_report— Run a dynamic report
list_payrolls— Payroll runslist_employee_payrolls— Employee payroll detailslist_gross_pay_items— Gross pay line items
list_calls— Phone calls
list_forms— Form templateslist_form_submissions— Submitted forms
list_campaigns— Marketing campaignslist_campaign_costs— Campaign costs
list_installed_equipment— Installed equipment at locationslist_tasks— Task management taskslist_activities— Timesheet activitieslist_activity_categories— Activity categories
servicetitan_api_call— Make any arbitrary API call (GET/POST/PATCH/PUT)
Uses OAuth 2.0 Client Credentials flow. Tokens auto-refresh every 15 minutes. No user interaction required.
- Regular APIs: 60 calls/second per app per tenant
- Reporting APIs: 5 requests/minute per report per tenant
MIT