# ExakTime / Arcoro MCP by usefulapi (remote · exaktime.usefulapi.io)

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

- Trust score: 18/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-06

## Components

- remote · `exaktime.usefulapi.io`: 18/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-exaktime/exaktime.md), [page](https://verifymcp.io/servers/io-usefulapi-exaktime/exaktime)

## Channel facts

- Endpoint: `https://exaktime.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.6.4`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-06.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the ExakTime / Arcoro MCP by usefulapi server?

ExakTime / Arcoro MCP by usefulapi is a hosted endpoint at https://exaktime.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-exaktime 'https://exaktime.usefulapi.io/mcp'
```

### Cursor

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

### VS Code

```json
{
  "servers": {
    "io-usefulapi-exaktime": {
      "type": "http",
      "url": "https://exaktime.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-exaktime]
url = "https://exaktime.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-exaktime": {
      "type": "remote",
      "url": "https://exaktime.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-exaktime --url 'https://exaktime.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-exaktime:
    url: "https://exaktime.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-exaktime": {
      "Transport": "http",
      "Url": "https://exaktime.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-exaktime -t streamable-http -u 'https://exaktime.usefulapi.io/mcp'
```

### Other

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

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-06 (score 18, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-11-02 (score 18, −45)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Tool safety: pass → unverified
- [security regression] Authorization: pass → unverified
- [security regression] Stability: 0.03 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-11-01 (score 63, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-31 (score 63)

First indexed and scored.

## MCP tools (32)

### `exaktime_list_employees` (~107 tokens)

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.

Input parameters:

- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-100 (default 50).

### `exaktime_list_persons` (~157 tokens)

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.

Input parameters:

- `employee_identifier` (string): Your employee id / number.
- `first_name` (string): First name filter.
- `last_name` (string): Last name filter.
- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-100 (default 50).
- `work_email` (string): Work email address.

### `exaktime_get_person` (~59 tokens)

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

Input parameters:

- `person_id` (integer, required): Arcoro personId.

### `exaktime_get_employee` (~70 tokens)

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.

Input parameters:

- `person_id` (integer, required): Arcoro personId.

### `exaktime_list_locations` (~88 tokens)

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.

Input parameters:

- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-100 (default 50).

### `exaktime_get_location` (~37 tokens)

Get location

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

Input parameters:

- `location_id` (integer, required): Arcoro locationId.

### `exaktime_list_jobs` (~87 tokens)

List jobs

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

Input parameters:

- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-100 (default 50).

### `exaktime_get_job` (~38 tokens)

Get job

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

Input parameters:

- `job_id` (integer, required): Arcoro jobId.

### `exaktime_list_cost_codes` (~92 tokens)

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.

Input parameters:

- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-100 (default 50).

### `exaktime_get_cost_code` (~43 tokens)

Get cost code

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

Input parameters:

- `cost_code_id` (integer, required): Arcoro cost code id.

### `exaktime_list_cost_types` (~91 tokens)

List cost types

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

Input parameters:

- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-100 (default 50).

### `exaktime_list_departments` (~74 tokens)

List departments

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

Input parameters:

- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-100 (default 50).

### `exaktime_list_job_codes` (~81 tokens)

List job codes

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

Input parameters:

- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-100 (default 50).

### `exaktime_list_pay_schedules` (~86 tokens)

List pay schedules

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

Input parameters:

- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-100 (default 50).

### `exaktime_list_labor_classes` (~78 tokens)

List labor classes

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

Input parameters:

- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-100 (default 50).

### `exaktime_list_rate_codes` (~84 tokens)

List rate codes

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

Input parameters:

- `page` (integer): Page number, from 1 (default 1). Pass the previous reply's next_page.
- `page_size` (integer): Results per page, 1-100 (default 50).

### `exaktime_list_time_records` (~251 tokens)

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.

Input parameters:

- `active_only` (boolean): true: skip deleted/inactive records.
- `all_fields` (boolean): true: return every warehouse column (GPS, punch ids, modified-by...). Default: the main columns.
- `cost_code_identifier` (string): Only this cost code identifier.
- `from_date` (string): First work date to include (yyyy-mm-dd).
- `location_id` (integer): Only this location (locationId).
- `person_id` (integer): Only this employee (personId).
- `skip` (integer): Rows to skip (default 0). Pass the previous reply's next_skip.
- `to_date` (string): Last work date to include (yyyy-mm-dd).
- `top` (integer): Rows to return, 1-1000 (default 100).

### `exaktime_list_time_punches` (~190 tokens)

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.

Input parameters:

- `from_date` (string): First day to include (yyyy-mm-dd, UTC).
- `location_id` (integer): Only this location (locationId).
- `person_id` (integer): Only this employee (personId).
- `skip` (integer): Rows to skip (default 0). Pass the previous reply's next_skip.
- `to_date` (string): Last day to include (yyyy-mm-dd, UTC).
- `top` (integer): Rows to return, 1-1000 (default 100).

### `exaktime_list_shifts` (~190 tokens)

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.

Input parameters:

- `from_date` (string): First start day to include (yyyy-mm-dd, UTC).
- `location_id` (integer): Only this location (locationId).
- `person_id` (integer): Only this employee (personId).
- `skip` (integer): Rows to skip (default 0). Pass the previous reply's next_skip.
- `to_date` (string): Last start day to include (yyyy-mm-dd, UTC).
- `top` (integer): Rows to return, 1-1000 (default 100).

### `exaktime_list_pay_periods` (~169 tokens)

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.

Input parameters:

- `from_date` (string): Pay periods starting on or after this date.
- `is_closed` (boolean): true: only closed periods; false: only open ones.
- `skip` (integer): Rows to skip (default 0). Pass the previous reply's next_skip.
- `to_date` (string): Pay periods starting on or before this date.
- `top` (integer): Rows to return, 1-1000 (default 100).

### `exaktime_list_time_off_requests` (~192 tokens)

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.

Input parameters:

- `from_date` (string): Requests starting on or after this date.
- `person_id` (integer): Only this employee (personId).
- `skip` (integer): Rows to skip (default 0). Pass the previous reply's next_skip.
- `status` (string): Request status exactly as Arcoro shows it, e.g. Pending, Approved, Denied.
- `to_date` (string): Requests starting on or before this date.
- `top` (integer): Rows to return, 1-1000 (default 100).

### `exaktime_list_time_off_balances` (~140 tokens)

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.

Input parameters:

- `person_id` (integer): Only this employee (personId).
- `plan_name` (string): Only this time off plan, exact name.
- `skip` (integer): Rows to skip (default 0). Pass the previous reply's next_skip.
- `top` (integer): Rows to return, 1-1000 (default 100).

### `exaktime_list_timecard_approvals` (~167 tokens)

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.

Input parameters:

- `from_date` (string): First work date to include.
- `person_id` (integer): Only this employee's timecards (personId).
- `skip` (integer): Rows to skip (default 0). Pass the previous reply's next_skip.
- `to_date` (string): Last work date to include.
- `top` (integer): Rows to return, 1-1000 (default 100).

### `exaktime_list_pay_period_approvals` (~171 tokens)

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.

Input parameters:

- `pay_period_id` (integer): Only this pay period (from exaktime_list_pay_periods).
- `person_id` (integer): Only this employee's timesheets (personId).
- `skip` (integer): Rows to skip (default 0). Pass the previous reply's next_skip.
- `top` (integer): Rows to return, 1-1000 (default 100).

### `exaktime_list_meal_break_violations` (~159 tokens)

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.

Input parameters:

- `from_date` (string): First violation date to include.
- `skip` (integer): Rows to skip (default 0). Pass the previous reply's next_skip.
- `time_record_id` (string): Only violations of this time record.
- `to_date` (string): Last violation date to include.
- `top` (integer): Rows to return, 1-1000 (default 100).

### `exaktime_query_odata` (~288 tokens)

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

Input parameters:

- `entity_set` (string, required): Entity set name, e.g. DwUsers.
- `filter` (string): OData $filter expression.
- `orderby` (string): OData $orderby, e.g. LastName,FirstName desc.
- `select` (string): Comma-separated property names ($select).
- `skip` (integer): Rows to skip (default 0). Pass the previous reply's next_skip.
- `top` (integer): Rows to return, 1-1000 (default 100).

### `exaktime_create_job` (~227 tokens)

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.

Input parameters:

- `all_locations` (boolean): true: the job is available at every location; false: only at location_ids.
- `department_id` (integer): Department id (exaktime_list_departments).
- `end_date` (string): Job end date.
- `identifier` (string, required): Your unique job number/identifier.
- `is_active` (boolean): Active jobs can be selected for time entry.
- `is_certified` (boolean): Certified payroll job.
- `location_ids` (array): Location ids the job is limited to (exaktime_list_locations). Setting them turns off 'available at all locations'.
- `name` (string, required): Job name.
- `parent_job_id` (integer): Parent job id, to create a sub-job.
- `start_date` (string): Job start date.

### `exaktime_update_job` (~285 tokens)

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

Input parameters:

- `all_locations` (boolean): true: the job is available at every location; false: only at location_ids.
- `department_id`: Department id, or null to clear it.
- `end_date`: Job end date, or null to clear it.
- `identifier` (string): Your unique job number/identifier.
- `is_active` (boolean): Active jobs can be selected for time entry.
- `is_certified` (boolean): Certified payroll job.
- `job_id` (integer, required): Arcoro jobId.
- `location_ids` (array): Location ids the job is limited to (exaktime_list_locations). Setting them turns off 'available at all locations'.
- `name` (string): Job name.
- `parent_job_id`: Parent job id, or null to detach the job from its parent.
- `start_date`: Job start date, or null to clear it.

### `exaktime_create_cost_code` (~139 tokens)

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.

Input parameters:

- `cost_type_id` (integer): Cost type id (exaktime_list_cost_types).
- `display_option` (string): Default: selectable by users. System: system-defined, hidden from users.
- `identifier` (string, required): Your unique cost code identifier.
- `is_active` (boolean): Default true.
- `name` (string, required): Cost code name (unique).

### `exaktime_update_cost_code` (~137 tokens)

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

Input parameters:

- `cost_code_id` (integer, required): Arcoro cost code id.
- `cost_type_id` (integer)
- `display_option` (string): Default: selectable by users. System: system-defined, hidden from users.
- `identifier` (string)
- `is_active` (boolean)
- `name` (string)

### `exaktime_create_location` (~190 tokens)

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.

Input parameters:

- `address` (object): Street address; every field except address_line2 is required by Arcoro.
- `comments` (string)
- `identifier` (string): Your location identifier.
- `is_active` (boolean): Default true.
- `is_office` (boolean)
- `is_time_and_attendance` (boolean): Employees can clock in at this location.
- `latitude` (number)
- `longitude` (number)
- `name` (string, required): Location name.
- `onboarding_business_unit_id` (integer): Onboarding business unit id; Arcoro requires it for an office when Onboarding business units are enabled.

### `exaktime_update_location` (~190 tokens)

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

Input parameters:

- `address` (object): Street address; every field except address_line2 is required by Arcoro.
- `comments` (string)
- `identifier` (string)
- `is_active` (boolean)
- `is_office` (boolean)
- `is_time_and_attendance` (boolean)
- `latitude` (number)
- `location_id` (integer, required): Arcoro locationId.
- `longitude` (number)
- `name` (string)
- `onboarding_business_unit_id` (integer): Onboarding business unit id; Arcoro requires it for an office when Onboarding business units are enabled.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-exaktime/exaktime#diagnostics

## Score history

- 2026-11-06: 18
- 2026-11-05: 18
- 2026-11-04: 18
- 2026-11-03: 18
- 2026-11-02: 18
- 2026-11-01: 63
- 2026-10-31: 63

## Common questions

### What is the ExakTime / Arcoro MCP by usefulapi server?

ExakTime / Arcoro MCP by usefulapi is listed in the public MCP registry as io.usefulapi/exaktime. MCP server for Arcoro and ExakTime, workforce data, jobs, cost codes and locations. This page covers its hosted endpoint (https://exaktime.usefulapi.io/mcp).

### Is the ExakTime / Arcoro MCP by usefulapi server safe to use?

ExakTime / Arcoro MCP by usefulapi scores 18 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the ExakTime / Arcoro MCP by usefulapi server expose?

ExakTime / Arcoro MCP by usefulapi exposes 32 tools: exaktime_list_employees, exaktime_list_persons, exaktime_get_person, exaktime_get_employee, exaktime_list_locations, and 27 more. Their descriptions and schemas cost roughly 4,357 tokens of context every time the server is loaded.

### Does the ExakTime / Arcoro MCP by usefulapi server require authentication?

Its publisher declares no required credentials for ExakTime / Arcoro MCP by usefulapi. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

### Is the ExakTime / Arcoro MCP by usefulapi server still maintained?

ExakTime / Arcoro MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 6 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the ExakTime / Arcoro MCP by usefulapi server?

VerifyMCP ran 4 checks on ExakTime / Arcoro MCP by usefulapi, covering TLS certificate, HSTS header, DNSSEC and Transport. 7 items could not be completed, a gap on our side rather than a finding about ExakTime / Arcoro MCP by usefulapi: Authorization, HTTPS, Schema quality, Stability and 3 more. 5 categories score 0 for that reason, because we only credit what we can confirm. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://exaktime.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/exaktime/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-exaktime/exaktime.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-exaktime/exaktime/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/io-usefulapi-exaktime/exaktime.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-exaktime/exaktime
