Skip to main content
Glama
LCM2M

lcm2m-caddis-mcp

by LCM2M

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CADDIS_PASSWORDYesLCM2M account password
CADDIS_USERNAMEYesLCM2M account username/email
CADDIS_COMPANY_IDNoRequired if your user belongs to multiple companies
CADDIS_MAX_RETRIESNoMax 429 retries per request3
CADDIS_MAX_RETRY_WAIT_MSNoMax total wait budget per request30000

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
caddis_get_companyA

Fetch the active company (name, timezone, point-of-contact, and other top-level settings). Useful as a first call to confirm which company the session is scoped to.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_list_devicesB

List all physical Caddis devices registered to the company, with their assigned equipment.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_deviceB

Fetch a single Caddis device by ID, including its attached equipment.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_list_equipmentB

List all equipment visible to the authenticated user in the active company. Each row includes the equipment's current status (running/down).

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_equipmentA

Fetch a single equipment record by its ID. Includes the equipment's current status (running/down).

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_equipment_utilizationA

Grouped utilization metrics for a piece of equipment. Buckets the running/down seconds into intervals (default '1d') over the requested window in the given timezone (default 'UTC').

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_equipment_scheduleA

Current schedule for a piece of equipment, including where the schedule was inherited from (equipment vs org unit vs company) and the resolved timezone.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_equipment_cyclesA

Production cycles (individual part/unit runs) for a piece of equipment within a time window. Keep windows and limits modest — cycle counts can be very high.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_equipment_statuslogsA

Running/down status log transitions for a piece of equipment within a time window. Each row is a status change; pair with statusreasons to decode reason IDs.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_equipment_telemetryA

Raw telemetry data points for a piece of equipment within a time window. Very chatty — always scope with a tight window and limit.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_equipment_shift_historyA

Historical shift boundaries (start/end, scheduled/worked) for a piece of equipment. Both start and end are required — this is a closed-window query.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_list_equipment_excessive_downtimesB

List shifts where a piece of equipment had excessive downtime (XSF) events. Both start and end are required.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_equipment_excessive_downtimeA

Fetch a single excessive downtime record (with operator-assigned reason, if any) identified by the shift history + status log pair for a piece of equipment.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_org_unitA

Fetch a single organizational unit with its direct equipment and child org units. For the whole tree, use caddis_get_tree instead.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_org_unit_scheduleC

Current schedule for an organizational unit, with inheritance source and resolved timezone.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_org_unit_utilizationA

Utilization metrics aggregated across every piece of equipment under an org unit. Buckets the running/down seconds into intervals (default '1d') over the requested window in the given timezone (default 'UTC'). Returns one entry per bucket.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_list_org_unit_excessive_downtimesA

Excessive downtime (XSF) events across every piece of equipment under an org unit in a closed time window. Both start and end are required.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_treeA

Structural overview of the org-unit hierarchy with the equipment and devices under it. Without orgUnitId, returns the full company tree from the root; with orgUnitId, returns the subtree rooted there. The body is a TOON document with three named tabular sections — org_units[...]{...}:, equipment[...]{...}:, and devices[...]{...}: — each followed by its indented rows. Hierarchy is encoded in the path columns rather than nesting: each org_units row carries parent_id and parent_path (dot-delimited ancestor ids, e.g. "root.1.2"), each equipment row carries parent_org_unit_id and parent_org_unit_path, and each devices row carries equipment_id. Reconstruct the tree by joining on these. Schedules, device input_setup, hardware_info, and other nested config blobs are NOT included here — fetch them via caddis_get_org_unit_schedule, caddis_get_equipment_schedule, caddis_get_equipment, or caddis_get_device when needed.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_list_alarmsA

