ServiceTitan MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ST_APP_KEY | Yes | ServiceTitan app key (ST-App-Key header) | |
| ST_DOMAINS | No | Comma-separated domain allowlist (e.g. crm,dispatch,reporting) | |
| ST_READONLY | No | Skip write and delete tools at registration time | true |
| ST_TIMEZONE | No | IANA timezone for the tenant (e.g. America/New_York) — critical for date-bound intelligence tools | UTC |
| ST_CLIENT_ID | Yes | ServiceTitan OAuth client ID | |
| ST_LOG_LEVEL | No | Log level: debug, info, warn, error | info |
| ST_TENANT_ID | Yes | ServiceTitan tenant identifier | |
| ST_CORS_ORIGIN | No | Allowed CORS origin for the SSE server | * |
| ST_ENVIRONMENT | No | ServiceTitan environment: integration or production | integration |
| ST_MCP_API_KEY | No | API key for remote MCP clients (required for SSE deployment only) | |
| ST_CLIENT_SECRET | Yes | ServiceTitan OAuth client secret | |
| ST_CONFIRM_WRITES | No | Require confirm=true to execute write tools | false |
| ST_RESPONSE_SHAPING | No | Set to false to disable response transformation and return raw API data | true |
| ST_MAX_RESPONSE_CHARS | No | Cap tool response size | 100000 |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| st_health_checkA | Verify authentication and representative tenant read access. Use st_readiness_check for report and module compatibility. |
| st_readiness_checkA | Read-only compatibility manifest: authentication, representative module read access, report fields/parameters and definition fingerprints. Does not certify write scopes or metric totals. |
| st_result_readA | Retrieve a stored large result as bounded JSON text chunks. Start at offset 0, concatenate text in nextOffset order, then parse JSON. Results expire after five minutes and belong to this session. |
| accounting_ap_credits_listA | List one requested page of vendor AP credits, filterable by credit IDs and created or modified timestamps. Use this for credits on vendor accounts; use accounting_ap_payments_list for AP disbursements and accounting_payments_list for customer receipts. |
| accounting_ap_payments_listA | List one requested page of vendor AP payments, filterable by payment IDs and created or modified timestamps. Use this for accounts-payable disbursements; use accounting_ap_credits_list for vendor credits and accounting_payments_list for customer receipts. |
| accounting_gl_accounts_getA | Retrieve a GL account by its ServiceTitan ID. Returns the single upstream record without pagination; use accounting_gl_accounts_list to search when the ID is unknown. |
| accounting_gl_accounts_listA | List one requested page of general-ledger accounts, with filters for IDs, names, numbers, types, subtypes, source, description, and Intacct flags. Use accounting_gl_accounts_get for one known account and accounting_gl_account_types_list to resolve account-type metadata. |
| accounting_gl_account_types_listA | List one requested page of GL account-type definitions, filterable by type IDs, names, and active state. Use this catalog to resolve types for GL accounts; use accounting_gl_accounts_list for the actual ledger accounts. |
| accounting_invoices_listA | List one requested page of customer invoice headers using customer, job, business-unit, invoice, date, amount, balance, review, and assignment filters. Use this for filtered invoice search; use estimates or invoice-item tools when the required grain is an estimate or individual line item. |
| accounting_invoices_custom_field_types_listA | List one requested page of invoice custom-field definitions, with paging and total-count controls. Use this to resolve the metadata for invoice custom fields; use accounting_invoices_list to retrieve invoice records and their values. |
| accounting_journal_entries_get_summaryA | Retrieve journal-entry summary rows for the requested journal-entry IDs. Use this for header-level accounting totals; use accounting_journal_entries_get_details for the corresponding line-level detail rows. |
| accounting_journal_entries_get_detailsA | Retrieve journal-entry detail rows for the requested journal-entry IDs. Use this for line-level account and amount detail; use accounting_journal_entries_get_summary for header-level totals. |
| accounting_journal_entries_listA | List one requested page of journal-entry headers using IDs, numbers, sync status, posted dates, and created or modified timestamps. Use this to discover entry IDs, then choose accounting_journal_entries_get_summary for summary rows or accounting_journal_entries_get_details for line-level rows. |
| accounting_payments_custom_field_types_listA | List one requested page of payment custom-field definitions, with paging and total-count controls. Use this to resolve payment field metadata; use accounting_payments_list for customer payment transactions and their field values. |
| accounting_payments_listA | List one requested page of customer payment transactions using payment or applied-invoice identifiers, customer, business-unit, batch, status, date, and total-amount filters. Use accounting_payment_types_list for payment-method definitions; use accounting_ap_payments_list for vendor disbursements. |
| accounting_payment_types_getA | Retrieve a payment type by its ServiceTitan ID. Returns the single upstream record without pagination; use accounting_payment_types_list to search when the ID is unknown. |
| accounting_payment_types_listA | List one requested page of customer payment-type definitions, filterable by IDs, active state, and creation timestamps. Use this catalog to interpret or select payment methods; use accounting_payments_list for actual customer payment transactions. |
| accounting_payment_terms_getA | Retrieve a payment term by its ServiceTitan ID. Returns the single upstream record without pagination; use accounting_payment_terms_list to search when the ID is unknown. |
| accounting_payment_terms_listA | List one requested page of invoice payment-term definitions, filterable by IDs and created or modified timestamps. Use accounting_payment_terms_get for one known term; use accounting_invoices_list for invoice transactions. |
| accounting_tax_zones_listA | List one requested page of tax-zone definitions, filterable by IDs, active state, and created or modified timestamps. Use this catalog to resolve tax treatment identifiers; it does not return invoice transactions or calculated tax totals. |
| crm_bookings_getA | Retrieve one tenant booking record by booking ID. Use crm_bookings_list to search when the ID is unknown, or the provider-scoped get when the booking provider must be part of the route. |
| crm_bookings_provider_getA | Retrieve one booking record from a specified booking provider using both provider and booking IDs. Use crm_bookings_get for the tenant-wide ID route, or the provider list when the booking ID is unknown. |
| crm_bookings_contacts_listA | List one page of contacts attached to a tenant booking. Supply the booking ID; use page and pageSize to continue through results. |
| crm_bookings_listA | Search tenant bookings by IDs, external ID, or created and modified ranges. Returns one page; use crm_bookings_get for a known booking ID. |
| crm_bookings_provider_listA | Search one booking provider's bookings by IDs, external ID, or created and modified ranges. Returns one page and requires the provider ID. |
| crm_bookings_provider_contacts_listA | List one page of contacts for a booking within a specified booking provider. Requires both provider and booking IDs. |
| crm_booking_provider_tags_getA | Retrieve one booking-provider tag record by ID, including its name and description. Use crm_booking_provider_tags_list to search by name, multiple IDs, or change dates. |
| crm_booking_provider_tags_listA | Search booking-provider tag definitions by name, IDs, or created and modified ranges. Returns one page; use crm_booking_provider_tags_get when the tag ID is already known. |
| crm_contact_methods_getA | Retrieve one contact-method record using its parent contact UUID and contact-method UUID. Use crm_contact_methods_list to search that contact's methods when the method ID is unknown. |
| crm_contact_methods_listA | Search one contact's phone, email, or other contact methods by reference, type, value, or date filters. Returns one page and requires contactId. |
| crm_contacts_getA | Retrieve one CRM contact record by UUID, including its stored identity fields. Use crm_contacts_list to search by name, title, reference ID, archive status, or change dates. |
| crm_contacts_by_relationship_listA | Search contact records associated with a known relationship ID, with optional identity, archive, and date filters. Returns one page; use crm_contact_relationships_list to inspect the links owned by one known contact. |
| crm_contacts_listA | Search CRM contacts by name, title, reference ID, archive status, or date ranges. Returns one page; use crm_contacts_get for a known UUID. |
| crm_contact_relationships_listA | List one page of contact-to-entity relationship records for a known contact UUID, optionally filtered by related entity, type slug, type name, or creation time. Use crm_contacts_by_relationship_list for contacts associated with a known relationship ID. |
| crm_customers_getA | Retrieve one customer record by ID, including the customer data returned by ServiceTitan. Use crm_customers_list to search by name, address, phone, external data, activity, or date ranges. |
| crm_customers_listA | Search customers by IDs, name, address, phone, coordinates, external data, activity, or created and modified ranges. Returns one page; use crm_customers_get for a known ID. |
| crm_customers_notes_listA | List one page of notes attached to a known customer, optionally filtered by created or modified timestamps. Requires the customer ID. |
| crm_customers_contacts_listA | List one page of contacts attached to a known customer. Use crm_customers_contacts_modified_list for cross-customer incremental contact queries. |
| crm_customers_contacts_modified_listA | Search contact records across specified customers using created or modified time ranges. Returns one page; use crm_customers_contacts_list for all contacts of one known customer. |
| crm_customers_custom_field_types_listA | List one page of custom-field type definitions available to customers, with created and modified date filters. This returns field metadata, not values for one customer. |
| crm_leads_getA | Retrieve one CRM lead record by ID, including its customer and lead details. Use crm_leads_list to search by customer, status, prospect state, location fields, or date ranges. |
| crm_leads_notes_listA | List one page of notes attached to a known lead, optionally filtered by created or modified timestamps. Requires the lead ID. |
| crm_leads_listA | Search CRM leads by IDs, customer, status, prospect state, customer location, or created and modified ranges. Returns one page; use crm_leads_get for a known ID. |
| crm_locations_getA | Retrieve one service-location record by ID, including its customer and address data. Use crm_locations_list to search by customer, address, external data, activity, or date ranges. |
| crm_locations_listA | Search service locations by IDs, customer, name, address, coordinates, external data, activity, or date ranges. Returns one page; use crm_locations_get for a known ID. |
| crm_locations_notes_listA | List one page of notes attached to a known service location, optionally filtered by created or modified timestamps. Requires the location ID. |
| crm_locations_contacts_listA | List one page of contacts attached to a known service location. Use crm_locations_contacts_modified_list for cross-location incremental contact queries. |
| crm_locations_contacts_modified_listA | Search contact records across specified locations using created or modified time ranges. Returns one page; use crm_locations_contacts_list for all contacts of one known location. |
| crm_locations_custom_field_types_listA | List one page of custom-field type definitions available to locations, with created and modified date filters. This returns field metadata, not values for one location. |
| crm_location_labor_types_listA | List one page of labor-type assignment records for specified location IDs, optionally filtered by active state or creation time. Use this to determine which labor types apply across known service locations. |
| dispatch_arrival_windows_getA | Retrieve one arrival-window definition by ID, including its time span and applicable business units. Use dispatch_arrival_windows_list to browse by active state or creation time. |
| dispatch_arrival_windows_listA | List one page of arrival-window definitions, optionally filtered by active state or creation time. Each record supplies a configured window and applicable business units; use dispatch_arrival_windows_get for a known ID. |
| dispatch_arrival_window_configuration_getA | Retrieve the tenant-wide arrival-window configuration as one unpaged response. It returns scheduling configuration rather than an individual window; use dispatch_arrival_windows_get or list for window definitions. |
| dispatch_appointments_getA | Retrieve one appointment record by ID, including its dispatch and scheduling data. Use dispatch_appointments_list to search by job, customer, technician, status, start time, or other filters. |
| dispatch_appointments_listA | Search appointments by IDs, job, project, customer, technician, status, start range, or created and modified ranges. Returns one page; use dispatch_appointments_get for a known ID. |
| dispatch_jobs_get_attachmentA | Retrieve one job-attachment resource from Forms v2 by attachment ID. Use dispatch_jobs_list_attachments to browse attachment metadata for a known job when the attachment ID is unknown. |
| dispatch_jobs_list_attachmentsA | List one page of attachments for a known job, optionally filtered by creation time and sorted. Returned records identify files attached to that job. |
| dispatch_call_reasons_listA | List one page of dispatch call-reason catalog entries, filtered by active state or created and modified ranges. Use these IDs when a workflow requires a call reason. |
| dispatch_job_cancel_reasons_listA | Browse the paginated job-cancellation-reason catalog using active and date filters. Use dispatch_jobs_cancel_reasons_list instead only to look up a supplied set of known reason IDs. |
| dispatch_job_hold_reasons_listA | List one page of job-hold-reason catalog entries, filtered by active state or created and modified ranges. Returned records provide reason IDs and metadata used when placing a job on hold; they are distinct from cancellation reasons. |
| dispatch_jobs_getA | Retrieve one job record by ID, optionally scoped to an external-data application. Returns the current ServiceTitan job data; use dispatch_jobs_list to search by customer, location, status, dates, or other filters. |
| dispatch_jobs_listA | Search jobs by IDs, number, customer, location, project, status, appointments, equipment, tags, dates, or other supported filters. Returns one page; use dispatch_jobs_get for a known job ID. |
| dispatch_jobs_equipment_getA | Retrieve the installed-equipment ID collection attached to a known job as one unpaged response. Use dispatch_installed_equipment_get or list to fetch the equipment records themselves. |
| dispatch_jobs_notes_listA | List one page of notes attached to a known job. Requires the job ID; this endpoint has pagination controls but no note-content filters. |
| dispatch_jobs_cancel_reasons_listA | Look up job cancellation reasons for a supplied list of known IDs. This non-paginated Jobs endpoint is distinct from dispatch_job_cancel_reasons_list, which browses and filters the reason catalog. |
| dispatch_jobs_history_getA | Retrieve the history response for a known job ID as one unpaged audit resource. Use dispatch_jobs_get for the current job record rather than its historical changes. |
| dispatch_jobs_canceled_logs_listA | List one page of cancellation log entries for a known job ID. Use this for cancellation audit details rather than the current job or cancellation-reason catalog. |
| dispatch_jobs_booked_log_getA | Retrieve booking-log details for a known job ID as one unpaged audit resource. Use dispatch_jobs_get for the current job record rather than its booking audit data. |
| dispatch_jobs_custom_field_types_listA | List one page of custom-field type definitions available to jobs, with created and modified date filters. This returns field metadata, not values for one job. |
| dispatch_job_splits_listA | List one page of split records for a single required job ID, with activity and date filters. Use dispatch_job_splits_by_jobs_list to query splits across multiple jobs. |
| dispatch_job_splits_by_jobs_listA | Search one page of job-split records across supplied job IDs, with activity and date filters. Use dispatch_job_splits_list when working with one job-scoped route. |
| dispatch_job_types_getA | Retrieve one job-type definition by ID, optionally scoped to an external-data application. Returns the configured defaults and associations for that type; use dispatch_job_types_list to search the catalog. |
| dispatch_job_types_listA | Search job-type definitions by IDs, name, priority, duration, active state, external-data application, or date ranges. Returns one page of configured job types; use dispatch_job_types_get for a known ID. |
| dispatch_projects_getA | Retrieve one project record by ID, optionally scoped to an external-data application. Returns the current project data; use dispatch_projects_list to search by customer, location, status, dates, or linked work. |
| dispatch_projects_listA | Search projects by IDs, customer, location, status, type, manager, dates, or linked jobs, appointments, and invoices. Returns one page; use dispatch_projects_get for a known ID. |
| dispatch_projects_notes_listA | List one page of notes attached to a known project. Requires the project ID; use dispatch_projects_get for the project record itself. |
| dispatch_projects_custom_field_types_listA | List one page of custom-field type definitions available to projects, with created and modified date filters. This returns field metadata, not values for one project. |
| dispatch_project_types_getA | Retrieve one project-type definition by ID, including its configured type metadata. Use dispatch_project_types_list to browse the paginated type catalog when the ID is unknown. |
| dispatch_project_types_listA | List one page of project-type definitions. Use dispatch_project_types_get when a project-type ID is already known. |
| dispatch_project_statuses_getA | Retrieve one project-status definition by ID, including its configured status metadata. Use dispatch_project_statuses_list to search the catalog and the sub-status list for finer classifications. |
| dispatch_project_statuses_listA | Search one page of project-status definitions by IDs, name, or created and modified ranges. Use the returned status IDs to classify projects, and dispatch_project_sub_statuses_list to find their finer-grained sub-statuses. |
| dispatch_project_sub_statuses_getA | Retrieve one project sub-status definition by ID, including its parent-status metadata. Use dispatch_project_sub_statuses_list to search by parent status, name, IDs, active state, or dates. |
| dispatch_project_sub_statuses_listA | Search one page of project sub-status definitions by parent status, IDs, name, active state, or date ranges. Returned records refine a project's status; use dispatch_project_statuses_list for the parent status catalog. |
| dispatch_installed_equipment_getA | Retrieve one installed-equipment record by ID, including its location and equipment details. Use dispatch_installed_equipment_list to search by location, IDs, active state, or date ranges. |
| dispatch_installed_equipment_listA | Search installed-equipment records by IDs, location IDs, active state, or created and modified ranges. Returns one page; use dispatch_installed_equipment_get for a known ID. |
| dispatch_installed_equipment_attachments_getA | Request an installed-equipment attachment by its ServiceTitan storage path. Returns the client-decoded attachment response; the pinned API does not define a response-body schema. Supply the exact known path; use dispatch_installed_equipment_get for the equipment record itself. |
| dispatch_images_getA | Request image response data for a ServiceTitan storage path. The upstream Pricebook image operation documents an HTTP 302 redirect; this wrapper returns the client-decoded response body through its standard JSON/text envelope, without exposing the redirect Location header. Supply the known path when targeting an image; use dispatch_jobs_list_attachments to discover job attachments. |
| dispatch_forms_listA | Search dispatch form definitions by IDs, name, publication status, active state, conditional logic, triggers, and date ranges. Returns one page of form metadata; use dispatch_form_submissions_list for completed or pending submissions. |
| dispatch_form_submissions_listA | Search submitted form records by form, creator, status, owner expression, submitted range, or active state. Returns one page; use this for submission results rather than form definitions. |
| estimates_getA | Retrieve a single estimate by its ServiceTitan ID. Returns the single upstream record without pagination; use estimates_list to search when the ID is unknown. |
| estimates_listA | Search one requested page of estimates by job, project, location, status, dates, salesperson, or total amount. Use estimates_get for one known estimate; use estimates_export_estimates for incremental synchronization. |
| estimates_export_estimatesA | Read the incremental estimate export feed for synchronization. Supply from as the change-window start and continue with the response continuation token when present; use estimates_list for interactive filtered browsing and estimates_get for a known ID. |
| estimates_items_listA | Search one requested page of estimate line items by estimate ID, item IDs, active state, or creation and modification dates. Each result represents an item attached to an estimate, rather than an estimate header returned by estimates_list. |
| estimates_estimate_templates_listA | List one requested page of estimate templates, filterable by active state and modified timestamps. Use estimates_estimate_templates_get for a known template ID; use estimates_list for customer estimates created from templates. |
| estimates_estimate_templates_getA | Retrieve an estimate template by its ServiceTitan ID. Returns the single upstream record without pagination; use estimates_estimate_templates_list to search when the ID is unknown. |
| estimates_proposal_templates_listA | List one requested page of proposal templates, filterable by active state, modified timestamps, and proposal type ID. Use estimates_proposal_templates_get for a known template and estimates_proposal_types_list to resolve the type filter. |
| estimates_proposal_templates_getA | Retrieve a proposal template by its ServiceTitan ID. Returns the single upstream record without pagination; use estimates_proposal_templates_list to search when the ID is unknown. |
| estimates_proposal_types_listA | List proposal-type definitions available for grouping and filtering proposal templates. Use estimates_proposal_templates_list to retrieve the templates that reference these types. |
| export_invoicesA | Read the incremental invoices export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_invoice_itemsA | Read the incremental invoice items export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_invoice_templatesA | Read the incremental invoice templates export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_paymentsA | Read the incremental payments export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_adjustmentsA | Read the incremental adjustments export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_inventory_billsA | Read the incremental inventory bills export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_payroll_adjustmentsA | Read the incremental payroll adjustments export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_customersA | Read the incremental customers export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_customers_contactsA | Read the incremental customers contacts export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_locations_contactsA | Read the incremental locations contacts export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_locationsA | Read the incremental locations export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_leadsA | Read the incremental leads export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_bookingsA | Read the incremental bookings export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_jobsA | Read the incremental jobs export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_job_notesA | Read the incremental job notes export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_job_historyA | Read the incremental job history export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_job_canceled_logsA | Read the incremental job canceled logs export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_job_splitsA | Read the incremental job splits export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_appointmentsA | Read the incremental appointments export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_appointment_assignmentsA | Read the incremental appointment assignments export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_projectsA | Read the incremental projects export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_project_notesA | Read the incremental project notes export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_installed_equipmentA | Read the incremental installed equipment export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_techniciansA | Read the incremental technicians export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_employeesA | Read the incremental employee export feed for cross-domain bulk synchronization. This is the same feed as people_employees_export; use whichever name is available and do not fetch both. Continue immediately with continueFrom while hasMore is true; when false, retain it and wait before polling again. includeRecentChanges may repeat records. |
| export_servicesA | Read the incremental services export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_materialsA | Read the incremental materials export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_equipmentA | Read the incremental equipment export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_membershipsA | Read the incremental memberships export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_membership_typesA | Read the incremental membership types export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_membership_status_changesA | Read the incremental membership status changes export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_service_agreementsA | Read the incremental service agreements export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_recurring_service_typesA | Read the incremental recurring service types export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_callsA | Read the incremental calls export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_timesheet_codesA | Read the incremental timesheet codes export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_gross_pay_itemsA | Read the incremental gross pay items export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_payroll_settingsA | Read the incremental payroll settings export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_activitiesA | Read the incremental timesheet-activity export feed for cross-domain bulk synchronization. This is the same feed as settings_activities_export; use whichever name is available and do not fetch both. Continue immediately with continueFrom while hasMore is true; when false, retain it and wait before polling again. includeRecentChanges may repeat records. |
| export_activity_codesA | Read the incremental activity-code export feed for cross-domain bulk synchronization. This is the same feed as settings_activity_codes_export; use whichever name is available and do not fetch both. Continue immediately with continueFrom while hasMore is true; when false, retain it and wait before polling again. includeRecentChanges may repeat records. |
| export_business_unitsA | Read the incremental business units export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_tag_typesA | Read the incremental tag-type export feed for cross-domain bulk synchronization. This is the same feed as settings_tag_types_export; use whichever name is available and do not fetch both. Continue immediately with continueFrom while hasMore is true; when false, retain it and wait before polling again. includeRecentChanges may repeat records. |
| export_purchase_ordersA | Read the incremental purchase orders export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_returnsA | Read the incremental returns export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| export_transfersA | Read the incremental transfers export feed for bulk synchronization. Start with a date or omit from to start at the beginning of the feed, continue immediately with continueFrom while hasMore is true, and when false retain it and wait before polling again. includeRecentChanges may return records sooner but can repeat them. |
| intel_lookupA | Look up technicians, business units, payment types, or membership types for use in intelligence-tool filters. Returns matching IDs and names from a 30-minute in-process cache; search performs a case-insensitive name match, while omission returns the available cached set. Examples:
|
| intel_revenue_summaryA | Summarize Report 175 revenue and Report 179 sales for the selected date range, optionally filtered to one business unit. Returns completed, non-job, adjustment, and total revenue plus opportunities, conversion, and sales metrics by business unit; the aggregate reflects returned report rows and is not certified as an all-company total or as matching every tenant dashboard configuration. includeProductivityMetrics adds Report 177 metrics, and includeCollections fetches all payment pages for the period. Report calls are cached briefly and serialized per report/client with at least 65 seconds between starts; a failed source is identified in _warnings and its affected metrics may be empty. Examples:
|
| intel_technician_scorecardA | Build a technician scorecard for the selected date range from ServiceTitan technician reports. Returns revenue, converted jobs, opportunities, conversion, productivity, recalls, upsells, and lead-generation metrics; includeExtendedMetrics adds membership and tech/marketing-lead sales reports. Filter by technician or business unit when comparing a subset, and use limit to bound ranked results. Report calls may wait for per-report/client spacing, and partial source failures are returned in _warnings. Examples:
|
| intel_membership_healthA | Summarize membership activity from Report 182 and business-unit membership opportunities and conversions from Report 178 for the selected date range. Returns active-at-end counts, sales, cancellations, expirations, renewals, other status movements, and conversion metrics; it does not calculate a cohort retention rate. includeServiceRevenue adds tenant-wide invoice service revenue for the period, which is not membership-attributed. Partial source failures are returned in _warnings. Examples:
|
| intel_estimate_pipelineA | Analyze all fetched estimate pages as an open, sold, and dismissed pipeline, with value, conversion, close speed, age buckets, and open estimates older than 30 days. startDate and endDate bound estimate creation timestamps; when both are supplied, Report 172 adds technician sales metrics. soldById filters both sources. Partial source failures are returned in _warnings. Examples:
|
| intel_campaign_performanceA | Compare marketing campaigns over the selected date range by combining all fetched call, booking, job, and invoice pages. Returns calls, bookings, booked-call conversion, attributed revenue, and revenue per call; campaignId narrows the analysis to one known campaign. The metrics reflect the wrapper's cross-source attribution logic, and partial source failures are returned in _warnings. Examples:
|
| intel_daily_snapshotA | Build a one-day operational snapshot in the configured tenant timezone from all fetched appointment, job, invoice, payment, estimate, and call pages plus Report 163 for the next day. Returns appointment progress, daily invoiced revenue and collections, sold-estimate value, call outcomes, highlights, and at most 20 upcoming jobs; truncation and partial source failures appear in _warnings. Results are cached for 60 seconds. Examples:
|
| intel_csr_performanceA | Summarize CSR-attributed jobs from Report 162 for the selected date range. Returns booked-job counts, revenue, average ticket, campaign and job-type mixes, rankings, and team averages; an optional business-unit name narrows matching report rows. Report execution is cached briefly and may wait for per-report/client spacing; unavailable source data is identified in _warnings. Examples:
|
| intel_labor_costA | Summarize employee regular, overtime, double-overtime, and total hours from Report 166 for the selected date range. When the tenant report exposes GrossPay, the tool also derives cost and effective hourly rate; otherwise those fields are unavailable rather than estimated. Report execution may wait for per-report/client spacing, and source failures are returned in _warnings. Examples:
|
| intel_invoice_trackingA | Track invoice email delivery for the selected date range by combining and deduplicating Reports 2281 and 2282. Returns sent and not-sent counts, send rate, invoice amount and balance impact, and unsent breakdowns by business unit and technician; an optional business-unit filter applies to both reports. Report calls may wait for per-report/client spacing, and partial source failures are returned in _warnings. Examples:
|
| inventory_purchase_orders_getA | Retrieve a purchase order by its ServiceTitan ID. Returns the single upstream record without pagination; use inventory_purchase_orders_list to search when the ID is unknown. |
| inventory_purchase_orders_listA | List one requested page of issued purchase orders using IDs, number, status, technician, job, project, and order or sent-date filters. Use inventory_purchase_orders_get for one known order and inventory_purchase_orders_requests_list for requests that precede issued orders. |
| inventory_purchase_orders_requests_listA | Search purchase-order requests with the exposed identifiers, status, date, technician, job, and paging filters. These are requests that may precede a purchase order; use inventory_purchase_orders_list for issued purchase orders. |
| inventory_purchase_order_types_listA | List one requested page of purchase-order type definitions, with active-state and created or modified timestamp filters. Use this catalog to interpret order classifications; use inventory_purchase_orders_list for issued purchase-order records. |
| inventory_purchase_order_markups_getA | Retrieve a purchase order markup by its ServiceTitan ID. Returns the single upstream record without pagination; use inventory_purchase_order_markups_list to search when the ID is unknown. |
| inventory_purchase_order_markups_listA | List one requested page of purchase-order markup definitions, filterable by IDs and created or modified timestamps. Use inventory_purchase_order_markups_get for one known markup ID; use inventory_purchase_orders_list for purchase-order transactions. |
| inventory_returns_listA | List one requested page of inventory return transactions using IDs, number, vendor, job, inventory location, sync status, return dates, and external-data filters. Use inventory_return_types_list for the separate return-type catalog; use inventory_transfers_list for movement between inventory locations. |
| inventory_return_types_listA | List one requested page of inventory return-type definitions, with active-state and created or modified timestamp filters. Use this catalog to interpret return classifications; use inventory_returns_list for actual return transactions. |
| inventory_transfers_listA | List one requested page of inventory transfers using IDs, number, status, transfer type, source and destination locations, dates, sync status, and external-data filters. Use this for stock moved between locations; use inventory_returns_list for stock returned to a vendor. |
| inventory_vendors_getA | Retrieve a vendor by its ServiceTitan ID. Returns the single upstream record without pagination; use inventory_vendors_list to search when the ID is unknown. |
| inventory_vendors_listA | List one requested page of inventory vendors using IDs, active state, created or modified timestamps, and external-data mapping filters. Use inventory_vendors_get for one known vendor; use inventory_purchase_orders_list for purchase-order records. |
| inventory_warehouses_listA | List one requested page of warehouse definitions using IDs, active state, created or modified dates, and external-data mapping filters. Use this to resolve warehouse and inventory-location identifiers; use inventory transfers or purchase orders for stock movement and procurement. |
| inventory_receipts_listA | List one requested page of inventory receipt transactions using IDs, number, vendor, purchase order, bill, business unit, inventory location, sync status, and received-date filters. Use inventory_purchase_orders_list for originating orders and inventory_returns_list for outbound vendor returns. |
| marketing_attributed_leads_getA | Search attributed leads within a required UTC time window, optionally filtered by lead type. Returns one page of leads linked to marketing attribution activity. |
| marketing_client_side_data_getA | Retrieve tenant task reference data: employees, business units, priorities, statuses, types, sources, and resolutions. This Task Management client-side-data operation returns one unpaged response with no inputs; use it to populate task filters or forms, not for marketing analytics. |
| marketing_client_specific_pricing_get_all_rate_sheetsA | Search client-specific pricing rate sheets by IDs, search term, or active state. Returns one page of pricing definitions; despite the legacy name, pagination still applies. Use the rate-sheet ID from this result when updating a sheet. |
| marketing_reviewsA | Search customer review records by text, rating, source, response type, review status, location, technician, campaign, and date ranges. Returns one page; use inclusion flags when reviews missing those associations must remain in the result. |
| marketing_scheduler_schedulersA | List one page of marketing scheduler records, optionally filtered by created or modified timestamps. Use marketing_scheduler_scheduler_performance for metrics about one known scheduler. |
| marketing_scheduler_scheduler_performanceA | Retrieve one scheduler's performance metrics over a required session-created time window. Returns the scheduler performance response for that exact ID and period; use marketing_scheduler_schedulersessions for individual sessions. |
| marketing_scheduler_schedulersessionsA | List one page of sessions for a known scheduler, optionally filtered by created or modified timestamps. Use scheduler performance when aggregated metrics are needed. |
| marketing_campaign_costs_listA | Search campaign costs across campaigns by campaign ID, year, or month. Returns one page; use marketing_campaigns_costs_list when a specific campaign ID is the required path scope. |
| marketing_campaign_costs_getA | Retrieve one campaign-cost record by cost ID. Use marketing_campaign_costs_list to search when the cost ID is unknown. |
| marketing_campaigns_getA | Retrieve one marketing campaign record by ID, including its configured campaign data. Use marketing_campaigns_list to search by name, phone number, active state, IDs, or date ranges. |
| marketing_campaigns_listA | Search campaigns by IDs, name, phone number, active state, or created and modified ranges. Returns one page; use marketing_campaigns_get for a known campaign ID. |
| marketing_campaigns_costs_listA | List one page of costs for a required campaign ID, optionally filtered by year or month. Use marketing_campaign_costs_list for a broader cost search across campaigns. |
| marketing_calls_v3_listA | Search calls through Marketing Calls v3 using comma-delimited IDs, caller number, active state, agents, campaign, duration, timestamps, or sort. Returns one page; prefer this for ordinary call search, and use v2 only for its numeric ID array, activeOnly, or orderBy contract. |
| marketing_calls_getA | Retrieve one Marketing Calls v2 call record by numeric ID, including the call details returned by ServiceTitan. Use a call-list tool when the ID is unknown, and the recording or voicemail tools for those media resources. |
| marketing_calls_recording_getA | Request the audio recording for a known Marketing Calls v2 call ID. ServiceTitan documents an audio/mpeg stream, but this wrapper delivers client-decoded data through its standard JSON/text envelope; use a binary-capable API client when faithful audio bytes are required. Use marketing_calls_get for the call record itself. |
| marketing_calls_voice_mail_getA | Request the voicemail audio for a known Marketing Calls v2 call ID. ServiceTitan documents an audio/mpeg stream, but this wrapper delivers client-decoded data through its standard JSON/text envelope; use a binary-capable API client when faithful audio bytes are required. Use marketing_calls_get for the call record itself. |
| marketing_calls_v2_listA | Search calls through Marketing Calls v2 using its activeOnly flag, explicit orderBy and direction, numeric ID array, agents, campaign, duration, phone, or timestamps. Returns one page; prefer v3 unless these v2-specific filter or sorting semantics are required. |
| marketing_opt_in_outs_listA | Retrieve the tenant's marketing phone opt-out records from the v3 opt-in/out endpoint. This operation accepts no filters or pagination inputs. |
| memberships_listA | List one requested page of customer membership records using membership and customer IDs, status, active state, billing frequency, duration, and created or modified timestamps. Use memberships_get for one known sold membership and memberships_types_list for reusable membership-plan definitions. |
| memberships_custom_fields_listA | List one requested page of membership custom-field definitions using created and modified timestamp filters. Use this for field metadata; use memberships_list for customer membership records and their field values. |
| memberships_getA | Retrieve a single customer membership by its ServiceTitan ID. Returns the single upstream record without pagination; use memberships_list to search when the ID is unknown. |
| memberships_status_changes_listA | Retrieve the status-change history attached to one required customer membership ID. Use memberships_get for the current membership record or memberships_list when the membership ID must be discovered first. |
| memberships_types_getA | Retrieve a membership type by its ServiceTitan ID. Returns the single upstream record without pagination; use memberships_types_list to search when the ID is unknown. |
| memberships_types_listA | List one requested page of membership-type definitions using IDs, active state, billing frequency, duration, and created or modified timestamps; includeDurationBilling controls embedded billing details. Use memberships_types_get for one known plan and memberships_list for memberships sold to customers. |
| memberships_types_recurring_service_items_listA | Retrieve the recurring-service items configured under one required membership-type ID. Use memberships_types_get for the parent plan; use memberships_recurring_services_list for recurring services scheduled for customer locations. |
| memberships_types_discounts_listA | Retrieve discounts configured for one known membership type ID. These are type-level benefits, not the tenant pricebook discount-and-fee catalog. |
| memberships_types_duration_billing_listA | Retrieve duration and billing configurations under one required membership-type ID. Use this for plan-level term and billing choices; use memberships_types_get for the parent plan and memberships_list for customer memberships. |
| memberships_recurring_services_getA | Retrieve a recurring service by its ServiceTitan ID. Returns the single upstream record without pagination; use memberships_recurring_services_list to search when the ID is unknown. |
| memberships_recurring_services_listA | List one requested page of customer-location recurring services using service, membership, and location IDs, active state, and created or modified timestamps. Use memberships_recurring_services_get for one known service and memberships_types_recurring_service_items_list for plan-level service configuration. |
| memberships_recurring_service_events_listA | List one requested page of recurring-service events using event IDs, status, job, location, and created or modified timestamp filters. Use memberships_recurring_services_get for the parent service record; use job tools for a job referenced by an event. |
| memberships_recurring_service_types_getA | Retrieve a recurring service type by its ServiceTitan ID. Returns the single upstream record without pagination; use memberships_recurring_service_types_list to search when the ID is unknown. |
| memberships_recurring_service_types_listA | List one requested page of recurring-service type definitions using IDs, membership type, recurrence type, duration type, active state, and created or modified timestamps. Use memberships_recurring_service_types_get for one known type and memberships_recurring_services_list for customer-location service instances. |
| memberships_service_agreements_listA | List one requested page of customer service agreements using agreement, customer, business-unit, status, and created or modified timestamp filters. Use memberships_service_agreements_get for a known agreement; use memberships_list for customer membership sales rather than agreement records. |
| memberships_service_agreements_getA | Retrieve a service agreement by its ServiceTitan ID. Returns the single upstream record without pagination; use memberships_service_agreements_list to search when the ID is unknown. |
| payroll_payrolls_listA | List one requested page of payroll periods across employees, with employee type, status, active-state, and date filters. Use the employee- or technician-specific payroll tools when that worker ID is known. |
| payroll_technicians_payrolls_listA | List one requested page of payroll periods for a required technician, with status, active-state, and date filters. Use payroll_payrolls_list for a tenant-wide search. |
| payroll_employees_payrolls_listA | List one requested page of payroll periods for a required employee, with status, active-state, and date filters. Use payroll_payrolls_list for a tenant-wide search. |
| payroll_payroll_settings_employee_getA | Retrieve payroll settings for one employee by the required employee ID. Use payroll_payroll_settings_list to search across workers when the ID is unknown. |
| payroll_payroll_settings_listA | List one requested page of payroll-setting records across employees and technicians, with active, employee-type, created, and modified filters. Use the employee or technician get tool when a worker ID is known. |
| payroll_payroll_settings_technician_getA | Retrieve payroll settings for one technician by the required technician ID. Use payroll_payroll_settings_list to search across workers when the ID is unknown. |
| payroll_timesheet_codes_getA | Retrieve one timesheet code by its required ID. Use payroll_timesheet_codes_list to search when the ID is unknown. |
| payroll_timesheet_codes_listB | Retrieve one requested page of timesheet codes. Use the available filters to narrow results and request subsequent pages explicitly. |
| payroll_timesheets_job_listA | List one requested page of timesheets attached to a required job. Use this when the job ID is known; use payroll_timesheets_jobs_list to search across optional comma-delimited job IDs. |
| payroll_timesheets_jobs_listA | List one requested page of job timesheets across jobs, optionally filtered by comma-delimited job IDs. Use payroll_timesheets_job_list when retrieving timesheets for one required job. |
| payroll_timesheets_non_job_listA | List one requested page of non-job timesheets, optionally filtered by employee, employee type, dates, or active state. These records are not attached to jobs; use the job timesheet tools for job labor. |
| payroll_gross_pay_items_listA | List one requested page of gross-pay line items, optionally scoped by employee, payroll IDs, or pay date range. Use this to inspect pay components rather than payroll-period summaries. |
| payroll_payroll_adjustments_getA | Retrieve one payroll adjustment by its required ID. Use payroll_payroll_adjustments_list to search when the ID is unknown. |
| payroll_payroll_adjustments_listA | List one requested page of payroll adjustments, optionally filtered by employee IDs and posted timestamp. Use payroll_payroll_adjustments_get for one known adjustment ID. |
| people_employees_getA | Retrieve one employee by its required ID. Use people_employees_list to search when the ID is unknown. |
| people_employees_listA | List one requested page of employees, optionally filtered by IDs, user IDs, name, active state, or dates. Use the get tool for one known ID or the export feed for synchronization. |
| people_employees_exportA | Read the incremental employee export feed for People synchronization. This is the same feed as export_employees; use whichever name is available and do not fetch both. Continue immediately with continueFrom while hasMore is true; when false, retain it and wait before polling again. includeRecentChanges may repeat records. |
| people_technicians_getA | Retrieve one technician by its required ID. Use people_technicians_list to search when the technician ID is unknown. |
| people_technicians_listA | List one requested page of technicians, optionally filtered by IDs, user IDs, name, active state, or dates. Use the get tool for one known ID or the export feed for synchronization. |
| people_technician_shifts_getA | Retrieve one technician shift by its required ID. Use people_technician_shifts_list to search when the shift ID is unknown. |
| people_technician_shifts_listA | List one requested page of technician shifts, including normal, on-call, and time-off shifts. Filter by technician, time bounds, text, type, or active state; use the get tool for one known shift ID. |
| people_performance_getA | Retrieve one requested page of marketing performance metrics for a UTC period, segmented by campaign, ad group, or keyword. Use this to compare acquisition performance at one selected grain. |
| people_trucks_listA | List one requested page of inventory trucks, optionally filtered by IDs, active state, dates, or external-data mapping. externalDataKey and externalDataValues must be supplied together. |
| pricebook_categories_getA | Retrieve a pricebook category by its ServiceTitan ID. Returns the single upstream record without pagination; use pricebook_categories_list to search when the ID is unknown. |
| pricebook_categories_listA | List one requested page of pricebook categories using category type, active state, and created or modified timestamps. Use pricebook_categories_get for one known category ID; use the service, material, or equipment list tool for sellable items. |
| pricebook_discounts_fees_getA | Retrieve a discount or fee by its ServiceTitan ID. Returns the single upstream record without pagination; use pricebook_discounts_fees_list to search when the ID is unknown. |
| pricebook_discounts_fees_listA | List one requested page of pricebook discount and fee items using IDs, active state, created or modified timestamps, and external-data mappings. Use pricebook_discounts_fees_get for a known item; membership-type discounts are a separate plan-level benefit. |
| pricebook_equipment_listA | List one requested page of equipment pricebook items using IDs, active state, created or modified timestamps, and external-data mappings. Use pricebook_equipment_get for a known pricebook item; use installed-equipment tools for equipment attached to customer locations. |
| pricebook_equipment_getA | Retrieve equipment item by its ServiceTitan ID. Returns the single upstream record without pagination; use pricebook_equipment_list to search when the ID is unknown. |
| pricebook_materials_getA | Retrieve a material by its ServiceTitan ID. Returns the single upstream record without pagination; use pricebook_materials_list to search when the ID is unknown. |
| pricebook_materials_listA | List one requested page of material pricebook items using IDs, cost-type IDs, other-direct-cost state, active state, timestamps, and external-data mappings. Use pricebook_materials_get for a known item, pricebook_materials_cost_types_list for cost metadata, or inventory tools for stock movement. |
| pricebook_materials_cost_types_listA | List the material cost-type definitions available to pricebook material records; this operation has no filters or caller-managed paging. Use pricebook_materials_list for material items and inventory tools for stock transactions. |
| pricebook_materials_markup_listA | List one requested page of configured material markup ranges using paging, sorting, and total-count controls. Use pricebook_materials_markup_get for a known range ID; use pricebook_materials_list for the material items those pricing rules affect. |
| pricebook_materials_markup_getA | Retrieve a material markup range by its ServiceTitan ID. Returns the single upstream record without pagination; use pricebook_materials_markup_list to search when the ID is unknown. |
| pricebook_services_getA | Retrieve a service by its ServiceTitan ID. Returns the single upstream record without pagination; use pricebook_services_list to search when the ID is unknown. |
| pricebook_services_listA | List one requested page of service pricebook items using IDs, active state, created or modified timestamps, and external-data mappings. Use pricebook_services_get for one known item; use estimates or invoices for services quoted or sold on customer transactions. |
| reporting_dynamic_value_sets_getA | Resolve selectable values for a report dynamic-value-set identifier. Use values from the report definition to supply the required identifier and paging inputs when that report parameter offers dynamic choices. |
| reporting_report_categories_listA | List one requested page of report categories with paging and total-count controls. Start here to discover a category ID, then use reporting_reports_list for reports in that category and reporting_reports_get for a report parameter definition. |
| reporting_reports_listA | List report definitions within a known report category. Use reporting_report_categories_list to discover category IDs, then use reporting_reports_get for one report definition before executing it. |
| reporting_reports_getA | Retrieve one report definition from a known category and report ID, including its parameter contract. Use reporting_reports_list to discover reports and reporting_reports_data_create to execute the selected definition. |
| reporting_reports_data_createA | Execute one requested page of a known report and return the upstream report-data response. First inspect reporting_reports_get for that report's required parameter names, value types, and accepted formats; pass those entries in parameters, and use page, pageSize, and includeTotal to control this request. This generic reporting call is not subject to the intelligence tools' report scheduler or 65-second spacing. |
| scheduling_appointment_assignments_listA | Find one page of technician-to-appointment assignments by assignment IDs, appointment IDs, job ID, active state, or creation and modification dates. Use dispatch_appointments_get or dispatch_appointments_list for the appointment records themselves; this tool returns the assignment relationships. |
| scheduling_business_hours_listA | Retrieve the tenant business-hours configuration used for scheduling availability. This returns configured hours rather than appointment records or calculated open capacity. |
| scheduling_non_job_appointments_getA | Retrieve a non-job appointment by its ServiceTitan ID. Returns the single upstream record without pagination; use scheduling_non_job_appointments_list to search when the ID is unknown. |
| scheduling_non_job_appointments_listA | List one requested page of non-job appointments using IDs, technician, timesheet code, schedule visibility, active state, start bounds, and created or modified timestamps. Use scheduling_non_job_appointments_get for a known appointment; use dispatch appointment tools for appointments attached to jobs. |
| scheduling_teams_listA | List one requested page of scheduling teams using includeInactive and created or modified timestamp filters. Use scheduling_teams_get for one known team ID; use scheduling appointment assignments for technician-to-appointment assignments rather than team definitions. |
| scheduling_teams_getA | Retrieve a team by its ServiceTitan ID. Returns the single upstream record without pagination; use scheduling_teams_list to search when the ID is unknown. |
| scheduling_zones_getA | Retrieve a zone by its ServiceTitan ID. Returns the single upstream record without pagination; use scheduling_zones_list to search when the ID is unknown. |
| scheduling_zones_listA | List one requested page of scheduling zones using active state and created or modified timestamp filters. Use scheduling_zones_get for one known zone ID; use scheduling_business_hours_list for configured operating hours rather than geographic zone definitions. |
| settings_business_units_getA | Retrieve one business unit by its required ID. Use settings_business_units_list to search when the ID is unknown. |
| settings_business_units_listA | List one requested page of business units, optionally filtered by IDs, name, active state, dates, or external-data application. Use the get tool for one known ID or the export feed for synchronization. |
| settings_tag_types_listA | List one requested page of tag types with active-state, date, and sort controls. Use the export feed for incremental synchronization; this endpoint is for paginated browsing. |
| settings_tag_types_exportA | Read the incremental tag-type export feed for Settings workflows. This is the same feed as export_tag_types; use whichever name is available and do not fetch both. Continue immediately with continueFrom while hasMore is true; when false, retain it and wait before polling again. includeRecentChanges may repeat records. |
| settings_activity_codes_getA | Retrieve one payroll activity code by its required ID. Use settings_activity_codes_list to search when the ID is unknown. |
| settings_activity_codes_listA | List one requested page of payroll activity codes with active-state, date, and sort controls. Use the get tool for one known code or the export feed for synchronization. |
| settings_activity_codes_exportA | Read the incremental activity-code export feed for Settings workflows. This is the same feed as export_activity_codes; use whichever name is available and do not fetch both. Continue immediately with continueFrom while hasMore is true; when false, retain it and wait before polling again. includeRecentChanges may repeat records. |
| settings_activity_categories_getA | Retrieve one timesheet activity category by its required ID. Use settings_activity_categories_list to search when the ID is unknown. |
| settings_activity_categories_listA | List one requested page of timesheet activity categories with active-state, date, and sort controls. Use the get tool for one known category or the export feed for synchronization. |
| settings_activity_categories_exportA | Read the incremental activity-category export feed for Settings synchronization. Use the list or get tools for filtered browsing or a known ID. Continue immediately with continueFrom while hasMore is true; when false, retain it and wait before polling again. includeRecentChanges may repeat records. |
| settings_activity_types_getA | Retrieve one timesheet activity type by its required ID. Use settings_activity_types_list to search when the ID is unknown. |
| settings_activity_types_listA | List one requested page of timesheet activity types with active-state, date, and sort controls. Use the get tool for one known type ID. |
| settings_activities_exportA | Read the incremental timesheet-activity export feed for Settings workflows. This is the same feed as export_activities; use whichever name is available and do not fetch both. Continue immediately with continueFrom while hasMore is true; when false, retain it and wait before polling again. includeRecentChanges may repeat records. |
| settings_tasks_getA | Retrieve one task by its required ID. Use settings_tasks_list to search when the ID is unknown. |
| settings_tasks_listA | List one requested page of employee tasks using status, assignment, related-record, date, priority, and other filters. Use settings_tasks_get for one known task ID; statuses is preferred over deprecated isClosed. |
| settings_user_roles_listA | List one requested page of user roles, optionally filtered by IDs, name, active state, creation date, or employee type. Use this catalog to resolve role IDs and availability. |
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 264 tools
There are multiple near-identical and explicitly duplicated tools, including export_employees/people_employees_export, export_activities/settings_activities_export, marketing_calls_v2_list/marketing_calls_v3_list, and dispatch_job_cancel_reasons_list/dispatch_jobs_cancel_reasons_list. Many descriptions try to disambiguate, but the sheer number of overlapping feeds and singular/plural variants makes misselection likely.
Most tools follow a readable lowercase snake_case domain_entity_verb pattern, but conventions are mixed: top-level export_* feeds coexist with *_export alias tools, v2/v3 suffixes appear inconsistently, and names like marketing_scheduler_schedulersessions or crm_bookings_provider_contacts_list break the rhythm. The naming is not chaotic, but it is not uniform enough for a higher score.
With 264 tools, this is an extreme count even for a broad ServiceTitan integration. The surface includes dozens of near-duplicate export feeds, catalog/list/get variants, and custom intel tools that could have been consolidated. This volume will overwhelm agents and makes tool selection impractical.
The read/list/export coverage is broad across CRM, dispatch, accounting, inventory, payroll, marketing, and pricebook, but the entire surface is read-only with no create, update, or delete operations. There are also odd gaps where entities only have exports or only have list/get tools, and several duplicate feeds suggest an incomplete or inconsistent lifecycle model.