ServiceM8 logoTrainAR logo
    OAuth via Nango · two-way sync · session notes write-back

    AI training, wired into ServiceM8

    Connect ServiceM8 in two clicks (OAuth via Nango). TrainAR pulls your jobs into the training platform so each one carries the right context onto the glasses, and posts AR session summaries back into the originating ServiceM8 job. Where ServiceM8 publishes a Model Context Protocol server, the on-glasses Core Training Agent can call into it for richer in-job actions.

    What "voice control of ServiceM8" actually looks like

    Engineer is on a boiler swap. Hands are full. Glasses are listening.

    Engineer · 09:42
    "What's on my schedule today after this one?"
    TrainAR Agent → ServiceM8 MCP
    tool: list_jobs { assigned_to: "me", status: "queued", date: "today" }
    Glasses · spoken back
    "Three more after this. 11am Greenstar service in Watford. 2pm tap repair in Hemel. 4pm cylinder swap in St Albans."
    Engineer · 11:14
    "Mark the boiler swap complete. Two hours labour. Add a note that the flue extension needs a cap on the next visit."
    TrainAR Agent → ServiceM8 MCP
    tool: update_job { job_id: 47213, status: "completed", labour_hours: 2 }
    tool: add_job_note { job_id: 47213, body: "Flue extension needs cap on next visit." }
    ServiceM8
    Job 47213 closed. Note attached. Office notified.

    Voice in, action posted to ServiceM8, voice confirmation - the whole loop in under two seconds. The engineer never put a tool down.

    MCP tools available to your AI agents

    What TrainAR is authorised to do in ServiceM8

    When you connect ServiceM8 the OAuth handshake (via Nango) requests these scopes. They are exactly the read and write permissions our backend uses to sync jobs, fetch schedules, and post AR session notes back. The on-glasses agent calls into ServiceM8 within the same authorised surface.

    read_jobs

    Read your ServiceM8 jobs into TrainAR. Used for sync and for letting the on-glasses agent answer 'what's on my schedule?' questions.

    manage_jobs

    Update job status and core fields. Used when an engineer marks a job complete by voice on the glasses.

    read_schedule

    Read the ServiceM8 schedule. Underpins the agent's ability to surface upcoming jobs and warn about double-bookings.

    publish_job_notes

    Post AR session summary notes attributed to the engineer back into the originating ServiceM8 job.

    read_staff

    Match ServiceM8 staff records to TrainAR users by email so each job hits the right engineer's training profile.

    OAuth via Nango

    Tokens never touch TrainAR servers in plain text. Per-tenant scoped access. Revoke from ServiceM8 settings at any time.

    Plus the boring-but-essential job sync

    Two-way job sync runs in the background so the AI features have something to work with.

    ServiceM8TrainAR

    ServiceM8 → TrainAR

    • Jobs imported with customer, address, type and assigned engineer
    • Engineer matched to a TrainAR user via email so the right session opens on the glasses
    • Bundle content surfaces by trade-skill alignment so each engineer sees the procedures relevant to their trade
    TrainARServiceM8

    TrainAR → ServiceM8

    • AR session notes attached to the originating job
    • Photo and video evidence from the glasses uploaded to the job record
    • Status, labour and parts updates posted by voice during the job

    Common ServiceM8 questions

    Do I need ServiceM8's higher-tier plan to use this?+

    Any ServiceM8 plan that allows API access. TrainAR talks to ServiceM8 via OAuth (read_jobs, manage_jobs, read_schedule, read_staff and publish_job_notes scopes) using your normal ServiceM8 account.

    Where does authentication happen?+

    OAuth handshake runs through Nango. ServiceM8 issues a per-tenant token that lives in the Nango vault - TrainAR only holds a reference. You can revoke access from ServiceM8 settings at any time and the integration stops working immediately.

    What if my engineer is offline mid-job?+

    The Core Training Agent on the glasses queues voice updates locally. As soon as connectivity returns the queued calls fire in order so the ServiceM8 job catches up.

    Can I limit what the integration writes to ServiceM8?+

    Yes. The OAuth scopes above are the upper bound. You can also configure read-only mode in TrainAR tenant settings, in which case the agent will tell the engineer when an action would exceed read-only access.

    Connect ServiceM8 to TrainAR

    Two-click OAuth. Sync starts immediately. Voice control from the glasses works as soon as your engineer pairs them.