Skip to main content
Glama
dragosh29

WorkMobile MCP server

by dragosh29

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
WORKMOBILE_API_KEYYesThe API token (a GUID) of a portal user, sent as the X-API-Key header. Required.
WORKMOBILE_BASE_URLNoThe WorkMobile API base URL. Defaults to https://www.esayworkmobile.co.uk/webapi2. Must not contain a username or password.https://www.esayworkmobile.co.uk/webapi2
WORKMOBILE_ALLOW_WRITESNoSet to true to register create_job, allocate_job, approve_record and reject_record. Off by default.false

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_jobsA

Search jobs with the filters POST /api/jobs/search documents: status IDs, estimated start date range, the mobile users they are allocated to, job types, a description, priority, backlog and whether a duration is set. Returns job ID, description, status ID, type, priority, dates and allocation; the job's location is withheld unless include_contact_details is set. In descriptions, emails, phone numbers, postcodes and coordinates are redacted, but names and street addresses typed into them are not. This search is a POST request that only reads. Pages hold 500 jobs; a page with fewer than 500 is the last.

get_jobA

One job by ID: description, status, type, priority, dates, allocation, its history (status changes with narrative) and its job data (the fields of the job's form). Unless include_contact_details is set, the job location and job data fields whose names mark them as personal (names, contact details, addresses, signatures, photos, locations) are withheld; in the description, the history narratives and other fields, emails, phone numbers, postcodes and coordinates are redacted, but names and street addresses written in that free text are not. Uses GET /api/jobs/{id}.

list_job_statusesA

WorkMobile's static list of job statuses and their IDs (GET /api/jobs/jobstatuslist), to decode job_status_id and to pick status_ids for list_jobs. The response format is not documented, so it is returned as WorkMobile sends it.

list_job_typesB

Job types available to the API user (GET /api/jobtypes): ID, name, description, whether live, the form each uses, default duration and location settings.

get_job_typeA

One job type (GET /api/jobtypes/{id}) and the fields a job of this type takes, read from its JSON Schema document (GET /api/jobtypes/{id}/schema): name, type, whether required, allowed values and limits. Call this before create_job.

list_formsA

Forms visible to the API user (GET /api/forms): ID, name, description, whether live and visible on mobile, whether it is a sub-form, and when data was last uploaded. The API returns the whole list without paging.

list_form_submissionsA

Search the records submitted on one form (POST /api/forms/{FormId}/completedrecords/search): by created or uploaded date, job, mobile user, user group, or searchable field values. Each record comes back with its Id, OriginalId and JobId, the system columns, and the answers. Unless include_contact_details is set, answers in fields whose names mark them as personal (names, contact details, addresses, postcodes, signatures, photos, locations, dates of birth, health, pay) and links to media are withheld; in other answers, emails, phone numbers, postcodes and coordinates are redacted, but names and street addresses typed into free text are not. This search is a POST request that only reads. Pages hold 500 records.

get_form_submissionA

One record submitted on a form, found by its record Id (the search criterion id of POST /api/forms/{FormId}/completedrecords/search): system columns and answers. Unless include_contact_details is set, answers in fields whose names mark them as personal and links to media are withheld; in other answers, emails, phone numbers, postcodes and coordinates are redacted, but names and street addresses typed into free text are not. Files and media are never downloaded.

list_approvalsA

Without form_id: the API user's approval inbox totals (badge counts) from GET /api/approvals/getinboxtotals, returned as WorkMobile sends them with text redacted (the format is not documented). With form_id: the records on that form waiting for the API user's approval (records search with onlyMyPendingApprovals), with personal answers withheld unless include_contact_details is set.

list_mobile_usersA

Mobile (field) users visible to the API user (GET /api/mobileusers) with their names, job titles, user group (named from GET /api/usergroups) and whether active. Usernames only with include_contact_details. The API returns the whole list without paging.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 10 tools

Disambiguation4/5

Most tools target a distinct resource+action (statuses, types, forms, submissions, jobs, users), and search vs. single-get pairs are clearly separated. Minor overlap comes from list_approvals behaving differently depending on whether form_id is passed, which adds a bit of cognitive load.

Naming Consistency5/5

Names follow a strict and predictable verb_noun pattern: list_* for collections (list_jobs, list_forms, list_mobile_users) and get_* for single items (get_job, get_job_type, get_form_submission). The convention is applied uniformly across all ten tools.

Tool Count5/5

Ten tools is well within the ideal range and each one maps to a meaningful read operation over the WorkMobile domain. Nothing appears redundant or padded.

Completeness3/5

The read surface is reasonably broad (lookups, searches, single-item gets for jobs, forms, submissions, users, approvals), but it is entirely read-only with no create/update operations. get_job_type explicitly says 'Call this before create_job,' yet no create_job tool exists, indicating a notable gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues