Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Papershift MCP by usefulapi

REMOTE · PAPERSHIFT.USEFULAPI.IO

Read Papershift absences, vacation, time tracking and shifts; request and review absences.

63 Trust /100

Last scanned (11 hours ago)

Scores higher than 47% of remote servers

Reachable. Last reached 25 Oct 2026.

Category Project Management

Trust breakdown (7 categories)

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. How we score → Why this is hard to score →

Endpoint Security78
Transport & Reachability0
Schema Quality & AI Usability84
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2923 tokens (~112/item across 26 items; 26 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
  • Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 26 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 27 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 25 Oct 26 0
    • Stability: unverified → 0.03 ▲ functional
  • 24 Oct 26 63

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 25 Oct 2026 · Probed https://papershift.usefulapi.io/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=usefulapi.io CN=WE1,O=Google Trust Services,C=US 13 Sept 2026 12 Dec 2026 ECDSA 256 ECDSA-SHA256 d9be3287b0fde9630e825ba1f79bff3f
SANs: usefulapi.io, *.usefulapi.io
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of papershift.usefulapi.io. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 38690, 57355 8, 8 Verified
usefulapi.io. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 302

WWW-Authenticate challenge Bearer realm="OAuth", resource_metadata="https://papershift.usefulapi.io/.well-known/oauth-protected-resource/mcp"

Bearer realm="OAuth", resource_metadata="https://papershift.usefulapi.io/.well-known/oauth-protected-resource/mcp"

Protected resource metadata

Document https://papershift.usefulapi.io/.well-known/oauth-protected-resource/mcp
Retrieved Yes
Resource https://papershift.usefulapi.io/mcp
Authorisation server https://papershift.usefulapi.io

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://papershift.usefulapi.io/mcp Redirected 302 https://usefulapi.io/papershift/
http (plaintext) http://papershift.usefulapi.io/mcp Inconclusive 302 http://papershift.usefulapi.io/mcp
MCP tools · 26 exposed · ~2,666 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
papershift_assign_user_to_shift ~107

WRITE: put an employee on a shift (or, with application true, record them as having applied for it). The employee is typically notified of the assignment. An already assigned user is re-assigned. Returns the shift's assigned and applied users. POST /assignments.

NameTypeReqDescription
applicationboolean–True = record as an application instead of assigning directly.
shift_idintegeryesPapershift shift id.
user_idintegeryesEmployee to assign.

No output schema declared.

No examples provided.

papershift_confirm_time_tracking ~66

WRITE: confirm (approve) a worked-time entry so it counts as final for payroll and balances. Find ids with papershift_list_time_trackings. PUT /working_sessions/confirm.

NameTypeReqDescription
time_tracking_idintegeryesPapershift time tracking (working session) id.

No output schema declared.

No examples provided.

papershift_create_absence ~232

WRITE: record an absence (vacation, sick leave, ...) for an employee. Get the absence type id from papershift_list_absence_types and the user id from papershift_list_users. Whether it counts immediately or waits for approval depends on the absence type and the account's approval rules; the employee may be notified. Papershift calculates the paid hours and vacation days. POST /absences.

NameTypeReqDescription
absence_type_idintegeryesAbsence type id.
ends_atstringyesISO 8601 date-time with a timezone, e.g. 2026-11-02T08:00:00+01:00.
full_dayboolean–True for whole-day absences.
starts_atstringyesISO 8601 date-time with a timezone, e.g. 2026-11-02T08:00:00+01:00.
time_zonestring–IANA time zone of the times, e.g. Europe/Berlin (recommended).
user_idintegeryesEmployee the absence is for.

No output schema declared.

No examples provided.

papershift_create_shift ~232

WRITE: plan a new shift in a location and working area for a number of employees. Set visible to true only if employees should see it right away (default: left to the account's setting). Assign people afterwards with papershift_assign_user_to_shift. POST /shifts.

NameTypeReqDescription
ends_atstringyesISO 8601 date-time with a timezone, e.g. 2026-11-02T08:00:00+01:00.
location_idintegeryesLocation of the shift.
notestring–Optional note shown on the shift.
number_of_employeesintegeryesHow many employees the shift needs.
starts_atstringyesISO 8601 date-time with a timezone, e.g. 2026-11-02T08:00:00+01:00.
tag_idsarray–Tag ids to put on the shift (papershift_list_tags).
visibleboolean–Whether employees can see the shift (published).
working_area_idintegeryesWorking area of the shift.

No output schema declared.

No examples provided.

papershift_create_time_tracking ~204

WRITE: add a worked-time entry for an employee after the fact (start, end and break minutes) in a location and working area. It changes the employee's recorded hours and balance. Ids from papershift_list_locations, papershift_list_working_areas and papershift_list_users. POST /working_sessions.

NameTypeReqDescription
ends_atstringyesISO 8601 date-time with a timezone, e.g. 2026-11-02T08:00:00+01:00.
location_idintegeryesLocation the work was done in.
manual_pauseinteger–Break length in minutes.
starts_atstringyesISO 8601 date-time with a timezone, e.g. 2026-11-02T08:00:00+01:00.
user_idintegeryesEmployee who worked.
working_area_idintegeryesWorking area the work was done in.

No output schema declared.

No examples provided.

papershift_get_absence ~46

One absence by id, with its status, confirmation, hours and vacation days. GET /absences?id=.

NameTypeReqDescription
absence_idintegeryesPapershift absence id.

No output schema declared.

No examples provided.

papershift_get_account ~36

The Papershift account this API key belongs to (id and name). A quick way to check the connection. GET /accounts.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

papershift_get_location ~33

One location by id. GET /locations?id=.

NameTypeReqDescription
location_idintegeryesPapershift location id.

No output schema declared.

No examples provided.

papershift_get_shift ~34

One shift by id. GET /shifts?id=.

NameTypeReqDescription
shift_idintegeryesPapershift shift id.

No output schema declared.

No examples provided.

papershift_get_time_tracking ~52

One worked-time entry by id, with its breaks, tags and break total. GET /working_sessions?id=.

NameTypeReqDescription
time_tracking_idintegeryesPapershift time tracking (working session) id.

No output schema declared.

No examples provided.

papershift_get_user ~48

One employee by id: contact data, status, locations, working areas, tags and profile fields. GET /users?id=.

NameTypeReqDescription
user_idintegeryesPapershift user id.

No output schema declared.

No examples provided.

papershift_list_absence_types ~90

List the absence types of a location (vacation, sick leave, ...) with id, title and rules. Use the ids to create absences. GET /absence_types.

NameTypeReqDescription
location_idintegeryesPapershift location id.
pageinteger–Page number, from 1 (default 1; 25 records per page). Pass the previous reply's next_page.

No output schema declared.

No examples provided.

papershift_list_absences ~148

List absences (vacation, sick leave, ...) that fall between two dates, optionally for one employee or location. Shows type title, times, hours, vacation days and whether it is confirmed. 25 per page. GET /absences.

NameTypeReqDescription
location_idinteger–Only this location.
pageinteger–Page number, from 1 (default 1; 25 records per page). Pass the previous reply's next_page.
range_endstringyesLast day of the range, yyyy-mm-dd.
range_startstringyesFirst day of the range, yyyy-mm-dd.
user_idinteger–Only this employee.

No output schema declared.

No examples provided.

papershift_list_availabilities ~105

The times an employee has marked as available between two dates. 25 per page. GET /availabilities.

NameTypeReqDescription
end_datestringyesLast day, yyyy-mm-dd.
pageinteger–Page number, from 1 (default 1; 25 records per page). Pass the previous reply's next_page.
start_datestringyesFirst day, yyyy-mm-dd.
user_idintegeryesPapershift user id.

No output schema declared.

No examples provided.

papershift_list_evaluations ~124

An employee's daily evaluations: target, planned and actual hours, vacation and compensation per day. Use it for overtime and balance questions. 25 per page. GET /evaluations.

NameTypeReqDescription
pageinteger–Page number, from 1 (default 1; 25 records per page). Pass the previous reply's next_page.
range_endstring–Last day, yyyy-mm-dd (default: today).
range_startstringyesFirst day, yyyy-mm-dd.
user_idintegeryesPapershift user id.

No output schema declared.

No examples provided.

papershift_list_locations ~42

List all locations (sites/companies inside the account) with id, name and status. Most other tools need a location id from here. GET /locations.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

papershift_list_payrolls ~90

An employee's payroll entries (paid hours, salary, bonus, time-account start/end per period). Sensitive pay data. 25 per page. GET /payrolls.

NameTypeReqDescription
pageinteger–Page number, from 1 (default 1; 25 records per page). Pass the previous reply's next_page.
user_idintegeryesPapershift user id.

No output schema declared.

No examples provided.

papershift_list_shift_assignments ~51

Who is assigned to a shift and who has applied for it (user id and name). GET /assignments?shift_id=.

NameTypeReqDescription
shift_idintegeryesPapershift shift id.

No output schema declared.

No examples provided.

papershift_list_shifts ~179

List planned shifts of a location between two dates, optionally for one working area or tags. Shows start, end, number of employees needed, note and visibility. Assigned employees: papershift_list_shift_assignments. 25 per page. GET /shifts.

NameTypeReqDescription
location_idintegeryesPapershift location id.
pageinteger–Page number, from 1 (default 1; 25 records per page). Pass the previous reply's next_page.
range_endstringyesLast day, yyyy-mm-dd.
range_startstringyesFirst day, yyyy-mm-dd.
tag_idsarray–Only records with one of these tag ids (from papershift_list_tags). Include 0 to also match records without tags.
working_area_idinteger–Only this working area.

No output schema declared.

No examples provided.

papershift_list_tags ~43

List the tags of a location (labels on shifts, time trackings and employees). GET /filters.

NameTypeReqDescription
location_idintegeryesPapershift location id.

No output schema declared.

No examples provided.

papershift_list_target_hours ~118

An employee's contractual target hours (weekly/monthly rhythm and hours per weekday) over time. 25 per page. GET /target_hours.

NameTypeReqDescription
end_datestring–Only entries up to this date, yyyy-mm-dd.
pageinteger–Page number, from 1 (default 1; 25 records per page). Pass the previous reply's next_page.
start_datestring–Only entries from this date, yyyy-mm-dd.
user_idintegeryesPapershift user id.

No output schema declared.

No examples provided.

papershift_list_time_trackings ~135

List worked-time entries (clock-ins) from a start date, optionally to an end date and for one employee. Shows start, end, break time, location, employee and whether confirmed. 25 per page. GET /working_sessions.

NameTypeReqDescription
pageinteger–Page number, from 1 (default 1; 25 records per page). Pass the previous reply's next_page.
range_endstring–Last day, yyyy-mm-dd (default: no end).
range_startstringyesFirst day, yyyy-mm-dd.
user_idinteger–Only this employee.

No output schema declared.

No examples provided.

papershift_list_users ~143

List employees (users) with name, email, status, contract basics and their location, working-area and tag ids. Filter by location, working area or tag. 25 per page. GET /users.

NameTypeReqDescription
location_idinteger–Only employees of this location.
pageinteger–Page number, from 1 (default 1; 25 records per page). Pass the previous reply's next_page.
tag_idsarray–Only records with one of these tag ids (from papershift_list_tags). Include 0 to also match records without tags.
working_area_idinteger–Only employees in this working area.

No output schema declared.

No examples provided.

papershift_list_vacation_entitlements ~143

An employee's vacation entitlements (planned days, spent days, expiry, carry-over) for the given period. Use it to answer 'how many vacation days does X have left'. 25 per page. GET /vacation_entitlements.

NameTypeReqDescription
end_datestring–Only entitlements up to this date, yyyy-mm-dd.
pageinteger–Page number, from 1 (default 1; 25 records per page). Pass the previous reply's next_page.
start_datestring–Only entitlements from this date, yyyy-mm-dd.
user_idintegeryesPapershift user id.

No output schema declared.

No examples provided.

papershift_list_working_areas ~62

List working areas (departments/stations shifts are planned in), optionally for one location. Use the ids for shifts and time trackings. GET /working_areas.

NameTypeReqDescription
location_idinteger–Only the working areas of this location.

No output schema declared.

No examples provided.

papershift_review_absence ~103

WRITE: decide on an absence request. action 'confirm' approves it (it then counts against vacation days and the plan), 'reject' declines it, 'reset' puts a decided absence back to pending. The employee is typically notified of the decision. Find ids with papershift_list_absences. PUT /absences/{confirm|reject|reset}.

NameTypeReqDescription
absence_idintegeryesPapershift absence id.
actionstringyesThe decision.

No output schema declared.

No examples provided.

Install

How do I install the Papershift MCP by usefulapi server?

Papershift MCP by usefulapi is a hosted endpoint at https://papershift.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.

remote · papershift.usefulapi.io

# add to Claude Code
claude mcp add --transport http io-usefulapi-papershift 'https://papershift.usefulapi.io/mcp'
Common questions

What is the Papershift MCP by usefulapi server?

Papershift MCP by usefulapi is listed in the public MCP registry as io.usefulapi/papershift. Read Papershift absences, vacation, time tracking and shifts; request and review absences. This page covers its hosted endpoint (https://papershift.usefulapi.io/mcp).

Is the Papershift MCP by usefulapi server safe to use?

Papershift MCP by usefulapi scores 63 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 Papershift MCP by usefulapi server expose?

Papershift MCP by usefulapi exposes 26 tools: papershift_get_account, papershift_list_locations, papershift_get_location, papershift_list_working_areas, papershift_list_users, and 21 more. Their descriptions and schemas cost roughly 2,666 tokens of context every time the server is loaded.

Does the Papershift MCP by usefulapi server require authentication?

Yes. Papershift MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the Papershift MCP by usefulapi server still maintained?

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