Integration

ServiceM8 integration

ServiceM8 is field service management software for trades businesses. Manage jobs (quotes, work orders, completed jobs) and create them from job templates; manage clients and their contacts, job contacts, scheduled bookings and recorded time (job activities), allocations, job materials (quote and invoice line items), payments, checklists, tasks, notes and the materials list; triage the inbox and turn messages into jobs; read staff, staff messages and time events, forms and responses, email and SMS history, attachment records and the account; and search records by text or by meaning. Not exposed: attachment file download and upload, add-on notifications and diary items (OAuth add-ons only), webhook subscriptions, asset types, and changes to configuration objects (categories, queues, badges, templates, tax rates and the like are read-only here). Authentication is a ServiceM8 API key (Settings, API Keys) sent in the X-API-Key header.

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in ServiceM8.Built from the 118 ServiceM8 tools below, on the connection you add once.

What you can do with ServiceM8

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

Job, 8 operations

  • convert_inbox_message_to_jobConvert inbox message to jobPOSTConverts an inbox message into a new job, optionally from a job template, and returns the job.
  • create_jobCreate jobPOSTCreates a job. Pass uuid to choose its id: a generated id is only returned in a response header, which this tool does not return.
  • create_job_from_templateCreate job from templatePOSTCreates a job by cloning a job template with its tasks, materials, checklists, quotes and custom fields; job_description, company_uuid or company_name, and job_address can be overridden.
  • delete_jobDelete jobDELETEDeletes a job: ServiceM8 sets its active field to 0, keeps it readable on the API and hides it in the app.
  • get_jobGet jobGETReturns one job by its UUID, with all its fields. Jobs are quotes, work orders, unsuccessful or completed jobs (status).
  • list_jobsList jobsGETLists the jobs in the ServiceM8 account. Jobs are quotes, work orders, unsuccessful or completed jobs (status). Narrow it with $filter, for example active eq 1.
  • search_jobs_semanticSearch jobs semanticGETFinds jobs by meaning rather than exact words (embedding similarity), ranked by similarity; limit up to 50, similarity_threshold from 0 to 1.
  • update_jobUpdate jobPOSTUpdates the job with the given UUID, writing the fields you pass.

Client, 5 operations

  • create_clientCreate clientPOSTCreates a client. Pass uuid to choose its id: a generated id is only returned in a response header, which this tool does not return.
  • delete_clientDelete clientDELETEDeletes a client: ServiceM8 sets its active field to 0, keeps it readable on the API and hides it in the app.
  • get_clientGet clientGETReturns one client by its UUID, with all its fields. Clients are called companies in the API.
  • list_clientsList clientsGETLists the clients in the ServiceM8 account. Clients are called companies in the API. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.
  • update_clientUpdate clientPOSTUpdates the client with the given UUID, writing the fields you pass.

Client contact, 5 operations

  • create_client_contactCreate client contactPOSTCreates a client contact. Pass uuid to choose its id: a generated id is only returned in a response header, which this tool does not return.
  • delete_client_contactDelete client contactDELETEDeletes a client contact: ServiceM8 sets its active field to 0, keeps it readable on the API and hides it in the app.
  • get_client_contactGet client contactGETReturns one client contact by its UUID, with all its fields.
  • list_client_contactsList client contactsGETLists the client contacts in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.
  • update_client_contactUpdate client contactPOSTUpdates the client contact with the given UUID, writing the fields you pass.

Inbox message, 5 operations

  • archive_inbox_messageArchive inbox messagePUTArchives or unarchives an inbox message.
  • attach_inbox_message_to_jobAttach inbox message to jobPOSTAttaches an inbox message to an existing job.
  • create_inbox_messageCreate inbox messagePOSTCreates a new message that appears in the ServiceM8 inbox; subject and message_text are required, and jobData can carry job details used when the message is converted to a job.
  • get_inbox_messageGet inbox messageGETReturns one inbox message by its UUID: sender, subject, text and HTML body, read, snooze and archive state, and the job it was converted to.
  • list_inbox_messagesList inbox messagesGETLists messages in the ServiceM8 inbox, with paging (limit 1 to 500, offset), a status filter and a search over subject, sender name and sender email.