List enabled alarms for the company along with their type definitions, latest history entry, and subscribers (users and rosters). Optionally filter by equipment IDs or by whether the alarm type is preventative maintenance (pm). The body is a TOON document with five named tabular sections — alarms[...]{...}:, alarm_types[...]{...}:, alarm_history[...]{...}:, user_alarms[...]{...}:, and roster_alarms[...]{...}: — each followed by its indented rows. Join keys: each alarms row carries alarm_type_id ↔ alarm_types.id; alarm_history, user_alarms, and roster_alarms rows each carry alarm_id back to alarms.id. alarm_history is capped at the single most recent entry per alarm. Several columns are JSON-stringified blobs — args, args_latest, device_output_config, and config on alarms; args_template on alarm_types; and args + device_output_config on alarm_history — JSON.parse() them to recover their structured values.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_list_tagsB

List cycle tags for the company. Optionally filter by active state or by tag group.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_tagA

Fetch a single cycle tag by ID.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_list_tag_groupsA

List all cycle tag groups for the company.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_tag_groupA

Fetch a single tag group by ID.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_list_runsA

List production runs for the company. Optionally filter by equipment and/or a date range (runs whose active interval intersects [start, end)).

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_runA

Fetch a single production run by ID, including its equipment.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_get_run_cyclesA

All production cycles associated with a specific run. Use this instead of caddis_get_equipment_cycles when the scope is a known run.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_list_status_reasonsA

List active status reasons available for classifying downtime. Use in combination with caddis_get_equipment_statuslogs to decode reason IDs in the log stream.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_list_manufacturersA

List equipment manufacturers defined for the company, sorted by name. Use to decode the manufacturer of a piece of equipment or to look up a manufacturer ID for caddis_list_models.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_list_modelsA

List equipment models defined for the company, sorted by model number. Optionally filter to a single manufacturer via manufacturerId.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_list_categoriesA

List equipment categories defined for the company, sorted by name. Use to decode the category of a piece of equipment.

Responses are TOON-encoded (toonformat.dev) — a token-efficient JSON dialect mixing YAML-style indentation with CSV-style tables. Example:

name: Caddis Co timezone: America/Denver equipment[3]{id,name,tags,current_status.status,current_status.reason_id}: 1,Mill A,"["cnc","critical"]",running,null 2,"Press, Big",null,down,3 3,Lathe C,null,null,null

  • Object fields: key: value; nested objects indent their children.

  • Uniform arrays of objects: field[N]{cols}: followed by N indented comma-separated rows in column order.

  • Nested objects inside table rows are recursively flattened to dotted columns (e.g. current_status.status, input_setup.cycle.logic); a null parent yields null across all its dotted columns (see row 3 above).

  • Primitive arrays at object level: field[N]: a,b,c inline.

  • Arrays inside table cells are JSON-stringified into a single cell value (JSON.parse() to recover); empty arrays render as null (see rows 1–3 tags column).

  • Strings with commas/colons/quotes/leading whitespace are double-quoted (escapes: \\, \"); other strings, numbers, booleans, and null are bare.

caddis_batchA

Run multiple caddis_* tools in a single call, fanning out in parallel. Each request in requests is dispatched to the same handler the tool would run individually, so 429 retry/jitter and login-dedup behavior is preserved. Up to 20 requests per call; concurrency is capped at 1 in-flight. Response contains one text block per request, in input order, each prefixed with #<index> <tool> <ok|error>. One failed request does not sink the batch.

Available tools: caddis_get_company, caddis_get_device, caddis_get_equipment, caddis_get_equipment_cycles, caddis_get_equipment_excessive_downtime, caddis_get_equipment_schedule, caddis_get_equipment_shift_history, caddis_get_equipment_statuslogs, caddis_get_equipment_telemetry, caddis_get_equipment_utilization, caddis_get_org_unit, caddis_get_org_unit_schedule, caddis_get_org_unit_utilization, caddis_get_run, caddis_get_run_cycles, caddis_get_tag, caddis_get_tag_group, caddis_get_tree, caddis_list_alarms, caddis_list_categories, caddis_list_devices, caddis_list_equipment, caddis_list_equipment_excessive_downtimes, caddis_list_manufacturers, caddis_list_models, caddis_list_org_unit_excessive_downtimes, caddis_list_runs, caddis_list_status_reasons, caddis_list_tag_groups, caddis_list_tags

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/LCM2M/lcm2m-caddis-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server