Service Fusion MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SF_CLIENT_ID | Yes | Your Service Fusion client ID | |
| SF_CLIENT_SECRET | Yes | Your Service Fusion 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": true
} |
| logging | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_todays_jobsA | Get all jobs scheduled for today, including assigned technicians. |
| search_jobsA | Search jobs with flexible filters: status, customer, address, contact, category, source, dates, job/PO number. |
| get_job_detailsA | Get complete details for a single job by internal ID or display number, including techs, tasks, notes, charges, and visit history. |
| get_customer_jobsA | Get all jobs for a customer by name, sorted by most recent first. Use search_customers first to find the exact name. |
| create_jobA | Create a new service job. Requires an exact customer name, category, and status. |
| search_customersA | Search for customers by name, contact name, phone, email, address, city, or zip/postal code. Returns matching customer records. |
| get_customer_detailsA | Get a single customer's full record by internal ID, including contacts, locations, and custom fields. |
| create_customerA | Create a new customer record. Contacts/locations can't be set here — Service Fusion publishes no item schema for those fields; add them via the web UI instead. A 403 response means these credentials lack permission to create customers, and the same web UI must be used. |
| search_estimatesB | Search estimates with filters: status, customer, contact, address, category, source, PO number, dates. |
| get_estimate_detailsA | Get complete details for a single estimate by internal ID, including line items, techs, notes, and payments. |
| create_estimateA | Create a new estimate. Requires an exact customer name and category. |
| search_invoicesA | List invoices, sorted and paginated. NOTE: Service Fusion's /invoices endpoint documents no server-side filters — customer_name, if provided, is applied as a client-side substring match against the fetched page, not a server-side query. |
| get_invoice_detailsA | Get a single invoice's full record by internal ID. |
| get_calendar_tasksA | List calendar tasks (reminders/appointments tied to users, customers, jobs, or estimates), sorted and paginated. NOTE: Service Fusion's /calendar-tasks endpoint documents no server-side filters — use the returned users_id/customers_id/jobs_id/estimates_id fields to correlate manually. |
| get_calendar_task_detailsA | Get a single calendar task's full record by internal ID, including its repeat rule if any. |
| get_equipmentA | Get equipment records for a customer (type, make, model, serial, warranty, custom fields). Requires customer_id or customer_name. Optionally fetch a single record via equipment_id. |
| get_techsA | List all technicians. Returns names, contact info, and role flags. Cached 30 minutes. |
| get_tech_detailsA | Get a single technician's full record by internal ID. |
| get_job_categoriesA | List all available job categories (e.g., 'Commercial Service', 'Residential Install'). Use these values when creating jobs/estimates or filtering by category. Cached 30 minutes. |
| get_job_statusesA | List all available job statuses. Useful for knowing valid status values when filtering or creating jobs. Cached 30 minutes. |
| get_sourcesA | List all available lead sources. Use these values when creating jobs, estimates, or customers. Cached 30 minutes. |
| get_payment_typesA | List all available payment types (e.g., credit card, check, cash). Use these values for the payment_type field on create_job, create_customer, or create_estimate. Cached 30 minutes. |
| get_meA | Get the currently authenticated user's info. Useful for verifying API connectivity and credentials. |
| get_api_docsA | Look up the Service Fusion API reference. Sections: index, jobs, customers, estimates, invoices, calendar-tasks, techs, equipment, job-categories, job-statuses, sources, payment-types, data-types, authentication, known-issues, me, full. Each named section returns only the primary list/create endpoint doc for that resource — related sub-resource endpoints (e.g. /jobs/{job-id}) are not included. Use section='full' if you need sub-resource or {id}-endpoint detail. |
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 24 tools
Most tools map cleanly to a specific resource and action, such as search_customers vs get_customer_details or create_job vs get_job_details. The main ambiguity is among search_jobs, get_customer_jobs, and get_todays_jobs, which all return job lists, though their descriptions do clarify the intended use case.
Tool names consistently follow a get_/search_/create_ plus resource noun pattern in snake_case. Minor special cases like get_me, get_todays_jobs, and get_api_docs are still readable and do not break the overall naming system.
24 tools is on the heavy side and falls within the borderline 16-25 range. Many tools are justified by the breadth of Service Fusion resources, but some are conveniences that overlap with search_jobs, and the number of enum/getter endpoints adds bulk to the surface.
The set covers read and search operations across jobs, customers, estimates, invoices, calendar tasks, equipment, and techs, and supports creating jobs, customers, and estimates. However, there are no update or delete operations for most resources, no invoice creation, and no calendar task creation, leaving some workflows as dead ends.