Job activity, 5 operations

  • create_job_activityCreate job activityPOSTCreates a job activity. Pass uuid to choose its id: a generated id is only returned in a response header, which this tool does not return.
  • delete_job_activityDelete job activityDELETEDeletes a job activity: ServiceM8 sets its active field to 0, keeps it readable on the API and hides it in the app.
  • get_job_activityGet job activityGETReturns one job activity by its UUID, with all its fields. A job activity is a scheduled booking when activity_was_scheduled is 1, recorded check-in time when 0.
  • list_job_activitiesList job activitiesGETLists the job activities in the ServiceM8 account. A job activity is a scheduled booking when activity_was_scheduled is 1, recorded check-in time when 0. Narrow it with $filter, for example active eq 1.
  • update_job_activityUpdate job activityPOSTUpdates the job activity with the given UUID, writing the fields you pass.

Job allocation, 5 operations

  • create_job_allocationCreate job allocationPOSTCreates a job allocation. Pass uuid to choose its id: a generated id is only returned in a response header, which this tool does not return.
  • delete_job_allocationDelete job allocationDELETEDeletes a job allocation: ServiceM8 sets its active field to 0, keeps it readable on the API and hides it in the app.
  • get_job_allocationGet job allocationGETReturns one job allocation by its UUID, with all its fields.
  • list_job_allocationsList job allocationsGETLists the job allocations in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.
  • update_job_allocationUpdate job allocationPOSTUpdates the job allocation with the given UUID, writing the fields you pass.

Job checklist item, 5 operations

  • create_job_checklist_itemCreate job checklist itemPOSTCreates a job checklist item. Pass uuid to choose its id: a generated id is only returned in a response header, which this tool does not return.
  • delete_job_checklist_itemDelete job checklist itemDELETEDeletes a job checklist item: ServiceM8 sets its active field to 0, keeps it readable on the API and hides it in the app.
  • get_job_checklist_itemGet job checklist itemGETReturns one job checklist item by its UUID, with all its fields.
  • list_job_checklist_itemsList job checklist itemsGETLists the job checklist items in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.
  • update_job_checklist_itemUpdate job checklist itemPOSTUpdates the job checklist item with the given UUID, writing the fields you pass.

Job contact, 5 operations

  • create_job_contactCreate job contactPOSTCreates a job contact. Pass uuid to choose its id: a generated id is only returned in a response header, which this tool does not return.
  • delete_job_contactDelete job contactDELETEDeletes a job contact: ServiceM8 sets its active field to 0, keeps it readable on the API and hides it in the app.
  • get_job_contactGet job contactGETReturns one job contact by its UUID, with all its fields.
  • list_job_contactsList job contactsGETLists the job contacts in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.
  • update_job_contactUpdate job contactPOSTUpdates the job contact with the given UUID, writing the fields you pass.

Job material, 5 operations

  • create_job_materialCreate job materialPOSTCreates a job material. Pass uuid to choose its id: a generated id is only returned in a response header, which this tool does not return.
  • delete_job_materialDelete job materialDELETEDeletes a job material: ServiceM8 sets its active field to 0, keeps it readable on the API and hides it in the app.
  • get_job_materialGet job materialGETReturns one job material by its UUID, with all its fields. Job materials are the line items of a job's quote or invoice.
  • list_job_materialsList job materialsGETLists the job materials in the ServiceM8 account. Job materials are the line items of a job's quote or invoice. Narrow it with $filter, for example active eq 1.
  • update_job_materialUpdate job materialPOSTUpdates the job material with the given UUID, writing the fields you pass.

