{"openapi":"3.1.0","info":{"title":"Workiz (BYOK) API","version":"0.1.0","description":"Workiz (BYOK) lets an AI assistant read your own Workiz data through the Workiz API with a key you supply (Workiz API token). Read-only: 7 tools (list_jobs, get_job, list_leads, get_lead, list_team, get_team_member, list_time_off). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent to api.workiz.com. Unofficial...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-workiz.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-workiz/docs"},"termsOfService":"https://connectorbay.com/byok-workiz/terms"},"servers":[{"url":"https://byok-workiz.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-workiz/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_jobs":{"post":{"operationId":"list_jobs","summary":"List jobs, most recently scheduled first, with status, client contact, address, price and team. Without start_date only ","description":"List jobs, most recently scheduled first, with status, client contact, address, price and team. Without start_date only the last 14 days are returned. Use for \"Which Workiz jobs are open this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records from this date until today (YYYY-MM-DD).","title":"Start Date"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip (for paging).","title":"Offset"},"records":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records to return (1 to 100).","title":"Records"},"only_open":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True lists only open records, leaving out Done and Canceled; false lists everything.","title":"Only Open"}},"title":"list_jobsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_job":{"post":{"operationId":"get_job","summary":"Get one job by UUID with schedule, status, price, amount due, client contact and address, notes, tags and assigned team.","description":"Get one job by UUID with schedule, status, price, amount due, client contact and address, notes, tags and assigned team. Use for \"Show me Workiz job ABC123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"job_uuid":{"description":"The job's UUID, from the list_jobs answer.","maxLength":200,"title":"Job Uuid","type":"string"}},"required":["job_uuid"],"title":"get_jobArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_leads":{"post":{"operationId":"list_leads","summary":"List leads, most recently scheduled first, with status, source, client contact, address and notes. Use for \"Which new Wo","description":"List leads, most recently scheduled first, with status, source, client contact, address and notes. Use for \"Which new Workiz leads came in from Google\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records from this date until today (YYYY-MM-DD).","title":"Start Date"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip (for paging).","title":"Offset"},"records":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records to return (1 to 100).","title":"Records"},"only_open":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True lists only open records, leaving out Done and Canceled; false lists everything.","title":"Only Open"}},"title":"list_leadsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_lead":{"post":{"operationId":"get_lead","summary":"Get one lead by UUID with status, source, client contact, address, notes and assigned team. Use for \"Show me Workiz lead","description":"Get one lead by UUID with status, source, client contact, address, notes and assigned team. Use for \"Show me Workiz lead DEF456\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lead_uuid":{"description":"The lead's UUID, from the list_leads answer.","maxLength":200,"title":"Lead Uuid","type":"string"}},"required":["lead_uuid"],"title":"get_leadArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_team":{"post":{"operationId":"list_team","summary":"List the active team members: id, name, role, whether they are a field technician, email, skills and service areas. Use ","description":"List the active team members: id, name, role, whether they are a field technician, email, skills and service areas. Use for \"Who is on my Workiz team\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_teamArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_team_member":{"post":{"operationId":"get_team_member","summary":"Get one team member by user id: name, role, field-technician flag, email, skills and service areas. Use for \"What are th","description":"Get one team member by user id: name, role, field-technician flag, email, skills and service areas. Use for \"What are the skills of Workiz user 35512\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user_id":{"description":"The user's id, from the list_team answer.","maxLength":200,"title":"User Id","type":"string"}},"required":["user_id"],"title":"get_team_memberArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_time_off":{"post":{"operationId":"list_time_off","summary":"List upcoming time off with start, end and who it belongs to (the entire business or a user). Use for \"Who has time off ","description":"List upcoming time off with start, end and who it belongs to (the entire business or a user). Use for \"Who has time off coming up in Workiz\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"all":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True returns company and all users' time off; false (default) only your own.","title":"All"}},"title":"list_time_offArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}