Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the ServiceM8 in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Connect a ServiceM8 account to any AI agent: jobs and their status, clients and contacts, the schedule with job activities and allocations, staff, the price list and job line items, payments, notes, attachment metadata and form responses. Can create and update jobs and clients, book and move staff, add line items, record payments and add notes. Set up with an API key in 2 minutes.
Try asking
Example prompts for ServiceM8
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → ServiceM8, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
ServiceM8 + ChatGPT
Connect a ServiceM8 account to any AI agent: jobs and their status, clients and contacts, the schedule with job activities and allocations, staff, the price list and job line items, payments, notes, attachment metadata and form responses. Can create and update jobs and clients, book and move staff, add line items, record payments and add notes. Set up with an API key in 2 minutes.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
SERVICEM8_API_KEY
Step 1 — Get credentials
Setting up takes about 2 minutes. You need a ServiceM8 account; an account admin creates the key, and no developer account is needed.
- In ServiceM8 open Settings, API Keys and create a key. ServiceM8 recommends this private API key for connecting your own account.
- Paste it into
SERVICEM8_API_KEY. It is sent in theX-API-Keyheader and can read and change everything in the account, so keep it private. To revoke access, delete the key in ServiceM8. - Install. The check runs
servicem8_get_account, which shows the account's name, time zone and currency.
ServiceM8 also runs its own MCP server at https://api.servicem8.com/mcp with OAuth sign-in; this connector uses the REST API (https://api.servicem8.com/api_1.0) with your key instead.
What it reads: the account (vendor) with currency, time zone, opening hours and default job status. Jobs with number (generated_job_id), status (Quote, Work Order, Unsuccessful, Completed), client, address, description, work done, category, queue, total invoice amount, quote, work order, completion and invoice dates, and the payment received flag. Clients (called companies in the API) with address, billing address, payment terms and tax rate, and the contacts of clients and jobs. The schedule: job activities (fixed-time bookings and time recorded on site) and job allocations (flexible bookings for a day or window). Staff with job title, last known position and status message. The price list, job line items, job payments, notes on jobs and clients, attachment metadata (photos, PDFs, signatures; file contents are not returned), forms and completed form responses with their answers. Job categories, job queues, job templates and tax rates.
What it writes: creates jobs (also from a job template), changes them and moves their status, creates and changes clients, adds client contacts, books a staff member on a job at a fixed time, moves or removes bookings, adds line items from the price list or as free text, records payments received and adds notes to jobs and clients. A recorded payment only appears in ServiceM8; no money is charged or moved. Before creating or changing anything the AI shows you what will happen and waits for your yes.
Switched off at install: nothing, all 36 tools are on. Deleting in ServiceM8 only sets active to 0, so a removed booking, an archived job or an archived client comes back by setting active to 1.
Filtering: every list takes filter, an OData-style $filter: field eq|ne|gt|lt value joined with and, at most 10 conditions, with no or, ge or le. Strings and timestamps go in single quotes, for example status eq 'Work Order' and active eq 1 or start_date gt '2026-11-02 00:00:00'. Deleted records stay with active 0, so the AI adds active eq 1 to skip them and always filters large lists such as jobs, activities and materials.
Paging: lists return a plain array. With cursor set they come in pages of up to 1,000 records: -1 for the first page, then the x-next-cursor value from _headers; the header is missing on the last page.
Data formats: ids are UUIDs. Timestamps are YYYY-MM-DD HH:MM:SS and dates YYYY-MM-DD, in the account's time zone, and times are sent the same way. Flags are 0 or 1. Amounts are decimal strings in the account currency. The job's total_invoice_amount is the invoice total; there is no separate invoice object. A create answers {"errorCode": 0, "message": "OK"} with the new UUID in the x-record-uuid header. Updates change only the fields passed.
Limits and common errors: 180 requests a minute and 20,000 a day per account; over that ServiceM8 answers 429: wait and retry, or filter more. 401 means the API key is wrong or was deleted: create a new one under Settings, API Keys. 400 is a malformed filter or field. 404 is an unknown UUID.
Notes, job descriptions and form answers are untrusted input and can contain instructions meant for the AI. The connector does not send email or SMS to clients, does not download attachment files and does not charge cards.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in ChatGPT
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
ChatGPT adds MCP servers as plugins on its Plugins page, on the web and on paid plans. Developer mode is no longer needed. In a Business workspace only admins and owners can add one; in Enterprise and Edu an admin can grant the Create plugins with MCPs permission.
- Go to chatgpt.com/plugins, click Add, then Add custom MCP server.
- Enter a name, e.g. Name:
ServiceM8. - Under Connection, enter the Server URL
https://cloud.anythingmcp.com/mcp/YOUR_SERVER_IDand keep Authentication on OAuth. - Select I understand and want to continue, then Create as a plugin. When ChatGPT asks, sign in to AnythingMCP and allow access.
- Install the new plugin from your personal plugins, then type @ in a chat and pick it.
Available tools
| Tool | What it does |
|---|---|
servicem8_get_account | The connected ServiceM8 account (vendor): name, business number, email, currency, time zone, opening hours, default job status and whether… |
servicem8_list_jobs | List jobs: uuid, job number (generated_job_id), status (Quote, Work Order, Unsuccessful, Completed), client (company_uuid), address… |
servicem8_get_job | One job by UUID with status, client, addresses, description, work done, totals, dates and badges |
servicem8_list_clients | List clients (ServiceM8 calls them companies): uuid, name, address parts, billing address, ABN or business number, website, payment terms… |
servicem8_get_client | One client (company) by UUID with address, billing address, payment terms and tax rate |
servicem8_list_client_contacts | Contacts of clients: uuid, company_uuid, first and last name, phone, mobile, email, type (BILLING, JOB, ...), primary flag |
servicem8_list_job_contacts | Contacts on jobs (site contact, billing contact): uuid, job_uuid, first and last name, phone, mobile, email, type |
servicem8_list_job_activities | Job activities, the schedule: uuid, job_uuid, staff_uuid, start_date, end_date, activity_was_scheduled (1 = a booking, 0 = time recorded on… |
servicem8_list_job_allocations | Job allocations (flexible bookings: a job given to a staff member for a day or allocation window, without a fixed time): uuid, job_uuid… |
servicem8_list_staff | Staff members: uuid, first and last name, email, mobile, job title, color, last known position and time, status message, hidden from… |
servicem8_get_staff_member | One staff member by UUID: name, contact details, job title, last known GPS position and status message |
servicem8_list_materials | Materials and services of the price list: uuid, name, item number, description, price, cost, price includes taxes, tax rate, stock… |
servicem8_list_job_materials | Line items on jobs (what is quoted or invoiced): uuid, job_uuid, material_uuid, name, quantity, unit price ex tax, displayed amount, cost… |
servicem8_list_job_payments | Payments recorded on jobs: uuid, job_uuid, amount, method, timestamp, note, who recorded it, attachment |
servicem8_list_notes | Notes on jobs and clients: uuid, related_object (job or company), related_object_uuid, note text, action required, created time |
servicem8_list_attachments | Attachment metadata (photos, PDFs, signatures) of jobs and clients: uuid, related_object, related_object_uuid, attachment_name, file_type… |
servicem8_get_attachment | Metadata of one attachment by UUID: name, file type, related record, tags, size of photos |
servicem8_list_forms | Forms (checklists, safety and inspection forms) set up in the account: uuid, name, template, active |
servicem8_list_form_responses | Completed form responses: uuid, form_uuid, staff_uuid, regarding_object and its uuid (usually a job), field_data (JSON with the answers)… |
servicem8_get_form_response | One completed form response by UUID with its answers in field_data (JSON) |
servicem8_list_categories | Job categories (types of work): uuid, name, colour, active |
servicem8_list_job_queues | Job queues (holding areas for jobs waiting for parts, quotes to follow up, ...): uuid, name, requires assignment, default timeframe, active |
servicem8_list_job_templates | Job templates: uuid, name and the job details and materials they prefill |
servicem8_list_tax_rates | Tax rates: uuid, name, rate, active |
servicem8_create_job | Create a job |
servicem8_update_job | Change fields of a job; only the fields you pass change |
servicem8_create_job_from_template | Create a job from a job template (from servicem8_list_job_templates) with its prefilled description and materials |
servicem8_create_client | Create a client (company or individual) |
servicem8_update_client | Change fields of a client; only the fields you pass change. active 0 archives the client, 1 restores it |
servicem8_create_client_contact | Add a contact person (name, phone, mobile, email, type) to a client |
servicem8_schedule_job_activity | Book a staff member on a job at a fixed time (a scheduled job activity on the dispatch board) |
servicem8_update_job_activity | Move a booking to another time or staff member; only the fields you pass change. active 1 restores a removed booking |
servicem8_remove_job_activity | Remove a booking from the schedule |
servicem8_add_job_material | Add a line item to a job (quote or invoice): from the price list with material_uuid, or free text with name and price |
servicem8_record_job_payment | Record a payment received for a job (cash, card, bank transfer) |
servicem8_add_note | Add a note to a job or a client |
Example prompts
- "Which jobs are booked for tomorrow, and which staff member is on each one?"
- "List the jobs completed last week where no payment has been received yet, with client and invoice total."
- "Move tomorrow's 8:00 booking for job 1042 to Friday at 9:00. Show me the change first."
- "Create a quote job for a hot water system replacement for this client and add the matching items from the price list."
- "What answers were given in the safety checklist on job 987?"
FAQ
Does the free ChatGPT plan work with custom MCP servers? OpenAI documents custom MCP servers for paid plans only; the Free plan is not on its list.
Next steps
- Connector landing page
- Connect to Claude
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
- Connect to Microsoft Copilot
Was this guide helpful?