Job payment, 5 operations

  • create_job_paymentCreate job paymentPOSTCreates a job payment. Pass uuid to choose its id: a generated id is only returned in a response header, which this tool does not return.
  • delete_job_paymentDelete job paymentDELETEDeletes a job payment: ServiceM8 sets its active field to 0, keeps it readable on the API and hides it in the app.
  • get_job_paymentGet job paymentGETReturns one job payment by its UUID, with all its fields.
  • list_job_paymentsList job paymentsGETLists the job payments in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.
  • update_job_paymentUpdate job paymentPOSTUpdates the job payment with the given UUID, writing the fields you pass.

Material, 5 operations

  • create_materialCreate materialPOSTCreates a material. Pass uuid to choose its id: a generated id is only returned in a response header, which this tool does not return.
  • delete_materialDelete materialDELETEDeletes a material: ServiceM8 sets its active field to 0, keeps it readable on the API and hides it in the app.
  • get_materialGet materialGETReturns one material by its UUID, with all its fields.
  • list_materialsList materialsGETLists the materials in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.
  • update_materialUpdate materialPOSTUpdates the material with the given UUID, writing the fields you pass.

Note, 5 operations

  • create_noteCreate notePOSTAdds a note to a record: related_object names the record type (for example job) and related_object_uuid its UUID; note holds the text.
  • delete_noteDelete noteDELETEDeletes a note: ServiceM8 sets its active field to 0, keeps it readable on the API and hides it in the app.
  • get_noteGet noteGETReturns one note by its UUID, with its text and the record it is attached to.
  • list_notesList notesGETLists the notes in the account, each attached to a record by related_object (its type, for example job) and related_object_uuid. Narrow the list with $filter, for example related_object_uuid eq '<job uuid>'.
  • update_noteUpdate notePOSTUpdates the note with the given UUID, writing the fields you pass.

Task, 5 operations

  • create_taskCreate taskPOSTCreates a task. Pass uuid to choose its id: a generated id is only returned in a response header, which this tool does not return.
  • delete_taskDelete taskDELETEDeletes a task: ServiceM8 sets its active field to 0, keeps it readable on the API and hides it in the app.
  • get_taskGet taskGETReturns one task by its UUID, with all its fields.
  • list_tasksList tasksGETLists the tasks in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.
  • update_taskUpdate taskPOSTUpdates the task with the given UUID, writing the fields you pass.

Staff message, 3 operations

  • create_staff_messageCreate staff messagePOSTCreates a staff message. Pass uuid to choose its id: a generated id is only returned in a response header, which this tool does not return.
  • get_staff_messageGet staff messageGETReturns one staff message by its UUID, with all its fields.
  • list_staff_messagesList staff messagesGETLists the staff messages in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Asset, 2 operations

  • get_assetGet assetGETReturns one asset by its UUID, with all its fields.
  • list_assetsList assetsGETLists the assets in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Attachment, 2 operations

  • get_attachmentGet attachmentGETReturns one attachment record by its UUID: file name, file type and the record it belongs to. File bytes are not returned.
  • list_attachmentsList attachmentsGETLists attachment records (quotes, invoices, work orders and photos in job diaries): file name, type and the record each belongs to. File bytes are not returned.

Email, 2 operations

  • get_job_emailGet job emailGETReturns one job email record by its UUID.
  • list_job_emailsList job emailsGETLists the email history of jobs, inbound and outbound merged. Narrow it with $filter, for example related_object_uuid eq '<job uuid>', and cap it with limit; later pages cannot be fetched.

