ExakTime / Arcoro MCP by usefulapi

io.usefulapiPublished by usefulapi.ioOfficial publisherv1.7.4Updated Nov 7, 2026

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

The publisher's own server: Ably MCP by usefulapi

Overview

AI-generated overview

Remote MCP server for Arcoro/ExakTime workforce data, letting an assistant read employees, jobs, time records, time off and approvals, and create or update…

What you can do
  • Look up people and employment details: employees, persons, hire dates, pay rates, departments, job codes, pay schedules and labor classes
  • Browse jobs, cost codes, cost types and locations (job sites and offices)
  • Review time and attendance: time records, raw punches, scheduled shifts, pay periods, time off requests and balances
  • Check approvals and compliance: timecard and pay period sign-offs, meal break violations
  • Run read-only OData queries over other Arcoro warehouse entity sets such as equipment, expenses and users
  • Create and update jobs, cost codes and locations (no delete; items are deactivated instead)
When to use it
Useful when you want to ask questions in plain language about construction or field workforce data — who worked on a job, overtime hours, missing timesheet sign-offs, pending time off — or to add and adjust jobs, cost codes and locations without opening Arcoro.
Requirements
A remote MCP endpoint added by URL only; sign-in is via OAuth with your ExakTime/Arcoro credentials, so no API key or Authorization header goes in the client config. The Arcoro account must be API-enabled. A free plan allows 50 tool calls per month; paid plans raise the limit.
Before you install
Write tools create or change jobs, cost codes and locations in Arcoro immediately, and there is no delete — only deactivation; confirm before running them. The server returns personal and payroll data (contact details, pay rates, security groups), so treat responses as sensitive. Usage is metered and paid plans are billed through a checkout link; cancelling does not refund the current period. Warehouse-backed data refreshes nightly, so today's entries may be missing.

Installation

In SourceWeft

  1. Open ExakTime / Arcoro MCP by usefulapi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.usefulapi%2Fexaktime/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "exaktime-arcoro-by-usefulapi": {
      "type": "http",
      "url": "https://exaktime.usefulapi.io/mcp"
    }
  }
}

README

ExakTime / Arcoro MCP by usefulapi

Connect your API-enabled ExakTime / Arcoro account.

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://exaktime.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http exaktime https://exaktime.usefulapi.io/mcp, then run /mcp to log in.
  • VS Code: Add to VS Code.
  • Cursor and other clients: add the URL as a remote MCP server:
json
{  "mcpServers": {    "exaktime": {      "url": "https://exaktime.usefulapi.io/mcp"    }  }}

Add only the URL. Do not add an Authorization header or an API key to the client config: the server signs you in with OAuth, and the login page asks for your ExakTime / Arcoro credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/exaktime/

Tools

ToolTypeWhat it does
exaktime_list_employeesreadList employees
exaktime_list_personsreadSearch persons
exaktime_get_personreadGet person
exaktime_get_employeereadGet employee
exaktime_list_locationsreadList locations
exaktime_get_locationreadGet location
exaktime_list_jobsreadList jobs
exaktime_get_jobreadGet job
exaktime_list_cost_codesreadList cost codes
exaktime_get_cost_codereadGet cost code
exaktime_list_cost_typesreadList cost types
exaktime_list_departmentsreadList departments
exaktime_list_job_codesreadList job codes
exaktime_list_pay_schedulesreadList pay schedules
exaktime_list_labor_classesreadList labor classes
exaktime_list_rate_codesreadList rate codes
exaktime_list_time_recordsreadList time records
exaktime_list_time_punchesreadList time punches
exaktime_list_shiftsreadList scheduled shifts
exaktime_list_pay_periodsreadList pay periods
exaktime_list_time_off_requestsreadList time off requests
exaktime_list_time_off_balancesreadList time off balances
exaktime_list_timecard_approvalsreadList daily timecard approvals
exaktime_list_pay_period_approvalsreadList pay period approvals
exaktime_list_meal_break_violationsreadList meal break violations
exaktime_query_odatareadQuery any OData entity set
exaktime_create_jobwriteCreate job
exaktime_update_jobwriteUpdate job
exaktime_create_cost_codewriteCreate cost code
exaktime_update_cost_codewriteUpdate cost code
exaktime_create_locationwriteCreate location
exaktime_update_locationwriteUpdate location
exaktime_usage_statusmetaUsage status (free-tier meter)
exaktime_request_featuremetaRequest a missing feature
exaktime_upgrademetaUpgrade to Pro or Pro+
exaktime_cancel_subscriptionmetaCancel the Pro subscription

