ServiceTitan MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ST_APP_KEY | Yes | The App Key for ServiceTitan API. Provided as 'wj8g1SurukhS4'. | |
| ST_CLIENT_ID | Yes | Your ServiceTitan API client ID (e.g., 'cid.your-client-id') | |
| ST_TENANT_ID | Yes | Your ServiceTitan tenant ID (shown in the top-right corner of any ServiceTitan page) | |
| ST_CLIENT_SECRET | Yes | Your ServiceTitan API client secret (e.g., 'cs1.your-client-secret') |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_customersC | List customers. Optionally filter by name or active status. |
| get_customerC | Get a single customer by ID. |
| list_locationsC | List service locations. Optionally filter by customer. |
| get_locationB | Get a single service location by ID. |
| list_leadsC | List leads/opportunities. Optionally filter by status. |
| list_bookingsC | List bookings. Optionally filter by status (Pending, Scheduled, etc.). |
| list_contactsC | List customer contacts. Optionally filter by customer ID. |
| list_jobsC | List jobs. Filter by status, customer, or date range. status examples: Scheduled, InProgress, Completed, Canceled Date format: YYYY-MM-DD |
| get_jobA | Get full details for a single job by ID. |
| list_appointmentsC | List appointments. Filter by date range (YYYY-MM-DD). |
| list_job_typesB | List all job types configured in ServiceTitan. |
| list_projectsC | List projects. Optionally filter by status. |
| get_projectB | Get a single project by ID. |
| list_invoicesC | List invoices. Filter by job, customer, or creation date. |
| get_invoiceA | Get a single invoice by ID including line items. |
| list_paymentsC | List payments received. |
| list_payment_typesC | List payment types (Cash, Check, Credit Card, etc.). |
| list_inventory_billsC | List AP / inventory bills. |
| list_journal_entriesC | List journal entries. |
| list_payment_termsC | List payment terms (Net 30, Due on Receipt, etc.). |
| list_tax_zonesC | List tax zones. |
| list_estimatesB | List estimates. Filter by job, status (Open, Sold, Dismissed), or sold date. |
| get_estimateA | Get a single estimate by ID with line items. |
| list_appointment_assignmentsC | List dispatch appointment assignments (technician → appointment). |
| list_technician_shiftsC | List technician shift schedules. |
| list_zonesC | List dispatch zones. |
| list_non_job_appointmentsC | List non-job appointments (meetings, training, etc.). |
| list_pricebook_servicesC | List pricebook services (line items techs sell). |
| list_pricebook_materialsC | List pricebook materials. |
| list_pricebook_equipmentD | List pricebook equipment. |
| list_pricebook_categoriesC | List pricebook categories. |
| list_purchase_ordersC | List purchase orders. Optionally filter by status. |
| list_warehousesD | List inventory warehouses. |
| list_inventory_vendorsB | List inventory vendors/suppliers. |
| list_trucksC | List trucks (vehicle inventory). |
| list_membershipsC | List customer memberships. Optionally filter by status (Active, Expired, Canceled). |
| list_membership_typesC | List membership type definitions. |
| list_recurring_servicesC | List recurring services. |
| list_employeesC | List employees. Optionally filter to active only. |
| get_employeeB | Get a single employee by ID. |
| list_techniciansC | List technicians. |
| list_business_unitsC | List business units. |
| list_tag_typesC | List tag types used for categorization. |
| list_user_rolesD | List user roles. |
| list_report_categoriesA | List available report categories. |
| list_reports_in_categoryC | List reports within a specific report category. |
| run_reportB | Run a ServiceTitan report by ID. parameters: JSON string of report parameters, e.g. '{"From":"2024-01-01","To":"2024-12-31"}' |
| list_payrollsC | List payroll runs. |
| list_employee_payrollsC | List employee-level payroll details for a specific payroll run. |
| list_gross_pay_itemsC | List gross pay line items for a payroll run. |
| list_callsC | List phone calls. Filter by date range (YYYY-MM-DD). |
| list_formsC | List form templates. |
| list_form_submissionsD | List form submissions. |
| list_campaignsC | List marketing campaigns. |
| list_campaign_costsC | List marketing campaign costs. |
| list_installed_equipmentC | List installed equipment at customer locations. |
| list_tasksC | List tasks in ServiceTitan task management. |
| list_activitiesC | List timesheet activities. |
| list_activity_categoriesC | List timesheet activity categories (Drive, Job, Break, etc.). |
| servicetitan_api_callA | Make an arbitrary ServiceTitan API call for advanced use. method: GET, POST, PATCH, PUT path: Full path starting with / e.g. /crm/v2/tenant/{tenant_id}/customers Use {tenant_id} as a placeholder — it will be replaced automatically. query_params: JSON string of query parameters body: JSON string for request body (POST/PATCH/PUT) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 60 tools
Each tool targets a distinct entity and action (get_ vs list_). The diverse set of entities ensures no overlap. The generic servicetitan_api_call may overlap but is intended for advanced usage.
All tool names follow the consistent pattern of verb_entity (e.g., get_customer, list_estimates). No mixing of conventions, clear and predictable.
60 tools far exceeds the typical well-scoped range (3-15). While ServiceTitan has many entities, this many tools becomes heavy and may overwhelm agents.
The tool surface is almost entirely read-only (get/list). No create, update, or delete tools are provided for any entity, requiring agents to use the generic servicetitan_api_call for mutations, which is a significant gap.