Feedback record, 2 operations

  • get_feedback_recordGet feedback recordGETReturns one feedback record by its UUID, with all its fields.
  • list_feedback_recordsList feedback recordsGETLists the feedback records in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Form, 2 operations

  • get_formGet formGETReturns one form by its UUID, with all its fields.
  • list_formsList formsGETLists the forms in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Form response, 2 operations

  • get_form_responseGet form responseGETReturns one form response by its UUID, with all its fields.
  • list_form_responsesList form responsesGETLists the form responses in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Job category, 2 operations

  • get_job_categoryGet job categoryGETReturns one job category by its UUID, with all its fields.
  • list_job_categoriesList job categoriesGETLists the job categories in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Job queue, 2 operations

  • get_job_queueGet job queueGETReturns one job queue by its UUID, with all its fields.
  • list_job_queuesList job queuesGETLists the job queues in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Job template, 2 operations

  • get_job_templateGet job templateGETReturns one job template by its UUID, with all its fields.
  • list_job_templatesList job templatesGETLists the job templates in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Knowledge article, 2 operations

  • get_knowledge_articleGet knowledge articleGETReturns one knowledge article by its UUID, with all its fields.
  • list_knowledge_articlesList knowledge articlesGETLists the knowledge articles in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Location, 2 operations

  • get_locationGet locationGETReturns one location by its UUID, with all its fields.
  • list_locationsList locationsGETLists the locations in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Material bundle, 2 operations

  • get_material_bundleGet material bundleGETReturns one material bundle by its UUID, with all its fields.
  • list_material_bundlesList material bundlesGETLists the material bundles in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Record, 2 operations

  • searchSearchGETSearches text across jobs, clients and materials at once and returns the matches sorted by relevance, each with its type, UUID, title and highlighted snippets.
  • search_by_typeSearch by typeGETSearches text within one object type: job, company, material, knowledgearticle, attachment, formresponse, asset or materialbundle.

Service template, 2 operations

  • get_service_templateGet service templateGETReturns one editable or published Service record by its UUID.
  • list_service_templatesList service templatesGETLists editable and published Service records (service templates), inactive ones included; narrow with $filter.

Sms, 2 operations

  • get_job_smsGet job smsGETReturns one job SMS record by its UUID.
  • list_job_smsList job smsGETLists the SMS history of jobs, inbound and outbound merged. Narrow it with $filter, for example related_object_uuid eq '<job uuid>', and cap it with limit; later pages cannot be fetched.

Staff member, 2 operations

  • get_staff_memberGet staff memberGETReturns one staff member by its UUID, with all its fields.
  • list_staff_membersList staff membersGETLists the staff members in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Staff time event, 2 operations

  • get_staff_time_eventGet staff time eventGETReturns one staff time event by its UUID, with all its fields.
  • list_staff_time_eventsList staff time eventsGETLists the staff time events in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Supplier, 2 operations

  • get_supplierGet supplierGETReturns one supplier by its UUID, with all its fields.
  • list_suppliersList suppliersGETLists the suppliers in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Tax rate, 2 operations

  • get_tax_rateGet tax rateGETReturns one tax rate by its UUID, with all its fields.
  • list_tax_ratesList tax ratesGETLists the tax rates in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Account, 1 operation

  • get_accountGet accountGETReturns the ServiceM8 account (the API calls it the vendor): business name and number, email, billing address, currency, time zone, opening hours and invoice terms.

Allocation window, 1 operation

  • list_allocation_windowsList allocation windowsGETLists the allocation windows in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Availability, 1 operation

  • list_availabilitiesList availabilitiesGETLists the availabilities in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Badge, 1 operation

  • list_badgesList badgesGETLists the badges in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Document template, 1 operation

  • list_document_templatesList document templatesGETLists the document templates in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Email template, 1 operation

  • list_email_templatesList email templatesGETLists the email templates in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Form field, 1 operation

  • list_form_fieldsList form fieldsGETLists the form fields in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Security role, 1 operation

  • list_security_rolesList security rolesGETLists the security roles in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Sms template, 1 operation

  • list_sms_templatesList sms templatesGETLists the SMS templates in the ServiceM8 account. Deleted records stay listed with active 0; narrow the list with $filter (eq, ne, gt, lt joined by and, up to 10 conditions), for example active eq 1.

Use ServiceM8 from Claude Code, Cursor or Codex

Connect ServiceM8 in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its ServiceM8 operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect ServiceM8

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect ServiceM8 once

    Add your ServiceM8 connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

ServiceM8 integration FAQ

What can you do with the ServiceM8 integration?

LiveContext exposes 118 operations on ServiceM8, covering job, client, client contact and inbox message.

Popular integrations

Browse the whole catalog