read tools are read-only; write tools mutate data (clients should confirm them); meta tools report usage, manage your subscription or send a feature request.

Pricing

PlanPriceLimit
Free$050 tool calls / month
Pro (per verified tenant (API key when tenant is unavailable))$9/mo or $90/yr (2 months free)Unlimited*

*Pro has a fair use limit of 10,000 tool calls a month on this server. For more, write to [email protected].

Pro covers this server only. Subscribe with exaktime_upgrade (it returns a Stripe Checkout link). Cancel any time with exaktime_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running exaktime_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT

Source: servers/exaktime/README.md at commit 4046075

Tools

32

exaktime_list_employees

List employees

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.

Parameterspagepage_size

exaktime_list_persons

Search persons

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.

Parameterspagelast_namepage_sizefirst_namework_emailemployee_identifier

exaktime_get_person

Get person

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}.

Parametersperson_idrequired

exaktime_get_employee

Get employee

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.

Parametersperson_idrequired

exaktime_list_locations

List locations

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

Parameterspagepage_size

exaktime_get_location

Get location

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

Parameterslocation_idrequired

exaktime_list_jobs

List jobs

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

Parameterspagepage_size

exaktime_get_job

Get job

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

Parametersjob_idrequired

exaktime_list_cost_codes

List cost codes

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

Parameterspagepage_size

exaktime_get_cost_code

Get cost code

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

Parameterscost_code_idrequired

exaktime_list_cost_types

List cost types

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

Parameterspagepage_size

exaktime_list_departments

List departments

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

Parameterspagepage_size

exaktime_list_job_codes

List job codes

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

Parameterspagepage_size

exaktime_list_pay_schedules

List pay schedules

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

Parameterspagepage_size

exaktime_list_labor_classes

List labor classes

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

Parameterspagepage_size

exaktime_list_rate_codes

List rate codes

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

Parameterspagepage_size

exaktime_list_time_records

List time records

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.

Parameterstopskipto_datefrom_dateperson_idall_fieldsactive_onlylocation_idcost_code_identifier

exaktime_list_time_punches

List time punches

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.

Parameterstopskipto_datefrom_dateperson_idlocation_id

exaktime_list_shifts

List scheduled shifts

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.

Parameterstopskipto_datefrom_dateperson_idlocation_id

exaktime_list_pay_periods

List pay periods

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.

Parameterstopskipto_datefrom_dateis_closed

exaktime_list_time_off_requests

List time off requests

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.

Parameterstopskipstatusto_datefrom_dateperson_id

exaktime_list_time_off_balances

List time off balances

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.

Parameterstopskipperson_idplan_name

exaktime_list_timecard_approvals

List daily timecard approvals

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.

Parameterstopskipto_datefrom_dateperson_id

exaktime_list_pay_period_approvals

List pay period approvals

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.

Parameterstopskipperson_idpay_period_id

exaktime_list_meal_break_violations

List meal break violations

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.

Parameterstopskipto_datefrom_datetime_record_id

exaktime_query_odata

Query any OData entity set

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}.

Parameterstopskipfilterselectorderbyentity_setrequired

exaktime_create_job

Create job

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.

Parametersnamerequiredend_dateis_activeidentifierrequiredstart_dateis_certifiedlocation_idsall_locationsdepartment_idparent_job_id

exaktime_update_job

Update job

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}.

Parametersnamejob_idrequiredend_dateis_activeidentifierstart_dateis_certifiedlocation_idsall_locationsdepartment_idparent_job_id

exaktime_create_cost_code

Create cost code

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.

Parametersnamerequiredis_activeidentifierrequiredcost_type_iddisplay_option

exaktime_update_cost_code

Update cost code

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}.

Parametersnameis_activeidentifiercost_code_idrequiredcost_type_iddisplay_option

exaktime_create_location

Create location

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.

Parametersnamerequiredaddresscommentslatitudeis_activeis_officelongitudeidentifieris_time_and_attendanceonboarding_business_unit_id

exaktime_update_location

Update location

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}.

Parametersnameaddresscommentslatitudeis_activeis_officelongitudeidentifierlocation_idrequiredis_time_and_attendanceonboarding_business_unit_id

Version history

10
  1. v1.7.4LatestNov 7, 2026
  2. v1.6.3Nov 5, 2026
  3. v1.6.2Nov 5, 2026
  4. v1.6.1Nov 4, 2026
  5. v1.6.0Nov 3, 2026
  6. v1.5.1Nov 3, 2026
  7. v1.4.0Nov 1, 2026
  8. v1.2.0Oct 31, 2026
  9. v1.1.0Oct 31, 2026
  10. v1.0.1Oct 31, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Usefulapi integrations