ExakTime / Arcoro MCP by usefulapi

MCP server for Arcoro and ExakTime — workforce data, jobs, cost codes and locations.

我該用這個嗎

品質與安全性

A
說明品質
98%
結構描述完整度
92%
命名品質
77%
汙染風險
80%
權限相符程度
100%
協定合規性
100%

發現項目(7)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domain在 exaktime_query_odata 中
  • LOWTool 'exaktime_list_time_off_requests' name length outside 3-30 range在 exaktime_list_time_off_requests 中
  • LOWTool 'exaktime_list_time_off_balances' name length outside 3-30 range在 exaktime_list_time_off_balances 中
  • LOWTool 'exaktime_list_timecard_approvals' name length outside 3-30 range在 exaktime_list_timecard_approvals 中
  • LOWTool 'exaktime_list_pay_period_approvals' name length outside 3-30 range在 exaktime_list_pay_period_approvals 中
  • LOWTool 'exaktime_list_meal_break_violations' name length outside 3-30 range在 exaktime_list_meal_break_violations 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~8,549Token(工具定義)
~1.9 KB典型回應大小
顯著的注意力影響(128k 上下文的 6.68%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

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

遠端端點

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

它能做什麼

工具清單

工具(32)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢exaktime_list_employees(page, page_size)

List employees (Person records of type Employee) with name, job title, department, employee id, active/inactive status and which Arcoro modules they use. Use personId with exaktime_get_employee. GET /v1/Common/Persons/Employees.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_persons(first_name, last_name, employee_identifier, work_email, page, ...)

List or search Person records (employees and API users) by first name, last name, employee identifier or work email. Returns personId, names, work email, employee id, username and whether the person is a contractor or deleted. GET /v1/Common/Persons.

輸入結構描述

{
  "type": "object",
  "properties": {
    "first_name": {
      "description": "First name filter.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "last_name": {
      "description": "Last name filter.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "employee_identifier": {
      "description": "Your employee id / number.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "work_email": {
      "description": "Work email address.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_get_person(person_id)

One Person record: names, contact details, address, login username and security groups. Government identifiers are not available through this server. GET /v1/Common/Persons/{personId}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "person_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Arcoro personId."
    }
  },
  "required": [
    "person_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_get_employee(person_id)

Employment details for a person: hire/termination date, status, employment and pay type, pay rates, job code, manager, location, department, pay schedule and union. GET /v1/Common/Persons/{personId}/Employees.

輸入結構描述

{
  "type": "object",
  "properties": {
    "person_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Arcoro personId."
    }
  },
  "required": [
    "person_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_locations(page, page_size)

List locations (job sites and offices) with address, coordinates, active flag and whether they are used for time and attendance. GET /v1/Common/Locations.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_get_location(location_id)

One location by id. GET /v1/Common/Locations/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "location_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Arcoro locationId."
    }
  },
  "required": [
    "location_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_jobs(page, page_size)

List jobs (projects) with identifier, name, active flag, dates, department, parent job and assigned locations. GET /v1/Time/Jobs.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_get_job(job_id)

One job by id. GET /v1/Time/Jobs/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Arcoro jobId."
    }
  },
  "required": [
    "job_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_cost_codes(page, page_size)

List cost codes (phases and work activities that time is booked against) with identifier, name, active flag and cost type. GET /v1/Time/CostCodes.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_get_cost_code(cost_code_id)

One cost code by id. GET /v1/Time/CostCodes/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "cost_code_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Arcoro cost code id."
    }
  },
  "required": [
    "cost_code_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_cost_types(page, page_size)

List cost types (groupings of cost codes, e.g. labor, equipment) with identifier, name and active flag. GET /v1/Time/CostTypes.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_departments(page, page_size)

List departments with identifier, name and active flag. GET /v1/Common/Departments.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_job_codes(page, page_size)

List job codes (positions / trades) with name, description and active flag. GET /v1/Common/JobCodes.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_pay_schedules(page, page_size)

List pay schedules with frequency, first pay date, pay periods per year and the default flag. GET /v1/Payroll/PaySchedules.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_labor_classes(page, page_size)

List labor classes with identifier, name and active flag. GET /v1/Payroll/LaborClasses.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_rate_codes(page, page_size)

List payroll rate codes with identifier, name, description and whether it is the base rate. GET /v1/Payroll/RateCodes.

輸入結構描述

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Results per page, 1-100 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_time_records(from_date, to_date, person_id, location_id, cost_code_identifier, ...)

List time records (timecard entries: who worked, when, on which cost code and location, regular/overtime hours). Filter by work date range, person, location or cost code identifier; newest first. Source: the read-only OData data warehouse, refreshed nightly, so today's entries may not show until tomorrow. Page with skip/next_skip. GET /odata/DwTimeRecords.

輸入結構描述

{
  "type": "object",
  "properties": {
    "from_date": {
      "description": "First work date to include (yyyy-mm-dd).",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "to_date": {
      "description": "Last work date to include (yyyy-mm-dd).",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "person_id": {
      "description": "Only this employee (personId).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "location_id": {
      "description": "Only this location (locationId).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "cost_code_identifier": {
      "description": "Only this cost code identifier.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "active_only": {
      "description": "true: skip deleted/inactive records.",
      "type": "boolean"
    },
    "all_fields": {
      "description": "true: return every warehouse column (GPS, punch ids, modified-by...). Default: the main columns.",
      "type": "boolean"
    },
    "top": {
      "description": "Rows to return, 1-1000 (default 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "skip": {
      "description": "Rows to skip (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_time_punches(from_date, to_date, person_id, location_id, top, ...)

List raw clock punches (punch time, device type, location, network time difference). Filter by date range (UTC days), person or location; newest first. Source: the read-only OData data warehouse, refreshed nightly, so today's entries may not show until tomorrow. Page with skip/next_skip. GET /odata/DwTimePunches.

輸入結構描述

{
  "type": "object",
  "properties": {
    "from_date": {
      "description": "First day to include (yyyy-mm-dd, UTC).",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "to_date": {
      "description": "Last day to include (yyyy-mm-dd, UTC).",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "person_id": {
      "description": "Only this employee (personId).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "location_id": {
      "description": "Only this location (locationId).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "top": {
      "description": "Rows to return, 1-1000 (default 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "skip": {
      "description": "Rows to skip (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_shifts(from_date, to_date, person_id, location_id, top, ...)

List scheduled shifts (employee, start/end, title, cost code, location, notes). Filter by start date range (UTC days), person or location; newest first. Source: the read-only OData data warehouse, refreshed nightly, so today's entries may not show until tomorrow. Page with skip/next_skip. GET /odata/DwShifts.

輸入結構描述

{
  "type": "object",
  "properties": {
    "from_date": {
      "description": "First start day to include (yyyy-mm-dd, UTC).",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "to_date": {
      "description": "Last start day to include (yyyy-mm-dd, UTC).",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "person_id": {
      "description": "Only this employee (personId).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "location_id": {
      "description": "Only this location (locationId).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "top": {
      "description": "Rows to return, 1-1000 (default 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "skip": {
      "description": "Rows to skip (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_pay_periods(from_date, to_date, is_closed, top, skip)

List pay periods (id, start and end date, closed or open, type), newest first. Use the id to find approvals. Source: the read-only OData data warehouse, refreshed nightly, so today's entries may not show until tomorrow. Page with skip/next_skip. GET /odata/DwPayPeriods.

輸入結構描述

{
  "type": "object",
  "properties": {
    "from_date": {
      "description": "Pay periods starting on or after this date.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "to_date": {
      "description": "Pay periods starting on or before this date.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "is_closed": {
      "description": "true: only closed periods; false: only open ones.",
      "type": "boolean"
    },
    "top": {
      "description": "Rows to return, 1-1000 (default 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "skip": {
      "description": "Rows to skip (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_time_off_requests(status, person_id, from_date, to_date, top, ...)

List time off requests (employee, plan, start/end date, hours, status, comments, manager). Filter by status, person or start-date range. Source: the read-only OData data warehouse, refreshed nightly, so today's entries may not show until tomorrow. Page with skip/next_skip. GET /odata/DwTimeOffRequests.

輸入結構描述

{
  "type": "object",
  "properties": {
    "status": {
      "description": "Request status exactly as Arcoro shows it, e.g. Pending, Approved, Denied.",
      "type": "string",
      "minLength": 1,
      "maxLength": 50
    },
    "person_id": {
      "description": "Only this employee (personId).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "from_date": {
      "description": "Requests starting on or after this date.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "to_date": {
      "description": "Requests starting on or before this date.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "top": {
      "description": "Rows to return, 1-1000 (default 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "skip": {
      "description": "Rows to skip (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_time_off_balances(person_id, plan_name, top, skip)

List time off balances per employee and plan (balance hours, maximum balance, manager). Source: the read-only OData data warehouse, refreshed nightly, so today's entries may not show until tomorrow. Page with skip/next_skip. GET /odata/DwTimeOffBalances.

輸入結構描述

{
  "type": "object",
  "properties": {
    "person_id": {
      "description": "Only this employee (personId).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "plan_name": {
      "description": "Only this time off plan, exact name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "top": {
      "description": "Rows to return, 1-1000 (default 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "skip": {
      "description": "Rows to skip (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_timecard_approvals(from_date, to_date, person_id, top, skip)

List daily timecard approvals (work date, approval type, who approved and when, the employee). Filter by work date range or employee. Source: the read-only OData data warehouse, refreshed nightly, so today's entries may not show until tomorrow. Page with skip/next_skip. GET /odata/DwWorkDateTimeApprovals.

輸入結構描述

{
  "type": "object",
  "properties": {
    "from_date": {
      "description": "First work date to include.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "to_date": {
      "description": "Last work date to include.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "person_id": {
      "description": "Only this employee's timecards (personId).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "top": {
      "description": "Rows to return, 1-1000 (default 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "skip": {
      "description": "Rows to skip (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_pay_period_approvals(pay_period_id, person_id, top, skip)

List pay period (timesheet) approvals and sign-offs: pay period, approval type, approver, time, employee, comment. Use it to see who has not yet signed off. Source: the read-only OData data warehouse, refreshed nightly, so today's entries may not show until tomorrow. Page with skip/next_skip. GET /odata/DwPayPeriodApprovals.

輸入結構描述

{
  "type": "object",
  "properties": {
    "pay_period_id": {
      "description": "Only this pay period (from exaktime_list_pay_periods).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "person_id": {
      "description": "Only this employee's timesheets (personId).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "top": {
      "description": "Rows to return, 1-1000 (default 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "skip": {
      "description": "Rows to skip (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_list_meal_break_violations(from_date, to_date, time_record_id, top, skip)

List meal break compliance violations (type, date, expected vs actual value) linked to a time record id. Source: the read-only OData data warehouse, refreshed nightly, so today's entries may not show until tomorrow. Page with skip/next_skip. GET /odata/DwMealBreakViolations.

輸入結構描述

{
  "type": "object",
  "properties": {
    "from_date": {
      "description": "First violation date to include.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "to_date": {
      "description": "Last violation date to include.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "time_record_id": {
      "description": "Only violations of this time record.",
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
    },
    "top": {
      "description": "Rows to return, 1-1000 (default 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "skip": {
      "description": "Rows to skip (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exaktime_query_odata(entity_set, select, filter, orderby, top, ...)

Read-only OData query over any Arcoro data warehouse entity set, for questions the other tools do not cover (equipment, expenses, users, time records by hour group, learning, performance, recruiting, benefits...). Entity sets start with Dw, e.g. DwUsers, DwEquipments, DwExpenses, DwCostCodes, DwLocations, DwTimeRecordByHourGroups, DwEmploymentStatusHistories. Full list: https://my.arcoro.com/api/odata ; schema: https://api.arcoro.com/odata/$metadata. $filter uses OData v4 syntax, e.g. startswith(LastName,'Sm') and IsActive eq true. Source: the read-only OData data warehouse, refreshed nightly, so today's entries may not show until tomorrow. Page with skip/next_skip. GET /odata/{EntitySet}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "entity_set": {
      "type": "string",
      "pattern": "^Dw[A-Za-z0-9]{1,80}$",
      "description": "Entity set name, e.g. DwUsers."
    },
    "select": {
      "description": "Comma-separated property names ($select).",
      "type": "string",
      "maxLength": 1000
    },
    "filter": {
      "description": "OData $filter expression.",
      "type": "string",
      "maxLength": 2000
    },
    "orderby": {
      "description": "OData $orderby, e.g. LastName,FirstName desc.",
      "type": "string",
      "maxLength": 500
    },
    "top": {
      "description": "Rows to return, 1-1000 (default 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "skip": {
      "description": "Rows to skip (default 0). Pass the previous reply's next_skip.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    }
  },
  "required": [
    "entity_set"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡exaktime_create_job(name, identifier, is_active, start_date, end_date, ...)

WRITE: create a job (project) that employees can book time to. Identifier must be unique. The job appears in Arcoro right away; it can be deactivated again with exaktime_update_job (there is no delete). POST /v1/Time/Jobs.

輸入結構描述

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Job name."
    },
    "identifier": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Your unique job number/identifier."
    },
    "is_active": {
      "type": "boolean",
      "description": "Active jobs can be selected for time entry."
    },
    "start_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Job start date."
    },
    "end_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Job end date."
    },
    "is_certified": {
      "type": "boolean",
      "description": "Certified payroll job."
    },
    "department_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Department id (exaktime_list_departments)."
    },
    "parent_job_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Parent job id, to create a sub-job."
    },
    "location_ids": {
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      },
      "description": "Location ids the job is limited to (exaktime_list_locations). Setting them turns off 'available at all locations'."
    },
    "all_locations": {
      "type": "boolean",
      "description": "true: the job is available at every location; false: only at location_ids."
    }
  },
  "required": [
    "name",
    "identifier"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴exaktime_update_job(job_id, name, identifier, is_active, start_date, ...)

WRITE: change fields of an existing job (rename it, set dates, assign locations, or set is_active=false to close it). Only the fields you pass change (null clears a nullable field); the tool reads the job first and sends the full object, because Arcoro replaces the job on PUT. Two edits to the same job at the same moment can overwrite each other: run them one after the other. PUT /v1/Time/Jobs/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Arcoro jobId."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Job name."
    },
    "identifier": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Your unique job number/identifier."
    },
    "is_active": {
      "type": "boolean",
      "description": "Active jobs can be selected for time entry."
    },
    "start_date": {
      "description": "Job start date, or null to clear it.",
      "anyOf": [
        {
          "type": "string",
          "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
          "description": "Job start date."
        },
        {
          "type": "null"
        }
      ]
    },
    "end_date": {
      "description": "Job end date, or null to clear it.",
      "anyOf": [
        {
          "type": "string",
          "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
          "description": "Job end date."
        },
        {
          "type": "null"
        }
      ]
    },
    "is_certified": {
      "type": "boolean",
      "description": "Certified payroll job."
    },
    "department_id": {
      "description": "Department id, or null to clear it.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991,
          "description": "Department id (exaktime_list_departments)."
        },
        {
          "type": "null"
        }
      ]
    },
    "parent_job_id": {
      "description": "Parent job id, or null to detach the job from its parent.",
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991,
          "description": "Parent job id, to create a sub-job."
        },
        {
          "type": "null"
        }
      ]
    },
    "location_ids": {
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      },
      "description": "Location ids the job is limited to (exaktime_list_locations). Setting them turns off 'available at all locations'."
    },
    "all_locations": {
      "type": "boolean",
      "description": "true: the job is available at every location; false: only at location_ids."
    }
  },
  "required": [
    "job_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡exaktime_create_cost_code(identifier, name, is_active, display_option, cost_type_id)

WRITE: create a cost code (phase or work activity) that time can be booked against. The name must be unique. It can be deactivated again with exaktime_update_cost_code (there is no delete). POST /v1/Time/CostCodes.

輸入結構描述

{
  "type": "object",
  "properties": {
    "identifier": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Your unique cost code identifier."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Cost code name (unique)."
    },
    "is_active": {
      "description": "Default true.",
      "type": "boolean"
    },
    "display_option": {
      "type": "string",
      "enum": [
        "Default",
        "System"
      ],
      "description": "Default: selectable by users. System: system-defined, hidden from users."
    },
    "cost_type_id": {
      "description": "Cost type id (exaktime_list_cost_types).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "identifier",
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴exaktime_update_cost_code(cost_code_id, identifier, name, is_active, display_option, ...)

WRITE: change fields of an existing cost code (rename it, change its cost type, or set is_active=false to retire it). Only the fields you pass change; the tool reads the cost code first and sends the full object. PUT /v1/Time/CostCodes/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "cost_code_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Arcoro cost code id."
    },
    "identifier": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "is_active": {
      "type": "boolean"
    },
    "display_option": {
      "type": "string",
      "enum": [
        "Default",
        "System"
      ],
      "description": "Default: selectable by users. System: system-defined, hidden from users."
    },
    "cost_type_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "cost_code_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡exaktime_create_location(name, identifier, is_active, is_time_and_attendance, is_office, ...)

WRITE: create a location (job site or office). Add the address and/or latitude and longitude so geofencing and maps work. It can be deactivated again with exaktime_update_location (there is no delete). POST /v1/Common/Locations.

輸入結構描述

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Location name."
    },
    "identifier": {
      "description": "Your location identifier.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "is_active": {
      "description": "Default true.",
      "type": "boolean"
    },
    "is_time_and_attendance": {
      "description": "Employees can clock in at this location.",
      "type": "boolean"
    },
    "is_office": {
      "type": "boolean"
    },
    "comments": {
      "type": "string",
      "maxLength": 2000
    },
    "onboarding_business_unit_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Onboarding business unit id; Arcoro requires it for an office when Onboarding business units are enabled."
    },
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "address": {
      "type": "object",
      "properties": {
        "address_line1": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "address_line2": {
          "type": "string",
          "maxLength": 200
        },
        "city": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "country_code": {
          "type": "string",
          "minLength": 2,
          "maxLength": 3,
          "description": "ISO country code, e.g. US."
        },
        "state_code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 10,
          "description": "State/province code, e.g. TX."
        },
        "postal_code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        }
      },
      "required": [
        "address_line1",
        "city",
        "country_code",
        "state_code",
        "postal_code"
      ],
      "description": "Street address; every field except address_line2 is required by Arcoro."
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴exaktime_update_location(location_id, name, identifier, is_active, is_time_and_attendance, ...)

WRITE: change fields of an existing location (rename, move, new address, or set is_active=false to retire it). Only the fields you pass change; the tool reads the location first and sends the full object. PUT /v1/Common/Locations/{id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "location_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Arcoro locationId."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "identifier": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "is_active": {
      "type": "boolean"
    },
    "is_time_and_attendance": {
      "type": "boolean"
    },
    "is_office": {
      "type": "boolean"
    },
    "comments": {
      "type": "string",
      "maxLength": 2000
    },
    "onboarding_business_unit_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Onboarding business unit id; Arcoro requires it for an office when Onboarding business units are enabled."
    },
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "address": {
      "type": "object",
      "properties": {
        "address_line1": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "address_line2": {
          "type": "string",
          "maxLength": 200
        },
        "city": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "country_code": {
          "type": "string",
          "minLength": 2,
          "maxLength": 3,
          "description": "ISO country code, e.g. US."
        },
        "state_code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 10,
          "description": "State/province code, e.g. TX."
        },
        "postal_code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        }
      },
      "required": [
        "address_line1",
        "city",
        "country_code",
        "state_code",
        "postal_code"
      ],
      "description": "Street address; every field except address_line2 is required by Arcoro."
    }
  },
  "required": [
    "location_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本32 個工具