# Servicem8 — how to use (mcp.ai)

ServiceM8 helps field service businesses schedule jobs, send quotes, and manage invoices, offering staff mobile apps and real-time job status tracking

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_servicem8?ms=1781542560000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `servicem8_create_job_note`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/servicem8`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/servicem8/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/servicem8/create/job/note` — Tool to create a new job note in servicem8. use when you need to attach additional information to a specific job after obtaining its uuid.
  - body: { note: string, uuid?: string, active?: integer, create_date?: string, related_object: string, action_required?: string, related_object_uuid: string, action_completed_by_staff_uuid?: string }
- `POST https://api.mcp.ai/api/servicem8/create/job/payment` — Tool to create a new job payment in servicem8. use when you have collected payment details and need to record payment against a job. example: "create a 100.00 cash payment for job 123e4567-e89b-12d3-a
  - body: { note?: string, uuid?: string, active: integer, amount: string, method: string, job_uuid: string, edit_date: string, timestamp: string, is_deposit?: integer, attachment_uuid?: string, actioned_by_uuid: string }
- `POST https://api.mcp.ai/api/servicem8/create/jobs` — Tool to create a new job in servicem8. use when you have gathered all job details and need to push a record. example: "create a quote job for 123 main st with po #1234."
  - body: { date?: string, active?: integer, badges?: string[], status: string, queue_uuid?: string, job_address: string, company_uuid?: string, category_uuid?: string, job_description?: string, created_by_staff_uuid?: string, purchase_order_number?: string }
- `POST https://api.mcp.ai/api/servicem8/delete/job/note` — Tool to delete a specific job note. use when you need to archive a note by its uuid.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/servicem8/delete/job/payment` — Tool to delete (archive) a specific job payment by its uuid. use when you need to archive a payment record.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/servicem8/list/all/assets` — Tool to list all servicem8 assets. use when you need a comprehensive asset registry, including custom fields, for inventory or reporting.
  - body: { filter?: string }
- `POST https://api.mcp.ai/api/servicem8/list/all/clients` — Tool to list all servicem8 clients. use when you need a complete set of customer records for integrations or reporting.
  - body: { filter?: string }
- `POST https://api.mcp.ai/api/servicem8/list/all/document/templates` — Tool to list document templates. use when you need to retrieve available template uuids and names before generating job documents.
  - body: { limit?: integer, filter?: string, offset?: integer }
- `POST https://api.mcp.ai/api/servicem8/list/all/forms` — Tool to list all servicem8 forms. use when you need to fetch available form templates with optional filters.
  - body: { filter?: string }
- `POST https://api.mcp.ai/api/servicem8/list/all/job/notes` — Tool to list all job notes in servicem8. use when you need to fetch notes, optionally filtered or paginated.
  - body: { limit?: integer, filter?: string, offset?: integer }
- `POST https://api.mcp.ai/api/servicem8/list/all/job/queues` — Tool to list all job queues in servicem8. use when you need to fetch configured queues before dispatching jobs.
- `POST https://api.mcp.ai/api/servicem8/list/all/jobs` — Tool to list all jobs. use when you need to fetch all job records from your servicem8 account.
  - body: { filter?: string }
- `POST https://api.mcp.ai/api/servicem8/list/all/locations` — Tool to list all servicem8 locations. use when you need to fetch every configured location for assignments or mapping.
- `POST https://api.mcp.ai/api/servicem8/list/all/materials` — Tool to list all materials. use when you need a full inventory dump after authenticating with read inventory scope.
- `POST https://api.mcp.ai/api/servicem8/list/all/tasks` — Tool to list all tasks in a servicem8 account. use when you need to fetch task records, optionally filtered. requires 'read tasks' oauth scope.
  - body: { limit?: integer, filter?: string, offset?: integer }
- `POST https://api.mcp.ai/api/servicem8/retrieve/client` — Tool to retrieve details of a specific client by its uuid. use after confirming the client's uuid is valid.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/servicem8/retrieve/form` — Tool to retrieve details of a specific form by its uuid. use when you need up-to-date form metadata given a known form uuid.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/servicem8/retrieve/job` — Tool to retrieve details of a specific job by its uuid. use when you have the job uuid and need its full record.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/servicem8/retrieve/job/activity` — Tool to retrieve details of a specific job activity by its uuid. use when you have the job activity uuid and need its full details.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/servicem8/retrieve/job/note` — Tool to retrieve details of a specific job note by its uuid. use when you have the note uuid (e.g., after listing notes) and need its full record before processing or display.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/servicem8/retrieve/job/payment` — Tool to retrieve details of a specific job payment by its uuid. use when you have the payment uuid and need its full record and metadata.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/servicem8/retrieve/job/queue` — Tool to retrieve details of a specific job queue by its uuid. use when you need full queue metadata before dispatching work.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/servicem8/retrieve/location` — Tool to retrieve details of a specific location by its uuid. use when you already have the location's uuid and need full location details.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/servicem8/retrieve/material` — Tool to retrieve details of a specific material by its uuid. use when you have a material uuid and need current inventory or pricing details.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/servicem8/retrieve/staff/member` — Tool to retrieve details of a specific staff member by their uuid. use when you need up-to-date staff information given a known staff uuid.
  - body: { uuid: string }
- `POST https://api.mcp.ai/api/servicem8/service/m8/create/job` — Tool to create a new job in servicem8. use when you have all job details and need to push a record into servicem8. example: "create a quote job for 123 main st with po #1234."
  - body: { date?: string, active?: integer, badges?: string[], status: string, queue_uuid?: string, job_address: string, company_uuid?: string, category_uuid?: string, job_description?: string, created_by_staff_uuid?: string, purchase_order_number?: string }
- `POST https://api.mcp.ai/api/servicem8/update/job/note` — Tool to update details of an existing job note. use when modifying a note after its creation.
  - body: { note?: string, uuid: string, active?: integer, edit_date?: string }
- `POST https://api.mcp.ai/api/servicem8/update/job/payment` — Tool to update details of an existing job payment. use after confirming the payment uuid and desired changes.
  - body: { note?: string, uuid: string, active?: integer, amount: string, method?: string, job_uuid: string, edit_date?: string, timestamp?: string, is_deposit?: integer, attachment_uuid?: string, actioned_by_uuid?: string }

## More
- Page: https://mcp.ai/servicem8
- Agent spec (llms.txt): https://mcp.ai/servicem8/llms.txt
- Postman collection: https://mcp.ai/servicem8/postman.json
