Connectors · Logistics & field service
ServiceM8 MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to ServiceM8 and the rest of your systems. It gives your agent 225 ServiceM8 actions (100 reads, 86 writes and 39 that wait for a confirmation) and holds the ServiceM8 credential itself, so the agent never does. It paces ServiceM8's limits and records every call.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcpdo { action: "servicem8.company_contacts.list", intent: "check which ServiceM8 account is connected"}# List all Company Contacts · read · 1 upstream call- 225actionsin one signed file
- 100readlook, never change
- 86writecreate and update
- 39wait for a yesdestructive, confirmed first
Set up
Connect ServiceM8 in three steps.
- 01
Add actionlake to Claude.
Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
https://connect.actionlake.com/mcp - 02
Connect ServiceM8.
API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
api_keyServiceM8 API key: in ServiceM8 go to Settings > API Keys and generate a key
account { op: "connections.requirements", service: "servicem8" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "servicem8.company_contacts.list" }# list all company contacts · read · 1 upstream callcheck { action: "servicem8.company_contacts.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
ServiceM8 at a glance
- Sign-in
- API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
- You provide
api_key- Limits we pace to
- 180 calls a minute and 20,000 a day, per connection
- API covered
- ServiceM8 REST API 1.0 (OpenAPI 3.1, per-operation definitions from developer.servicem8.com)
api.servicem8.com - Built from
- ServiceM8's documentation, read 23 October 2026developer.servicem8.comdeveloper.servicem8.com
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 98 of 100 reads, for up to 5 minutes; a write clears what it affects
- Shared entities
- 7, so ask can line ServiceM8 up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in ServiceM8.
225 actions in 54 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 100readlook, never change
- 86writecreate and update
- 39destructivewait for a confirmation
Inbox messages
92 read · 7 write · 0 destructive
Add note to message · Convert message to job · Create a new inbox message · List inbox messages
Allocation windows
52 read · 2 write · 1 destructive
Create a new Allocation Window · List all Allocation Windows · Retrieve an Allocation Window · Update an Allocation Window
Asset type fields
52 read · 2 write · 1 destructive
Create a new Asset Type Field · List all Asset Type Fields · Retrieve an Asset Type Field · Update an Asset Type Field
Asset types
52 read · 2 write · 1 destructive
List all Asset Types · Create a new Asset Type · Update an Asset Type · Retrieve an Asset Type
Attachments
52 read · 2 write · 1 destructive
Create a new Attachment · List all Attachments · Retrieve an Attachment · Update an Attachment
Availabilities
52 read · 2 write · 1 destructive
Create a new Availability · List all Availabilities · Retrieve an Availability · Update an Availability
Badges
52 read · 2 write · 1 destructive
Create a new Badge · List all Badges · Retrieve a Badge · Update a Badge
Categories
52 read · 2 write · 1 destructive
Create a new Category · List all Categories · Retrieve a Category · Update a Category
46 more areas · 181 actions
- Companies 5
- Company contacts 5
- Document templates 5
- Email templates 5
- Feedback 5
- Form fields 5
- Form responses 5
- Forms 5
- Job activities 5
- Job allocations 5
- Job checklists 5
- Job contacts 5
- Job material bundles 5
- Job materials 5
- Job payments 5
- Job queues 5
- Jobs 5
- Knowledge articles 5
- Locations 5
- Material bundles 5
- Materials 5
- Notes 5
- SMS templates 5
- Staff 5
- Staff messages 5
- Suppliers 5
- Tasks 5
- Tax rates 5
- Assets 4
- Service templates 4
- Webhook subscriptions 4
- Addon secrets 3
- Job templates 3
- Search 3
- Addon SDK 2
- Addons 2
- Emails 2
- Job admin activities 2
- Security roles 2
- SMS messages 2
- Staff time events 2
- Vendors 2
- Accounts 1
- Addon deployments 1
- Addon log sessions 1
- Feed posts 1
Top actions
The ServiceM8 API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 74 of ServiceM8's 74 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
servicem8.company_contacts.listList all Company Contacts | List all Company Contacts. | read | crm.contact.list177 connectors |
servicem8.companies.listList all Clients | List all Clients. | read | crm.company.list162 connectors |
servicem8.tasks.listList all Tasks | List all Tasks. | read | work.task.list122 connectors |
servicem8.assets.listList all Assets | List all Assets. | read | asset.asset.list42 connectors |
servicem8.suppliers.listList all Suppliers | List all Suppliers. | read | asset.supplier.list41 connectors |
servicem8.staff.listList all Staff Members | List all Staff Members. | read | hr.employee.list61 connectors |
servicem8.company_contacts.createCreate a new Company Contact | Create a new Company Contact. | write | crm.contact.create161 connectors |
servicem8.companies.createCreate a new Client | Create a new Client. | write | crm.company.create142 connectors |
servicem8.tasks.createCreate a new Task | Create a new Task. | write | work.task.create127 connectors |
servicem8.suppliers.createCreate a new Supplier | Create a new Supplier. | write | asset.supplier.create31 connectors |
servicem8.staff.createCreate a new Staff Member | Create a new Staff Member. | write | hr.employee.create51 connectors |
servicem8.company_contacts.deleteDelete a Company Contact | Delete a Company Contact. | destructive | crm.contact.delete147 connectors |
Try it
Prompts to paste into Claude.
Each one names the ServiceM8 actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Which ServiceM8 tickets have been open the longest? Show me the ten oldest with their status.
calls
servicem8.jobs.list - Writewrite
Create a new Company Contact in ServiceM8. Show me exactly what you will send before you save it.
calls
servicem8.company_contacts.create - Across systemsread
Which ServiceM8 companies have invoices in ConnectWise PSA, and how many each?
calls
servicem8.companies.listconnectwise_manage.invoices.list
Across your systems
ServiceM8, joined to the rest of your business.
One ask fetches from ServiceM8 and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.
Which ServiceM8 companies have invoices in ConnectWise PSA, and how many each?
servicem8.companies.list+connectwise_manage.invoices.list, oncrm.company· ConnectWise PSAWhich ServiceM8 companies have invoices in NetSuite, and how many each?
servicem8.companies.list+netsuite.views.invoices, oncrm.company· NetSuite
crm.company 227crm.contact 192work.task 105hr.employee 63service.ticket 62asset.asset 40asset.supplier 38ask { intent: "which ServiceM8 companies have invoices in ConnectWise PSA, and how many each", steps: [ { action: "servicem8.companies.list", as: "co", input: {}, limit: 100, max_pages: 5 }, { action: "connectwise_manage.invoices.list", as: "inv", input: {}, limit: 100, max_pages: 5 }, { join: { left: "co", right: "inv", on: "crm.company", group_by: "co.name", select: ["co.name", "count(inv.id) as invoices"] } } ]}Governance for ServiceM8
Destructive actions wait for a yes.
39 ServiceM8 actions are destructive. The first 10:
- Delete a Company Contact
servicem8.company_contacts.delete - Delete a Client
servicem8.companies.delete - Delete a Task
servicem8.tasks.delete - Delete an Asset
servicem8.assets.delete - Delete a Supplier
servicem8.suppliers.delete - Delete a Staff Member
servicem8.staff.delete - Delete a Job Payment
servicem8.job_payments.delete - Delete an Asset Type
servicem8.asset_types.delete - Delete a Form
servicem8.forms.delete - Delete a Form Response
servicem8.form_responses.delete
A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.
Delete a Company Contact?
intent: the user asked me to delete a Company Contact
account { op: "keys.create", name: "servicem8-agent", allowed_actions: ["servicem8.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "servicem8.company_contacts.delete", approver: "[email protected]" }, { match: "servicem8.companies.delete", approver: "[email protected]" }, { match: "servicem8.tasks.delete", approver: "[email protected]" } ]}Cost
What ServiceM8 costs on actionlake.
Every ServiceM8 action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call ServiceM8 refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
- 1upstream call per actionall 225 ServiceM8 actions
- 225actions pageeach page of a long list is one call
- 98reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every ServiceM8 action.
225 actions by area: the id your agent calls, what it does, and its effect.
Inbox messages9
servicem8.inbox_messages.add_noteAdd note to messagewriteservicem8.inbox_messages.archiveArchive or unarchive messagewriteservicem8.inbox_messages.attach_to_jobAttach message to existing jobwriteservicem8.inbox_messages.convert_to_jobConvert message to jobwriteservicem8.inbox_messages.createCreate a new inbox messagewriteservicem8.inbox_messages.getGet inbox message detailsreadservicem8.inbox_messages.listList inbox messagesreadservicem8.inbox_messages.mark_readMark message as readwriteservicem8.inbox_messages.snoozeSnooze or unsnooze messagewrite
Allocation windows5
servicem8.allocation_windows.createCreate a new Allocation Windowwriteservicem8.allocation_windows.deleteDelete an Allocation Windowdestructiveservicem8.allocation_windows.getRetrieve an Allocation Windowreadservicem8.allocation_windows.listList all Allocation Windowsreadservicem8.allocation_windows.updateUpdate an Allocation Windowwrite
Asset type fields5
servicem8.asset_type_fields.createCreate a new Asset Type Fieldwriteservicem8.asset_type_fields.deleteDelete an Asset Type Fielddestructiveservicem8.asset_type_fields.getRetrieve an Asset Type Fieldreadservicem8.asset_type_fields.listList all Asset Type Fieldsreadservicem8.asset_type_fields.updateUpdate an Asset Type Fieldwrite
Asset types5
servicem8.asset_types.createCreate a new Asset Typewriteservicem8.asset_types.deleteDelete an Asset Typedestructiveservicem8.asset_types.getRetrieve an Asset Typereadservicem8.asset_types.listList all Asset Typesreadservicem8.asset_types.updateUpdate an Asset Typewrite
Attachments5
servicem8.attachments.createCreate a new Attachmentwriteservicem8.attachments.deleteDelete an Attachmentdestructiveservicem8.attachments.getRetrieve an Attachmentreadservicem8.attachments.listList all Attachmentsreadservicem8.attachments.updateUpdate an Attachmentwrite
Availabilities5
servicem8.availabilities.createCreate a new Availabilitywriteservicem8.availabilities.deleteDelete an Availabilitydestructiveservicem8.availabilities.getRetrieve an Availabilityreadservicem8.availabilities.listList all Availabilitiesreadservicem8.availabilities.updateUpdate an Availabilitywrite
Badges5
servicem8.badges.createCreate a new Badgewriteservicem8.badges.deleteDelete a Badgedestructiveservicem8.badges.getRetrieve a Badgereadservicem8.badges.listList all Badgesreadservicem8.badges.updateUpdate a Badgewrite
Categories5
servicem8.categories.createCreate a new Categorywriteservicem8.categories.deleteDelete a Categorydestructiveservicem8.categories.getRetrieve a Categoryreadservicem8.categories.listList all Categoriesreadservicem8.categories.updateUpdate a Categorywrite
Companies5
servicem8.companies.createCreate a new Clientwriteservicem8.companies.deleteDelete a Clientdestructiveservicem8.companies.getRetrieve a Clientreadservicem8.companies.listList all Clientsreadservicem8.companies.updateUpdate a Clientwrite
Company contacts5
servicem8.company_contacts.createCreate a new Company Contactwriteservicem8.company_contacts.deleteDelete a Company Contactdestructiveservicem8.company_contacts.getRetrieve a Company Contactreadservicem8.company_contacts.listList all Company Contactsreadservicem8.company_contacts.updateUpdate a Company Contactwrite
Document templates5
servicem8.document_templates.createCreate a new Document Templatewriteservicem8.document_templates.deleteDelete a Document Templatedestructiveservicem8.document_templates.getRetrieve a Document Templatereadservicem8.document_templates.listList all Document Templatesreadservicem8.document_templates.updateUpdate a Document Templatewrite
Email templates5
servicem8.email_templates.createCreate a new Email Templatewriteservicem8.email_templates.deleteDelete an Email Templatedestructiveservicem8.email_templates.getRetrieve an Email Templatereadservicem8.email_templates.listList all Email Templatesreadservicem8.email_templates.updateUpdate an Email Templatewrite
Feedback5
servicem8.feedback.createCreate a new Feedbackwriteservicem8.feedback.deleteDelete a Feedbackdestructiveservicem8.feedback.getRetrieve a Feedbackreadservicem8.feedback.listList all Feedbackreadservicem8.feedback.updateUpdate a Feedbackwrite
Form fields5
servicem8.form_fields.createCreate a new Form Fieldwriteservicem8.form_fields.deleteDelete a Form Fielddestructiveservicem8.form_fields.getRetrieve a Form Fieldreadservicem8.form_fields.listList all Form Fieldsreadservicem8.form_fields.updateUpdate a Form Fieldwrite
Form responses5
servicem8.form_responses.createCreate a new Form Responsewriteservicem8.form_responses.deleteDelete a Form Responsedestructiveservicem8.form_responses.getRetrieve a Form Responsereadservicem8.form_responses.listList all Form Responsesreadservicem8.form_responses.updateUpdate a Form Responsewrite
Forms5
servicem8.forms.createCreate a new Formwriteservicem8.forms.deleteDelete a Formdestructiveservicem8.forms.getRetrieve a Formreadservicem8.forms.listList all Formsreadservicem8.forms.updateUpdate a Formwrite
Job activities5
servicem8.job_activities.createCreate a new Job Activitywriteservicem8.job_activities.deleteDelete a Job Activitydestructiveservicem8.job_activities.getRetrieve a Job Activityreadservicem8.job_activities.listList all Job Activitiesreadservicem8.job_activities.updateUpdate a Job Activitywrite
Job allocations5
servicem8.job_allocations.createCreate a new Job Allocationwriteservicem8.job_allocations.deleteDelete a Job Allocationdestructiveservicem8.job_allocations.getRetrieve a Job Allocationreadservicem8.job_allocations.listList all Job Allocationsreadservicem8.job_allocations.updateUpdate a Job Allocationwrite
Job checklists5
servicem8.job_checklists.createCreate a new Job Checklistwriteservicem8.job_checklists.deleteDelete a Job Checklistdestructiveservicem8.job_checklists.getRetrieve a Job Checklistreadservicem8.job_checklists.listList all Job Checklistsreadservicem8.job_checklists.updateUpdate a Job Checklistwrite
Job contacts5
servicem8.job_contacts.createCreate a new Job Contactwriteservicem8.job_contacts.deleteDelete a Job Contactdestructiveservicem8.job_contacts.getRetrieve a Job Contactreadservicem8.job_contacts.listList all Job Contactsreadservicem8.job_contacts.updateUpdate a Job Contactwrite
Job material bundles5
servicem8.job_material_bundles.createCreate a new Job Material Bundlewriteservicem8.job_material_bundles.deleteDelete a Job Material Bundledestructiveservicem8.job_material_bundles.getRetrieve a Job Material Bundlereadservicem8.job_material_bundles.listList all Job Material Bundlesreadservicem8.job_material_bundles.updateUpdate a Job Material Bundlewrite
Job materials5
servicem8.job_materials.createCreate a new Job Materialwriteservicem8.job_materials.deleteDelete a Job Materialdestructiveservicem8.job_materials.getRetrieve a Job Materialreadservicem8.job_materials.listList all Job Materialsreadservicem8.job_materials.updateUpdate a Job Materialwrite
Job payments5
servicem8.job_payments.createCreate a new Job Paymentwriteservicem8.job_payments.deleteDelete a Job Paymentdestructiveservicem8.job_payments.getRetrieve a Job Paymentreadservicem8.job_payments.listList all Job Paymentsreadservicem8.job_payments.updateUpdate a Job Paymentwrite
Job queues5
servicem8.job_queues.createCreate a new Job Queuewriteservicem8.job_queues.deleteDelete a Job Queuedestructiveservicem8.job_queues.getRetrieve a Job Queuereadservicem8.job_queues.listList all Job Queuesreadservicem8.job_queues.updateUpdate a Job Queuewrite
Jobs5
servicem8.jobs.createCreate a new Jobwriteservicem8.jobs.deleteDelete a Jobdestructiveservicem8.jobs.getRetrieve a Jobreadservicem8.jobs.listList all Jobsreadservicem8.jobs.updateUpdate a Jobwrite
Knowledge articles5
servicem8.knowledge_articles.createCreate a new Knowledge Articlewriteservicem8.knowledge_articles.deleteDelete a Knowledge Articledestructiveservicem8.knowledge_articles.getRetrieve a Knowledge Articlereadservicem8.knowledge_articles.listList all Knowledge Articlesreadservicem8.knowledge_articles.updateUpdate a Knowledge Articlewrite
Locations5
servicem8.locations.createCreate a new Locationwriteservicem8.locations.deleteDelete a Locationdestructiveservicem8.locations.getRetrieve a Locationreadservicem8.locations.listList all Locationsreadservicem8.locations.updateUpdate a Locationwrite
Material bundles5
servicem8.material_bundles.createCreate a new Bundlewriteservicem8.material_bundles.deleteDelete a Bundledestructiveservicem8.material_bundles.getRetrieve a Bundlereadservicem8.material_bundles.listList all Bundlesreadservicem8.material_bundles.updateUpdate a Bundlewrite
Materials5
servicem8.materials.createCreate a new Materialwriteservicem8.materials.deleteDelete a Materialdestructiveservicem8.materials.getRetrieve a Materialreadservicem8.materials.listList all Materialsreadservicem8.materials.updateUpdate a Materialwrite
Notes5
servicem8.notes.createCreate a new Notewriteservicem8.notes.deleteDelete a Notedestructiveservicem8.notes.getRetrieve a Notereadservicem8.notes.listList all Notesreadservicem8.notes.updateUpdate a Notewrite
SMS templates5
servicem8.sms_templates.createCreate a new SMS Templatewriteservicem8.sms_templates.deleteDelete an SMS Templatedestructiveservicem8.sms_templates.getRetrieve an SMS Templatereadservicem8.sms_templates.listList all SMS Templatesreadservicem8.sms_templates.updateUpdate an SMS Templatewrite
Staff5
servicem8.staff.createCreate a new Staff Memberwriteservicem8.staff.deleteDelete a Staff Memberdestructiveservicem8.staff.getRetrieve a Staff Memberreadservicem8.staff.listList all Staff Membersreadservicem8.staff.updateUpdate a Staff Memberwrite
Staff messages5
servicem8.staff_messages.createCreate a new Staff Messagewriteservicem8.staff_messages.deleteDelete a Staff Messagedestructiveservicem8.staff_messages.getRetrieve a Staff Messagereadservicem8.staff_messages.listList all Staff Messagesreadservicem8.staff_messages.updateUpdate a Staff Messagewrite
Suppliers5
servicem8.suppliers.createCreate a new Supplierwriteservicem8.suppliers.deleteDelete a Supplierdestructiveservicem8.suppliers.getRetrieve a Supplierreadservicem8.suppliers.listList all Suppliersreadservicem8.suppliers.updateUpdate a Supplierwrite
Tasks5
servicem8.tasks.createCreate a new Taskwriteservicem8.tasks.deleteDelete a Taskdestructiveservicem8.tasks.getRetrieve a Taskreadservicem8.tasks.listList all Tasksreadservicem8.tasks.updateUpdate a Taskwrite
Tax rates5
servicem8.tax_rates.createCreate a new Tax Ratewriteservicem8.tax_rates.deleteDelete a Tax Ratedestructiveservicem8.tax_rates.getRetrieve a Tax Ratereadservicem8.tax_rates.listList all Tax Ratesreadservicem8.tax_rates.updateUpdate a Tax Ratewrite
Assets4
servicem8.assets.deleteDelete an Assetdestructiveservicem8.assets.getRetrieve an Assetreadservicem8.assets.listList all Assetsreadservicem8.assets.updateUpdate an Assetwrite
Service templates4
servicem8.service_templates.deleteSoft-delete a ServiceTemplatedestructiveservicem8.service_templates.getGet a ServiceTemplatereadservicem8.service_templates.listList ServiceTemplatesreadservicem8.service_templates.upsertCreate or update a ServiceTemplatewrite
Webhook subscriptions4
servicem8.webhook_subscriptions.create_eventCreate or Update an Event Webhook Subscriptionwriteservicem8.webhook_subscriptions.create_objectCreate or Update an Object Webhook Subscriptionwriteservicem8.webhook_subscriptions.deleteDelete a Webhook Subscriptiondestructiveservicem8.webhook_subscriptions.listList Webhook Subscriptionsread
Addon secrets3
servicem8.addon_secrets.deleteDelete a secretdestructiveservicem8.addon_secrets.listList secret names for an add-onreadservicem8.addon_secrets.setSet a secretwrite
Job templates3
servicem8.job_templates.create_jobCreate a job from a templatewriteservicem8.job_templates.getRetrieve a Job Templatereadservicem8.job_templates.listList all Job Templatesread
Search3
servicem8.search.generalSearch across multiple object typesreadservicem8.search.jobs_semanticSemantic search for jobsreadservicem8.search.objectsSearch within a specific object typeread
Addon SDK2
servicem8.addon_sdk.get_manifest_schemaGet the add-on manifest v1 JSON Schemareadservicem8.addon_sdk.whoamiIdentify the authenticated accountread
Addons2
servicem8.addons.getFetch one add-on by slugreadservicem8.addons.listList the account's add-onsread
Emails2
servicem8.emails.getGet one job email recordreadservicem8.emails.listList job email historyread
Job admin activities2
servicem8.job_admin_activities.getRetrieve a Job Activityreadservicem8.job_admin_activities.listList all Job Activitiesread
Security roles2
servicem8.security_roles.getRetrieve a Security Rolereadservicem8.security_roles.listList all Security Rolesread
SMS messages2
servicem8.sms_messages.getGet one job SMS recordreadservicem8.sms_messages.listList job SMS historyread
Staff time events2
servicem8.staff_time_events.getRetrieve a Staff Time Eventreadservicem8.staff_time_events.listList all Staff Time Eventsread
Vendors2
servicem8.vendors.getRetrieve a Vendorreadservicem8.vendors.listList all Vendorsread
Accounts1
servicem8.accounts.provisionProvision a new ServiceM8 accountwrite
Addon deployments1
servicem8.addon_deployments.getPoll deployment statusread
Addon log sessions1
servicem8.addon_log_sessions.createStream live logs for one add-on over SSEwrite
Feed posts1
servicem8.feed_posts.createPost a message to the activity feedwrite
Questions
The ServiceM8 MCP server, answered.
Is there a ServiceM8 MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 225 ServiceM8 actions across inbox messages, allocation windows, asset type fields and asset types, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by ServiceM8.
What do I need to connect ServiceM8?
ServiceM8 API key: in ServiceM8 go to Settings > API Keys and generate a key. The free call account { op: "connections.requirements", service: "servicem8" } lists exactly what to paste.
Can an AI agent delete or change things in ServiceM8?
Only if its key allows it, and only with an explicit confirmation. 39 ServiceM8 actions are destructive, including delete a Company Contact, delete a Client and delete a Task. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.
Will an AI agent use up my ServiceM8 API limit?
actionlake paces every call to the limits in the ServiceM8 service file: 180 calls a minute and 20,000 a day per connection. Repeated reads are answered from cache (98 ServiceM8 actions can be), which never reaches ServiceM8.
What does a ServiceM8 action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (225 ServiceM8 actions page). Cache hits, searches, dry runs and calls ServiceM8 refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
Which ServiceM8 API does it cover?
The ServiceM8 REST API 1.0 (OpenAPI 3.1, per-operation definitions from developer.servicem8.com) at api.servicem8.com. It is built from ServiceM8's documentation as read on 23 October 2026. 225 actions in 54 areas, each one in the signed service file (version 1.0.0).
Can I combine ServiceM8 with my other systems?
Yes. ask joins ServiceM8 to ConnectWise PSA or NetSuite on the same customer and returns the answer rather than every row. ServiceM8 maps crm.company, which 227 other connectors also map.
Does actionlake keep my ServiceM8 data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your ServiceM8 credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.
Which AI clients can use it?
Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.
Give your agent ServiceM8 today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.