workiz

Manage Workiz jobs and leads: create, update, assign team members and convert leads to jobs.

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
94%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,622Tokens (tool definitions)
~2.0 KBTypical response size
Significant attention impact (3.61% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "workiz": {
      "url": "https://workiz.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://workiz.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (19)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢workiz_list_jobs(start_date, offset, records, only_open, status)

List jobs, most recently scheduled first (sorted by JobDateTime, descending). Filter by start date, open-only, and status; page with offset/records (max 100). Without start_date Workiz returns the last 14 days. Workiz: GET /job/all/.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "description": "Return records from this date (yyyy-MM-dd) until today. For jobs, Workiz defaults to the last 14 days when omitted.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "offset": {
      "description": "Record offset for paging (default 0).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "records": {
      "description": "Number of records to return, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "only_open": {
      "description": "Only open records, excluding Done and Canceled statuses (Workiz default: true).",
      "type": "boolean"
    },
    "status": {
      "description": "Only these statuses, e.g. [\"Submitted\", \"In progress\"].",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢workiz_get_job(uuid)

Fetch one job by UUID: schedule, status, client contact and address, totals and amount due, notes, tags and assigned team. Workiz: GET /job/get/{UUID}/.

Input Schema

{
  "type": "object",
  "properties": {
    "uuid": {
      "type": "string",
      "minLength": 1,
      "description": "The job's UUID (e.g. XYZ56X)."
    }
  },
  "required": [
    "uuid"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢workiz_list_leads(start_date, offset, records, only_open, status)

List leads, most recent first (sorted by LeadDateTime, descending). Filter by start date, open-only, and status; page with offset/records (max 100). Workiz: GET /lead/all/.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "description": "Return records from this date (yyyy-MM-dd) until today. For jobs, Workiz defaults to the last 14 days when omitted.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "offset": {
      "description": "Record offset for paging (default 0).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "records": {
      "description": "Number of records to return, 1-100 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "only_open": {
      "description": "Only open records, excluding Done and Canceled statuses (Workiz default: true).",
      "type": "boolean"
    },
    "status": {
      "description": "Only these statuses, e.g. [\"Submitted\", \"In progress\"].",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢workiz_get_lead(uuid)

Fetch one lead by UUID: schedule, status, client contact and address, source, notes and assigned team. Workiz: GET /lead/get/{UUID}/.

Input Schema

{
  "type": "object",
  "properties": {
    "uuid": {
      "type": "string",
      "minLength": 1,
      "description": "The lead's UUID (e.g. XYZ56X)."
    }
  },
  "required": [
    "uuid"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢workiz_list_team

List the account's active team members: id, name, role, whether they are a field tech, email, service areas and skills. Use the name to assign people to jobs or leads. Workiz: GET /team/all/.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢workiz_get_team_member(user_id)

Fetch one team member by user id: name, role, field-tech flag, email, service areas, skills and active status. Workiz: GET /team/get/{USER_ID}.

Input Schema

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "minLength": 1,
      "description": "The user's id, from workiz_list_team."
    }
  },
  "required": [
    "user_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢workiz_list_time_off(all)

List FUTURE time off (start, end, userName — 'Entire Business' for company-wide closures). Set all=true to include every user and company time off. Useful before scheduling. Workiz: GET /TimeOff/get/.

Input Schema

{
  "type": "object",
  "properties": {
    "all": {
      "description": "Include all users' and company time off (Workiz default: false).",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢workiz_get_user_time_off(user_name)

List one team member's FUTURE time off, by their name. Workiz: GET /TimeOff/get/{USER_NAME}.

Input Schema

{
  "type": "object",
  "properties": {
    "user_name": {
      "type": "string",
      "minLength": 1,
      "description": "The team member's name as Workiz shows it, e.g. Joe Acme."
    }
  },
  "required": [
    "user_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴workiz_create_job(JobDateTime, JobEndDateTime, ClientId, FirstName, LastName, ...)

WRITE: create a new job (schedule, client contact and address, type, source, notes). Returns the new job's UUID, ClientId and app link. Workiz: POST /job/create/.

Input Schema

{
  "type": "object",
  "properties": {
    "JobDateTime": {
      "description": "Scheduled start. Date-time string, e.g. 2026-10-01T09:00:00.000Z.",
      "type": "string"
    },
    "JobEndDateTime": {
      "description": "Scheduled end. Date-time string, e.g. 2026-10-01T09:00:00.000Z.",
      "type": "string"
    },
    "ClientId": {
      "description": "Existing Workiz client id to attach this to.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "FirstName": {
      "description": "Client first name.",
      "type": "string"
    },
    "LastName": {
      "description": "Client last name.",
      "type": "string"
    },
    "Company": {
      "description": "Client company name.",
      "type": "string"
    },
    "Phone": {
      "description": "Primary phone, digits only, e.g. 6195555555.",
      "type": "string"
    },
    "PhoneExt": {
      "description": "Primary phone extension.",
      "type": "string"
    },
    "SecondPhone": {
      "description": "Secondary phone.",
      "type": "string"
    },
    "SecondPhoneExt": {
      "description": "Secondary phone extension.",
      "type": "string"
    },
    "Email": {
      "description": "Client email.",
      "type": "string"
    },
    "Address": {
      "description": "Street address, e.g. 123 W Main Street.",
      "type": "string"
    },
    "Unit": {
      "description": "Unit / apartment.",
      "type": "string"
    },
    "City": {
      "description": "City.",
      "type": "string"
    },
    "State": {
      "description": "State, e.g. CA.",
      "type": "string"
    },
    "PostalCode": {
      "description": "Postal / ZIP code.",
      "type": "string"
    },
    "Country": {
      "description": "Country code, e.g. US.",
      "type": "string"
    },
    "JobType": {
      "description": "Job type, e.g. Repair.",
      "type": "string"
    },
    "JobSource": {
      "description": "Lead/job source, e.g. Google.",
      "type": "string"
    },
    "Timezone": {
      "description": "Timezone, e.g. US/Pacific.",
      "type": "string"
    },
    "ServiceArea": {
      "description": "Service area, e.g. metro1.",
      "type": "string"
    },
    "CreatedBy": {
      "description": "Name recorded as the creator.",
      "type": "string"
    },
    "ReferralCompany": {
      "description": "Referral company, e.g. Thumbtack.",
      "type": "string"
    },
    "JobNotes": {
      "description": "Internal job notes.",
      "type": "string"
    },
    "Created": {
      "description": "Creation timestamp to record. Date-time string, e.g. 2026-10-01T09:00:00.000Z.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴workiz_update_job(UUID, Status, SubStatus, JobDateTime, JobEndDateTime, ...)

WRITE: update fields on an existing job — status/sub-status, reschedule (JobDateTime/JobEndDateTime), contact, address, type, source, notes, tags. Only the fields you pass are sent. Workiz: POST /job/update/.

Input Schema

{
  "type": "object",
  "properties": {
    "UUID": {
      "type": "string",
      "minLength": 1,
      "description": "The job's UUID (e.g. XYZ56X)."
    },
    "Status": {
      "description": "New job status, e.g. \"In progress\".",
      "type": "string"
    },
    "SubStatus": {
      "description": "New job sub-status.",
      "type": "string"
    },
    "JobDateTime": {
      "description": "New scheduled start. Date-time string, e.g. 2026-10-01T09:00:00.000Z.",
      "type": "string"
    },
    "JobEndDateTime": {
      "description": "New scheduled end. Date-time string, e.g. 2026-10-01T09:00:00.000Z.",
      "type": "string"
    },
    "ClientId": {
      "description": "Existing Workiz client id to attach this to.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "FirstName": {
      "description": "Client first name.",
      "type": "string"
    },
    "LastName": {
      "description": "Client last name.",
      "type": "string"
    },
    "Company": {
      "description": "Client company name.",
      "type": "string"
    },
    "Phone": {
      "description": "Primary phone, digits only, e.g. 6195555555.",
      "type": "string"
    },
    "PhoneExt": {
      "description": "Primary phone extension.",
      "type": "string"
    },
    "SecondPhone": {
      "description": "Secondary phone.",
      "type": "string"
    },
    "SecondPhoneExt": {
      "description": "Secondary phone extension.",
      "type": "string"
    },
    "Email": {
      "description": "Client email.",
      "type": "string"
    },
    "Address": {
      "description": "Street address, e.g. 123 W Main Street.",
      "type": "string"
    },
    "Unit": {
      "description": "Unit / apartment.",
      "type": "string"
    },
    "City": {
      "description": "City.",
      "type": "string"
    },
    "State": {
      "description": "State, e.g. CA.",
      "type": "string"
    },
    "PostalCode": {
      "description": "Postal / ZIP code.",
      "type": "string"
    },
    "Country": {
      "description": "Country code, e.g. US.",
      "type": "string"
    },
    "JobType": {
      "description": "Job type, e.g. Repair.",
      "type": "string"
    },
    "JobSource": {
      "description": "Lead/job source, e.g. Google.",
      "type": "string"
    },
    "Timezone": {
      "description": "Timezone, e.g. US/Pacific.",
      "type": "string"
    },
    "ServiceArea": {
      "description": "Service area, e.g. metro1.",
      "type": "string"
    },
    "CreatedBy": {
      "description": "Name recorded as the creator.",
      "type": "string"
    },
    "JobNotes": {
      "description": "Internal job notes.",
      "type": "string"
    },
    "Tags": {
      "description": "Job tags, e.g. [\"estimate\", \"callback\"].",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "UUID"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴workiz_assign_job(UUID, User)

WRITE: assign a team member (by name) to a job. Reversible with workiz_unassign_job. Workiz: POST /job/assign/.

Input Schema

{
  "type": "object",
  "properties": {
    "UUID": {
      "type": "string",
      "minLength": 1,
      "description": "The job's UUID (e.g. XYZ56X)."
    },
    "User": {
      "type": "string",
      "minLength": 1,
      "description": "The team member's NAME exactly as Workiz shows it (e.g. Alex Wilson) — see workiz_list_team."
    }
  },
  "required": [
    "UUID",
    "User"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴workiz_unassign_job(UUID, User)

WRITE: remove a team member (by name) from a job. Reversible with workiz_assign_job. Workiz: POST /job/unassign/.

Input Schema

{
  "type": "object",
  "properties": {
    "UUID": {
      "type": "string",
      "minLength": 1,
      "description": "The job's UUID (e.g. XYZ56X)."
    },
    "User": {
      "type": "string",
      "minLength": 1,
      "description": "The team member's NAME exactly as Workiz shows it (e.g. Alex Wilson) — see workiz_list_team."
    }
  },
  "required": [
    "UUID",
    "User"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴workiz_create_lead(LeadDateTime, LeadEndDateTime, ClientId, FirstName, LastName, ...)

WRITE: create a new lead (client contact and address, requested time, job type, source, notes). Returns the new lead's UUID, ClientId and app link. Workiz: POST /lead/create/.

Input Schema

{
  "type": "object",
  "properties": {
    "LeadDateTime": {
      "description": "Scheduled start of the lead appointment. Date-time string, e.g. 2026-10-01T09:00:00.000Z.",
      "type": "string"
    },
    "LeadEndDateTime": {
      "description": "Scheduled end of the lead appointment. Date-time string, e.g. 2026-10-01T09:00:00.000Z.",
      "type": "string"
    },
    "ClientId": {
      "description": "Existing Workiz client id to attach this to.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "FirstName": {
      "description": "Client first name.",
      "type": "string"
    },
    "LastName": {
      "description": "Client last name.",
      "type": "string"
    },
    "Company": {
      "description": "Client company name.",
      "type": "string"
    },
    "Phone": {
      "description": "Primary phone, digits only, e.g. 6195555555.",
      "type": "string"
    },
    "PhoneExt": {
      "description": "Primary phone extension.",
      "type": "string"
    },
    "SecondPhone": {
      "description": "Secondary phone.",
      "type": "string"
    },
    "SecondPhoneExt": {
      "description": "Secondary phone extension.",
      "type": "string"
    },
    "Email": {
      "description": "Client email.",
      "type": "string"
    },
    "Address": {
      "description": "Street address, e.g. 123 W Main Street.",
      "type": "string"
    },
    "Unit": {
      "description": "Unit / apartment.",
      "type": "string"
    },
    "City": {
      "description": "City.",
      "type": "string"
    },
    "State": {
      "description": "State, e.g. CA.",
      "type": "string"
    },
    "PostalCode": {
      "description": "Postal / ZIP code.",
      "type": "string"
    },
    "Country": {
      "description": "Country code, e.g. US.",
      "type": "string"
    },
    "JobType": {
      "description": "Job type, e.g. Repair.",
      "type": "string"
    },
    "JobSource": {
      "description": "Lead/job source, e.g. Google.",
      "type": "string"
    },
    "Timezone": {
      "description": "Timezone, e.g. US/Pacific.",
      "type": "string"
    },
    "ServiceArea": {
      "description": "Service area, e.g. metro1.",
      "type": "string"
    },
    "CreatedBy": {
      "description": "Name recorded as the creator.",
      "type": "string"
    },
    "ReferralCompany": {
      "description": "Referral company, e.g. Thumbtack.",
      "type": "string"
    },
    "LeadNotes": {
      "description": "Internal lead notes.",
      "type": "string"
    },
    "Created": {
      "description": "Creation timestamp to record. Date-time string, e.g. 2026-10-01T09:00:00.000Z.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴workiz_update_lead(UUID, Status, LeadDateTime, LeadEndDateTime, ClientId, ...)

WRITE: update fields on an existing lead — status, schedule, contact, address, type, source, notes, tags. Only the fields you pass are sent. Workiz: POST /lead/update/.

Input Schema

{
  "type": "object",
  "properties": {
    "UUID": {
      "type": "string",
      "minLength": 1,
      "description": "The lead's UUID (e.g. XYZ56X)."
    },
    "Status": {
      "description": "New lead status, e.g. \"In progress\".",
      "type": "string"
    },
    "LeadDateTime": {
      "description": "New scheduled start. Date-time string, e.g. 2026-10-01T09:00:00.000Z.",
      "type": "string"
    },
    "LeadEndDateTime": {
      "description": "New scheduled end. Date-time string, e.g. 2026-10-01T09:00:00.000Z.",
      "type": "string"
    },
    "ClientId": {
      "description": "Existing Workiz client id to attach this to.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "FirstName": {
      "description": "Client first name.",
      "type": "string"
    },
    "LastName": {
      "description": "Client last name.",
      "type": "string"
    },
    "Company": {
      "description": "Client company name.",
      "type": "string"
    },
    "Phone": {
      "description": "Primary phone, digits only, e.g. 6195555555.",
      "type": "string"
    },
    "PhoneExt": {
      "description": "Primary phone extension.",
      "type": "string"
    },
    "SecondPhone": {
      "description": "Secondary phone.",
      "type": "string"
    },
    "SecondPhoneExt": {
      "description": "Secondary phone extension.",
      "type": "string"
    },
    "Email": {
      "description": "Client email.",
      "type": "string"
    },
    "Address": {
      "description": "Street address, e.g. 123 W Main Street.",
      "type": "string"
    },
    "Unit": {
      "description": "Unit / apartment.",
      "type": "string"
    },
    "City": {
      "description": "City.",
      "type": "string"
    },
    "State": {
      "description": "State, e.g. CA.",
      "type": "string"
    },
    "PostalCode": {
      "description": "Postal / ZIP code.",
      "type": "string"
    },
    "Country": {
      "description": "Country code, e.g. US.",
      "type": "string"
    },
    "JobType": {
      "description": "Job type, e.g. Repair.",
      "type": "string"
    },
    "JobSource": {
      "description": "Lead/job source, e.g. Google.",
      "type": "string"
    },
    "Timezone": {
      "description": "Timezone, e.g. US/Pacific.",
      "type": "string"
    },
    "ServiceArea": {
      "description": "Service area, e.g. metro1.",
      "type": "string"
    },
    "CreatedBy": {
      "description": "Name recorded as the creator.",
      "type": "string"
    },
    "LeadNotes": {
      "description": "Internal lead notes.",
      "type": "string"
    },
    "Tags": {
      "description": "Lead tags, e.g. [\"estimate\", \"callback\"].",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "UUID"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴workiz_assign_lead(UUID, User)

WRITE: assign a team member (by name) to a lead. Reversible with workiz_unassign_lead. Workiz: POST /lead/assign/.

Input Schema

{
  "type": "object",
  "properties": {
    "UUID": {
      "type": "string",
      "minLength": 1,
      "description": "The lead's UUID (e.g. XYZ56X)."
    },
    "User": {
      "type": "string",
      "minLength": 1,
      "description": "The team member's NAME exactly as Workiz shows it (e.g. Alex Wilson) — see workiz_list_team."
    }
  },
  "required": [
    "UUID",
    "User"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴workiz_unassign_lead(UUID, User)

WRITE: remove a team member (by name) from a lead. Reversible with workiz_assign_lead. Workiz: POST /lead/unassign/.

Input Schema

{
  "type": "object",
  "properties": {
    "UUID": {
      "type": "string",
      "minLength": 1,
      "description": "The lead's UUID (e.g. XYZ56X)."
    },
    "User": {
      "type": "string",
      "minLength": 1,
      "description": "The team member's NAME exactly as Workiz shows it (e.g. Alex Wilson) — see workiz_list_team."
    }
  },
  "required": [
    "UUID",
    "User"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴workiz_convert_lead_to_job(UUID)

WRITE (no API undo): convert a lead into a job. Creates a new job from the lead and returns its UUID and link; the API cannot reverse the conversion. Workiz: POST /lead/convert/.

Input Schema

{
  "type": "object",
  "properties": {
    "UUID": {
      "type": "string",
      "minLength": 1,
      "description": "The lead's UUID (e.g. XYZ56X)."
    }
  },
  "required": [
    "UUID"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴workiz_mark_lead_lost(uuid)

WRITE: mark a lead as lost. Reversible with workiz_activate_lead. Workiz: POST /lead/markLost/{UUID}/.

Input Schema

{
  "type": "object",
  "properties": {
    "uuid": {
      "type": "string",
      "minLength": 1,
      "description": "The lead's UUID (e.g. XYZ56X)."
    }
  },
  "required": [
    "uuid"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴workiz_activate_lead(uuid)

WRITE: change a lost lead back to active. Workiz: POST /lead/activate/{UUID}/.

Input Schema

{
  "type": "object",
  "properties": {
    "uuid": {
      "type": "string",
      "minLength": 1,
      "description": "The lead's UUID (e.g. XYZ56X)."
    }
  },
  "required": [
    "uuid"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded19 tools