We're live in beta — earn up to 12,000 credits by signing up today. Get started

ServiceM8 MCP
for AI agents

FloConnector is a hosted ServiceM8 MCP server. Securely connect Claude, ChatGPT and other AI clients to ServiceM8. Ask in plain English; it runs the 167 tools for you, behind one endpoint, with you deciding what it can touch.

Beta. Connect it today and every tool below is live. It is new enough that we are still testing it against real ServiceM8 accounts, so tell us if something looks off and we will fix it fast.

Built in-house. We wrote this connector ourselves and call ServiceM8 directly, with no third party in the path. Nothing in a request or response is retained by anyone but ServiceM8.

Single connection. One ServiceM8 organisation per workspace. Connect another in a separate workspace.

Tools

Everything your AI can do in ServiceM8

167 tools your agent gets the moment ServiceM8 is connected.

167 tools

  • list_jobs read

    List jobs

    List jobs (quotes, work orders, completed and unsuccessful jobs). Supports a $filter expression and pages via cursor.

  • get_job read

    Get job

    Fetch a single job by UUID.

  • create_job write

    Create job

    Create a new job (quote or work order) against a client.

  • update_job write

    Update job

    Update a job's fields, e.g. change its status to move it through the Dispatch Board, place it in a queue, or set its badges.

  • delete_job write

    Delete job

    Archive (soft-delete) a job — sets active to 0. The record stays readable by UUID but this is NOT reversible through the API: ServiceM8 does not accept `active` as a writable field.

  • list_clients read

    List clients

    List clients (companies). Supports a $filter expression and pages via cursor.

  • get_client read

    Get client

    Fetch a single client by UUID.

  • create_client write

    Create client

    Create a new client (company).

  • update_client write

    Update client

    Update a client's fields. Clients cannot be archived through this connection — that hides their whole job and invoice history irreversibly, so do it in the ServiceM8 UI.

  • list_notes read

    List notes

    List notes (e.g. job notes — filter with $filter="related_object eq 'job' and related_object_uuid eq '<uuid>'").

  • get_note read

    Get note

    Fetch a single note by UUID.

  • create_note write

    Create note

    Attach a new note to a job or other object.

  • update_note write

    Update note

    Update a note's text or follow-up action.

  • delete_note write

    Delete note

    Archive (soft-delete) a note — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field.

  • list_job_payments read

    List job payments

    List payments recorded against jobs. Supports a $filter expression, e.g. by job_uuid.

  • get_job_payment read

    Get job payment

    Fetch a single job payment by UUID.

  • create_job_payment write

    Create job payment

    Record a new payment against a job.

  • update_job_payment write

    Update job payment

    Update a recorded job payment's fields.

  • delete_job_payment write

    Delete job payment

    Archive (soft-delete) a job payment — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field. This is a FINANCIAL record, and archiving it does NOT clear the job's payment_received / payment_amount fields — clear those explicitly with servicem8_update_job or the job will still look paid.

  • list_job_queues read

    List job queues

    List dispatch queues (e.g. Workshop, Pending Quotes).

  • get_job_queue read

    Get job queue

    Fetch a single job queue by UUID.

  • create_job_queue write

    Create job queue

    Create a new dispatch queue.

  • update_job_queue write

    Update job queue

    Update a dispatch queue's fields.

  • delete_job_queue write

    Delete job queue

    Archive (soft-delete) a job queue — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field. Account-wide, and note a job cannot be moved OUT of a queue through the API, only between queues — so archiving a queue that still holds jobs leaves them pointing at a dead queue.

  • list_job_activities read

    List job activities (timesheets)

    List job activities — the source for timesheets/labour hours. Filter with $filter, e.g. "activity_was_recorded eq 1 and staff_uuid eq '<uuid>'" for one staff member's actual worked time, or add job_uuid to scope to one job.

  • get_job_activity read

    Get job activity

    Fetch a single job activity by UUID.

  • create_job_activity write

    Create job activity

    Log a new job activity — a scheduled slot (activity_was_scheduled) or a recorded worked-time entry (activity_was_recorded).

  • update_job_activity write

    Update job activity

    Update a job activity's fields, e.g. mark it recorded once the work is actually done.

  • delete_job_activity write

    Delete job activity

    Archive (soft-delete) a job activity — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field. Job activities are the source for timesheets and labour costs, so archiving one changes reported hours.

  • search read

    Search everything

    Free-text search across jobs, companies, and materials in one call, ranked by relevance.

  • search_by_type read

    Search within one object type

    Free-text search scoped to one object type — job, company, material, knowledgearticle, attachment, formresponse, asset, or materialbundle.

  • search_jobs_semantic read

    Semantic job search

    AI embedding-based search for jobs by meaning rather than exact keywords — e.g. "leaking pipe" can match a job described as "fixing a burst tap". Returns a similarity_score per result.

  • list_locations read

    List locations

    List the account's registered locations/sites.

  • get_location read

    Get location

    Fetch a single location by UUID.

  • create_location write

    Create location

    Create a new location/site record.

  • update_location write

    Update location

    Update a location's fields. NOTE ServiceM8 re-geocodes from the address on every update and OVERWRITES lat/lng with its own result — even if you don't send them, and even if they were set explicitly at create. Re-send lat/lng on each update if you need specific coordinates held.

  • delete_location write

    Delete location

    Archive (soft-delete) a location — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field. Account-wide.

  • list_materials read

    List materials

    List the price-book/inventory catalog of materials, products and labour rates.

  • get_material read

    Get material

    Fetch a single material by UUID.

  • create_material write

    Create material

    Add a new material/product/labour rate to the catalog.

  • update_material write

    Update material

    Update a material's fields, e.g. price or stock quantity.

  • delete_material write

    Delete material

    Archive (soft-delete) a material — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field. Account-wide price book: every job line already referencing this material keeps its values, but the catalog entry is gone.

  • list_staff read

    List staff members

    List staff members. Composio's ServiceM8 toolkit only ever exposed retrieve-by-uuid for this resource — this is the list.

  • get_staff read

    Get staff member

    Fetch a single staff member by UUID.

  • update_staff write

    Update staff member

    Update an existing staff member's details — job title, mobile, schedule visibility, dispatch colour, security role or labour rate. Note `email` is also their LOGIN name, so changing it changes how they sign in. Staff members cannot be added or archived through this connection: that allocates or frees a licence seat and emails the person, so it belongs in the ServiceM8 UI.

  • list_tasks read

    List tasks

    List tasks. Supports a $filter expression, e.g. by related_object/related_object_uuid or assigned_to_staff_uuid.

  • get_task read

    Get task

    Fetch a single task by UUID.

  • create_task write

    Create task

    Create a new task against a job or other object (related_object and related_object_uuid are both required in practice, despite the docs). SIDE EFFECT: a task on a job also creates a JobChecklist item with its own separate UUID, and servicem8_delete_task does NOT remove it — check servicem8_list_job_checklists if you later clean up. Note ServiceM8 also shifts due_date forward by a day on each write.

  • update_task write

    Update task

    Update a task's fields, e.g. mark it complete.

  • delete_task write

    Delete task

    Archive (soft-delete) a task — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field. This leaves behind the JobChecklist item that creating the task also generated — archive that separately with servicem8_delete_job_checklist.

  • list_forms read

    List forms

    List form templates.

  • get_form read

    Get form

    Fetch a single form by UUID.

  • create_form write

    Create form

    Create a new form template. badge_name is required — ServiceM8 rejects a form without one.

  • update_form write

    Update form

    Update a form template's fields. NOTE `document_template_uuid` is silently ignored here — ServiceM8 returns OK and the link is not stored, so a form cannot be pointed at a document template through this connection. Do that in the ServiceM8 UI.

  • delete_form write

    Delete form

    Archive (soft-delete) a form — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field. Account-wide: existing form responses keep their answers but lose the template that gave them meaning.

  • list_document_templates read

    List document templates

    List document templates (used by forms and generated documents).

  • get_document_template read

    Get document template

    Fetch a single document template by UUID.

  • create_document_template write

    Create document template

    Create a new blank document template. LIMITED USE: `name` is the only settable field, and ServiceM8 makes `template_type` and `related_object` read-only, so the result is an untyped template that servicem8_produce_document cannot render and no form can generate into. Build real templates in the ServiceM8 UI; this is only useful as a placeholder to rename later.

  • update_document_template write

    Update document template

    Rename a document template.

  • delete_document_template write

    Delete document template

    Archive (soft-delete) a document template — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field. Account-wide: forms and produce_document calls relying on this template will stop rendering.

  • list_assets read

    List assets

    List tracked assets (equipment/serialised items attached to clients).

  • get_asset read

    Get asset

    Fetch a single asset by UUID.

  • update_asset write

    Update asset

    Update an asset's fields, including its custom AssetType field values.

  • delete_asset write

    Delete asset

    Archive (soft-delete) an asset — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, and there is no create_asset tool, so an asset archived here CANNOT be recreated through this connection.

  • send_email write

    Send email

    Send an email to a customer or staff member through ServiceM8's messaging infrastructure, linked to a job's diary. Supports an HTML body, a plain-text body, cc, reply-to and attachments. The From address is set by ServiceM8 and cannot be overridden.

  • send_sms write

    Send SMS

    Send an SMS to a customer or staff member, linked to a job's diary. INCURS PER-MESSAGE ACCOUNT CHARGES on the ServiceM8 account, and messages over 153 characters consume multiple SMS credits. Marketing and promotional SMS is not permitted by ServiceM8.

  • produce_document write

    Produce document

    Render a Quote, Work Order or Invoice for a job as a PDF, using a document template. NOT read-only, and it mutates the job in two separate ways: templateType 'Invoice' stamps the job's invoice_date, and storeToDiary: true ALSO stamps invoice_date even for a Quote or Work Order. So filing any document to the diary marks the job as invoiced — treat this as a billing action, never a preview. storeToDiary is still the only practical way to keep the output, because the returned bytes are large and are not retrievable through this connection; just don't use it on a job you don't intend to invoice.

  • list_attachments read

    List attachments

    List file attachments (photos, signed forms, generated documents) with their metadata. Filter to one job with a $filter like "related_object_uuid eq '<job uuid>'". This returns metadata only, NOT the images themselves — to actually look at a job's photos, use servicem8_get_job_photos.

  • get_attachment read

    Get attachment

    Fetch a single attachment's metadata by UUID. Returns the file name, type and size, not the file itself — use servicem8_get_job_photos to view photos.

  • update_attachment write

    Update attachment

    Update an attachment's metadata (name, tags, which record it relates to). Does not change the file itself.

  • get_job_photos read

    Get job photos

    LOOK AT the photos attached to a job — returns the actual images, so you can describe damage, read a serial number or meter, check whether work was completed, or compare before/after shots. Use this whenever a question is about what a photo SHOWS. Returns the newest photos first, 5 by default and at most 20; images are downscaled for transfer, so read fine print with care and say so if it is not legible. Use servicem8_list_attachments instead if you only need file names and metadata.

  • list_job_contacts read

    List job contacts

    List job contacts. Filter by job with a $filter like "job_uuid eq '<uuid>'" — a job's contact name, phone and email live here, not on the job record.

  • get_job_contact read

    Get job contact

    Fetch a single job contact by UUID.

  • create_job_contact write

    Create job contact

    Add a contact to a job (job contact, billing contact or property manager). This is how you set the phone/email shown on a job. SIDE EFFECT: ServiceM8 also creates a matching client-level CompanyContact with its own separate UUID, which servicem8_delete_job_contact does NOT remove — if you later clean up, check servicem8_list_company_contacts for the twin.

  • update_job_contact write

    Update job contact

    Update a job contact's name, phone, mobile, email or type.

  • delete_job_contact write

    Delete job contact

    Archive (soft-delete) a job contact — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field. Note this leaves behind the client-level CompanyContact that creating the job contact also generated — archive that separately with servicem8_delete_company_contact.

  • list_company_contacts read

    List company contacts

    List client-level contacts. Filter to one client with a $filter like "company_uuid eq '<uuid>'".

  • get_company_contact read

    Get company contact

    Fetch a single company contact by UUID.

  • create_company_contact write

    Create company contact

    Add a contact to a client.

  • update_company_contact write

    Update company contact

    Update a company contact's details.

  • delete_company_contact write

    Delete company contact

    Archive (soft-delete) a company contact — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so this cannot be undone here.

  • list_job_materials read

    List job materials

    List job billing line items (materials and labour charged to jobs). Filter to one job's invoice contents with a $filter like "job_uuid eq '<uuid>'".

  • get_job_material read

    Get job material

    Fetch a single job line item by UUID.

  • create_job_material write

    Create job material

    Add a billing line item (material or labour) to a job. `displayed_amount` is REQUIRED and must equal the UNIT price, not price x quantity — this holds even when you pass a material_uuid. If you get it wrong the error names the expected value, so it is self-correcting. Passing no material_uuid creates an ad-hoc line AND silently adds a matching Material to the price book.

  • update_job_material write

    Update job material

    Update a job line item's quantity, price, cost or description. Unlike create, this does NOT require displayed_amount.

  • delete_job_material write

    Delete job material

    Archive (soft-delete) a job line item — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field.

  • list_job_material_bundles read

    List job material bundles

    List material bundles applied to jobs. Filter to one job with a $filter like "job_uuid eq '<uuid>'".

  • get_job_material_bundle read

    Get job material bundle

    Fetch a single job material bundle by UUID.

  • create_job_material_bundle write

    Create job material bundle

    Apply a material bundle to a job.

  • update_job_material_bundle write

    Update job material bundle

    Update a job material bundle's quantity or ordering.

  • delete_job_material_bundle write

    Delete job material bundle

    Archive (soft-delete) a job material bundle — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so this cannot be undone here.

  • list_job_allocations read

    List job allocations

    List job allocations (who a job is assigned to and when it's scheduled). Filter by staff or date with a $filter like "staff_uuid eq '<uuid>'".

  • get_job_allocation read

    Get job allocation

    Fetch a single job allocation by UUID.

  • create_job_allocation write

    Create job allocation

    Allocate a job to a staff member on a date — i.e. schedule it. Needs an allocation_window_uuid: call servicem8_list_allocation_windows first.

  • update_job_allocation write

    Update job allocation

    Update a job allocation, e.g. reassign it to different staff or move its date.

  • delete_job_allocation write

    Delete job allocation

    Archive (soft-delete) a job allocation — sets active to 0, unscheduling it. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so this cannot be undone here.

  • list_job_checklists read

    List job checklist items

    List job checklist items. Filter to one job with a $filter like "job_uuid eq '<uuid>'".

  • get_job_checklist read

    Get job checklist item

    Fetch a single job checklist item by UUID.

  • create_job_checklist write

    Create job checklist item

    Add a checklist item to a job.

  • update_job_checklist write

    Update job checklist item

    Update a job checklist item, e.g. mark it complete or reassign it.

  • delete_job_checklist write

    Delete job checklist item

    Archive (soft-delete) a job checklist item — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so this cannot be undone here.

  • list_job_templates read

    List job templates

    List job templates — pre-built job definitions that can be turned into real jobs with servicem8_create_job_from_template.

  • get_job_template read

    Get job template

    Fetch a single job template by UUID.

  • create_job_from_template write

    Create job from template

    Create a new job from a job template, inheriting the template's content, line items and badges. Prefer this over servicem8_create_job when a suitable template exists. Returns `{jobUUID, location, message}` — note that is a different shape from every other create tool (which return `recordUuid`) and it does NOT include the job number; read the job back with servicem8_get_job if you need `generated_job_id`.

  • list_categories read

    List categories

    List job categories (the type-of-work / department classifications shown on the Dispatch Board).

  • get_category read

    Get category

    Fetch a single job category by UUID.

  • create_category write

    Create category

    Create a new job category.

  • update_category write

    Update category

    Update a job category's name or colour.

  • delete_category write

    Delete category

    Archive (soft-delete) a job category — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so this cannot be undone here. Account-wide: every job already classified with this category is affected.

  • list_badges read

    List badges

    List the account's badge definitions. To see which badges are ON a job, read the job's `badges` field.

  • get_badge read

    Get badge

    Fetch a single badge definition by UUID.

  • create_badge write

    Create badge

    Create a new badge definition.

  • update_badge write

    Update badge

    Update a badge definition.

  • delete_badge write

    Delete badge

    Archive (soft-delete) a badge — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so this cannot be undone here. Account-wide: jobs already carrying this badge are affected.

  • list_bundles read

    List material bundles

    List material bundles (named groups of price-book materials added to a job together).

  • get_bundle read

    Get material bundle

    Fetch a single material bundle, including its material list.

  • create_bundle write

    Create material bundle

    Create a material bundle from a list of materials and quantities.

  • update_bundle write

    Update material bundle

    Update a material bundle's name, code or material list.

  • delete_bundle write

    Delete material bundle

    Archive (soft-delete) a material bundle — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so this cannot be undone here. Account-wide price book: job lines already added from this bundle keep their values.

  • list_tax_rates read

    List tax rates

    List the account's tax rates, with each rate's percentage and which one is the default. Use this to resolve a tax_rate_uuid for materials, clients and job line items. Tax rates are read-only through this connection.

  • get_tax_rate read

    Get tax rate

    Fetch a single tax rate by UUID. Tax rates are read-only through this connection — they are account-wide financial configuration and, on an accounting-integrated account, are managed in the accounting package.

  • list_form_fields read

    List form fields

    List form fields. Filter to one form with a $filter like "form_uuid eq '<uuid>'".

  • get_form_field read

    Get form field

    Fetch a single form field by UUID.

  • create_form_field write

    Create form field

    Add a field to a form template.

  • update_form_field write

    Update form field

    Update a form field's label, configuration or order.

  • delete_form_field write

    Delete form field

    Archive (soft-delete) a form field — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so this cannot be undone here. Existing form responses keep their answers but lose this field definition.

  • list_form_responses read

    List form responses

    List submitted form responses. Filter to one job or form with a $filter like "regarding_object_uuid eq '<uuid>'".

  • get_form_response read

    Get form response

    Fetch a single form response, including its submitted field data.

  • create_form_response write

    Create form response

    Record a form response (submitted form data) against a job or other object.

  • update_form_response write

    Update form response

    Update a form response's submitted data.

  • delete_form_response write

    Delete form response

    Archive (soft-delete) a form response — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so this cannot be undone here.

  • list_asset_types read

    List asset types

    List asset types (the classes of tracked equipment).

  • get_asset_type read

    Get asset type

    Fetch a single asset type by UUID.

  • create_asset_type write

    Create asset type

    Create a new asset type.

  • update_asset_type write

    Update asset type

    Rename an asset type.

  • delete_asset_type write

    Delete asset type

    Archive (soft-delete) an asset type — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so this cannot be undone here. Account-wide: assets of this type keep their values but lose their type definition.

  • list_asset_type_fields read

    List asset type fields

    List asset type fields — the custom field definitions that an asset's field_data values refer to. Read these first to learn the field UUIDs you need before writing an asset's field_data.

  • get_asset_type_field read

    Get asset type field

    Fetch a single asset type field by UUID.

  • update_asset_type_field write

    Update asset type field

    Update an existing asset type field's label, configuration or order. New fields cannot be added through this connection — ServiceM8 makes asset_type_uuid read-only, so an API-created field would be orphaned from every asset type. Add fields in the ServiceM8 UI.

  • delete_asset_type_field write

    Delete asset type field

    Archive (soft-delete) an asset type field — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field. Assets already holding a value for this field keep it but lose its definition.

  • list_allocation_windows read

    List allocation windows

    List allocation windows (the named arrival windows a scheduled job can be pinned to).

  • get_allocation_window read

    Get allocation window

    Fetch a single allocation window by UUID.

  • create_allocation_window write

    Create allocation window

    Create a new allocation window.

  • update_allocation_window write

    Update allocation window

    Update an allocation window's name, times or ordering.

  • delete_allocation_window write

    Delete allocation window

    Archive (soft-delete) an allocation window — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so this cannot be undone here. Account-wide scheduling config: existing allocations pinned to this window are affected, and create_job_allocation requires a window.

  • list_inbox_messages read

    List inbox messages

    List inbound inbox messages (customer emails, web-form enquiries, partner leads), newest first, with optional status filtering and free-text search. Pages via limit/offset (this endpoint does NOT use the cursor paging the rest of the API uses). Read-only — the inbox cannot be triaged through this connection.

  • get_inbox_message read

    Get inbox message

    Fetch a single inbox message by UUID, including its text and HTML bodies. Read-only: inbox messages cannot be created, archived, snoozed, noted or converted to jobs through this connection — ServiceM8 grants OAuth apps read access only. To act on an enquiry, read it here and then call servicem8_create_job.

  • list_staff_messages read

    List staff messages

    List internal staff-to-staff messages. Filter by staff or job with a $filter like "to_staff_uuid eq '<uuid>'". Read-only: ServiceM8 defines no write scope for staff messages, so this connection cannot send them — use servicem8_send_email or servicem8_send_sms to reach a person.

  • get_staff_message read

    Get staff message

    Fetch a single staff message by UUID.

  • delete_staff_message write

    Delete staff message

    Archive (soft-delete) a staff message — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field.

  • list_email_templates read

    List email templates

    List saved email templates. To send one, read its message and pass it to servicem8_send_email.

  • get_email_template read

    Get email template

    Fetch a single email template by UUID.

  • create_email_template write

    Create email template

    Create a new email template.

  • update_email_template write

    Update email template

    Update an email template's name, subject or body.

  • delete_email_template write

    Delete email template

    Archive (soft-delete) an email template — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so this cannot be undone here. Account-wide.

  • list_sms_templates read

    List SMS templates

    List saved SMS templates. To send one, read its message and pass it to servicem8_send_sms.

  • get_sms_template read

    Get SMS template

    Fetch a single SMS template by UUID.

  • create_sms_template write

    Create SMS template

    Create a new SMS template.

  • update_sms_template write

    Update SMS template

    Update an SMS template's name or body.

  • delete_sms_template write

    Delete SMS template

    Archive (soft-delete) an SMS template — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so this cannot be undone here. Account-wide.

  • list_feedback_entries read

    List feedback entries

    List customer feedback entries captured by ServiceM8. Filter to one job with a $filter like "related_object_uuid eq '<uuid>'". Feedback cannot be created or edited through this connection — only read and archived.

  • get_feedback read

    Get feedback entry

    Fetch a single feedback entry by UUID.

  • delete_feedback write

    Delete feedback entry

    Archive (soft-delete) a feedback entry — sets active to 0. IRREVERSIBLE: ServiceM8 does not accept `active` as a writable field, so an archived entry cannot be restored through the API.

  • list_security_roles read

    List security roles

    List the account's security roles (the permission sets assigned to staff via security_role_uuid). Read-only — roles are managed in the ServiceM8 UI.

  • get_security_role read

    Get security role

    Fetch a single security role by UUID.

  • list_vendors read

    List vendors

    List the connected ServiceM8 account's own business record(s) — company name, contact details and default email sender. This is your OWN business, not the suppliers you buy from; suppliers are not available through this connection.

  • get_vendor read

    Get vendor

    Fetch a single vendor (account business record) by UUID.

Questions, answered

How do I connect ServiceM8 to Claude?

Create a FloConnector workspace, connect ServiceM8 once from the dashboard, then add your FloConnector endpoint to Claude as a custom connector. Claude handles the sign-in prompt; there is no server to host and no code to write. The same endpoint works in ChatGPT.

What can Claude do in ServiceM8?

167 tools: 78 that read ServiceM8 data and 89 that change it. Every tool is listed on this page, so you can see exactly what the model is able to call before you connect.

Does the AI see my ServiceM8 password or API keys?

No. FloConnector holds the ServiceM8 credential, encrypted before it is stored, and calls ServiceM8 on the model's behalf. The AI client only ever sees the tools and their results, never the credential behind them.

Can I stop it changing anything in ServiceM8?

Yes. Each connection is exposed through a profile, and a profile carries only the tools you switch on. Leave the 89 write tools off and the connection is read-only.

Does this work with ChatGPT as well as Claude?

Yes. The endpoint is a standard hosted MCP server, so it works in any client that supports MCP connectors, including Claude and ChatGPT.