ShiftSum Time Card MCP
A time card calculator for hours worked, lunch breaks, overtime, and gross pay, with CSV and PDF timesheets. It handles multiple in and out punches per day, overnight shifts, and various overtime rules.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://time-card.zovo.one/mcpWhat you can do with it
- Calculate hours worked from clock-in and clock-out times
- Compute overtime pay based on US federal or California rules
- Generate printable PDF timesheets with signature lines
- Export time data to CSV format
Source and maintenance
Protocol and capabilities
- Server
- time-card 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 1 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
1 advertised
calculate_hours — Calculate hours worked
Use this when the user wants a time card calculator or hours worked calculator: totaling clock-in/clock-out times for a day, week, or biweekly period, with lunch breaks, multiple in and out punches per day, overnight shifts, 12-hour or 24-hour (military) time, punch rounding (nearest 5/6/15 minutes or the 7-minute rule), overtime and double time per workweek (US federal 40 h, California daily rules, or custom), and gross pay from an hourly rate. Pass times as the user wrote them; times without am/pm ("9 to 5") are resolved and the reading is returned in assumptions for the user to confirm. Returns per-day hours in H:MM and decimal, regular/overtime/double-time split, totals, exact gross pay, warnings (overlapping punches, missing clock-out, shifts over 16 h), and CSV and printable PDF timesheet links. Does not compute taxes or take-home pay, give legal advice about breaks or overtime, track time live, or set reminders. Do not use for simple unit conversions without clock times.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"entries"
],
"properties": {
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"day",
"punches"
],
"properties": {
"day": {
"type": "string",
"maxLength": 40,
"description": "Day label: an ISO date \"2026-09-28\", a weekday \"Mon\", or both \"Mon 2026-09-28\". Dates give exact workweeks for biweekly periods."
},
"week": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Optional workweek number (1, 2) when days have no dates and the grouping is not obvious, e.g. 2 for the second week of a biweekly period."
},
"punches": {
"type": "array",
"items": {
"type": "object",
"required": [
"start"
],
"properties": {
"end": {
"anyOf": [
{
"type": "string",
"maxLength": 20
},
{
"type": "null"
}
],
"description": "Clock-out time in the same formats, e.g. \"17:30\" or \"5:30 pm\". An end earlier than the start means the shift crossed midnight (22:00 to 06:30). Leave out if the person has not clocked out yet."
},
"start": {
"type": "string",
"maxLength": 20,
"description": "Clock-in time, 24-hour or 12-hour with am/pm, e.g. \"8:45\", \"17:30\", \"0730\", \"9:15 am\"."
}
}
},
"maxItems": 8,
"description": "In/out pairs for this day, in order. Use several pairs for split shifts or a clocked-out lunch, e.g. [{\"start\":\"8:00\",\"end\":\"12:00\"},{\"start\":\"12:30\",\"end\":\"17:00\"}]. Empty list = day off."
},
"unpaid_break_minutes": {
"type": "integer",
"maximum": 720,
"minimum": 0,
"description": "Unpaid break or lunch minutes to subtract from this day, e.g. 30. Do not also add it as a separate punch gap."
}
}
},
"maxItems": 62,
"minItems": 1,
"description": "One item per worked day (up to 62, e.g. a biweekly or monthly time card). Example: [{\"day\":\"Mon\",\"punches\":[{\"start\":\"8:45\",\"end\":\"17:30\"}],\"unpaid_break_minutes\":30}]."
},
"currency": {
"type": "string",
"maxLength": 3,
"description": "ISO currency code for pay amounts, default USD, e.g. EUR or GBP."
},
"rounding": {
"enum": [
"none",
"nearest_5",
"nearest_6",
"nearest_15",
"seven_minute_rule"
],
"type": "string",
"description": "Punch rounding applied to each clock-in and clock-out: none (default), nearest_5, nearest_6 (tenth of an hour), nearest_15, or seven_minute_rule (8:07 -> 8:00, 8:08 -> 8:15)."
},
"pay_period": {
"type": "string",
"maxLength": 60,
"description": "Optional pay period label printed on the timesheet, e.g. \"Sep 28 - Oct 11, 2026\" or \"Week 40\"."
},
"hourly_rate": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Optional regular hourly pay rate in the chosen currency for gross pay, e.g. 18.50 (USD) or 1100 (JPY). Leave out for hours only."
},
"week_start_day": {
"enum": [
"sun",
"mon",
"tue",
"wed",
"thu",
"fri",
"sat"
],
"type": "string",
"description": "First day of the workweek for dated entries, e.g. \"sun\". Default: the weekday of the earliest date."
},
"overtime_preset": {
"enum": [
"us_federal",
"california",
"none"
],
"type": "string",
"description": "Overtime rule set. us_federal (default): over 40 h per workweek at 1.5x. california: over 8 h/day and 40 h/week at 1.5x, over 12 h/day at 2x, plus the 7th-consecutive-day rule. none: no overtime split."
},
"seventh_day_rule": {
"type": "boolean",
"description": "California 7th-consecutive-day rule: on the 7th straight workday of a workweek the first 8 h are overtime and the rest double time. Default on for california, off otherwise."
},
"overtime_multiplier": {
"type": "number",
"maximum": 5,
"minimum": 1,
"description": "Overtime pay multiplier, default 1.5."
},
"double_time_multiplier": {
"type": "number",
"maximum": 5,
"minimum": 1,
"description": "Double-time pay multiplier, default 2."
},
"daily_overtime_after_hours": {
"type": "number",
"maximum": 24,
"minimum": 0,
"description": "Override the daily overtime threshold in hours, e.g. 8 (Alaska, Nevada) or 12 (Colorado). 0 turns daily overtime off."
},
"weekly_overtime_after_hours": {
"type": "number",
"maximum": 168,
"minimum": 0,
"description": "Override the weekly overtime threshold in hours, e.g. 40 or 37.5. 0 turns weekly overtime off."
},
"daily_double_time_after_hours": {
"type": "number",
"maximum": 24,
"minimum": 0,
"description": "Override the daily double-time threshold in hours, e.g. 12. 0 turns double time off."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"pay_period",
"days",
"weeks",
"totals",
"pay",
"settings",
"assumptions",
"warnings",
"note",
"downloads"
],
"properties": {
"pay": {
"anyOf": [
{
"type": "object",
"required": [
"hourly_rate",
"currency",
"regular_pay",
"overtime_pay",
"double_time_pay",
"gross_pay",
"formatted"
],
"properties": {
"currency": {
"type": "string"
},
"formatted": {
"type": "object",
"required": [
"hourly_rate",
"regular_pay",
"overtime_pay",
"double_time_pay",
"gross_pay"
],
"properties": {
"gross_pay": {
"type": "string"
},
"hourly_rate": {
"type": "string"
},
"regular_pay": {
"type": "string"
},
"overtime_pay": {
"type": "string"
},
"double_time_pay": {
"type": "string"
}
},
"additionalProperties": false
},
"gross_pay": {
"type": "number"
},
"hourly_rate": {
"type": "number"
},
"regular_pay": {
"type": "number"
},
"overtime_pay": {
"type": "number"
},
"double_time_pay": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"days": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"display",
"date",
"week",
"punches",
"break_minutes",
"minutes",
"hhmm",
"decimal",
"regular",
"overtime",
"double_time",
"seventh_day",
"flags"
],
"properties": {
"date": {
"type": [
"string",
"null"
]
},
"hhmm": {
"type": "string"
},
"week": {
"type": "number"
},
"flags": {
"type": "array",
"items": {
"type": "string"
}
},
"label": {
"type": "string"
},
"decimal": {
"type": "number"
},
"display": {
"type": "string"
},
"minutes": {
"type": "number"
},
"punches": {
"type": "array",
"items": {
"type": "object",
"required": [
"in",
"out",
"in_rounded",
"out_rounded",
"next_day",
"hhmm"
],
"properties": {
"in": {
"type": "string"
},
"out": {
"type": [
"string",
"null"
]
},
"hhmm": {
"type": [
"string",
"null"
]
},
"next_day": {
"type": "boolean"
},
"in_rounded": {
"type": "string"
},
"out_rounded": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}
},
"regular": {
"type": "number"
},
"overtime": {
"type": "number"
},
"double_time": {
"type": "number"
},
"seventh_day": {
"type": "boolean"
},
"break_minutes": {
"type": "number"
}
},
"additionalProperties": false
}
},
"note": {
"type": "string"
},
"weeks": {
"type": "array",
"items": {
"type": "object",
"required": [
"week",
"label",
"minutes",
"hhmm",
"decimal",
"regular",
"overtime",
"double_time"
],
"properties": {
"hhmm": {
"type": "string"
},
"week": {
"type": "number"
},
"label": {
"type": "string"
},
"decimal": {
"type": "number"
},
"minutes": {
"type": "number"
},
"regular": {
"type": "number"
},
"overtime": {
"type": "number"
},
"double_time": {
"type": "number"
}
},
"additionalProperties": false
}
},
"totals": {
"type": "object",
"required": [
"minutes",
"hhmm",
"decimal",
"regular",
"overtime",
"double_time",
"regular_hhmm",
"overtime_hhmm",
"double_time_hhmm",
"days_worked"
],
"properties": {
"hhmm": {
"type": "string"
},
"decimal": {
"type": "number"
},
"minutes": {
"type": "number"
},
"regular": {
"type": "number"
},
"overtime": {
"type": "number"
},
"days_worked": {
"type": "number"
},
"double_time": {
"type": "number"
},
"regular_hhmm": {
"type": "string"
},
"overtime_hhmm": {
"type": "string"
},
"double_time_hhmm": {
"type": "string"
}
},
"additionalProperties": false
},
"settings": {
"type": "object",
"required": [
"overtime_preset",
"rules",
"weekly_overtime_after_hours",
"daily_overtime_after_hours",
"daily_double_time_after_hours",
"overtime_multiplier",
"double_time_multiplier",
"seventh_day_rule",
"rounding",
"rounding_label",
"time_format",
"hourly_rate",
"currency",
"week_start_day"
],
"properties": {
"rules": {
"type": "string"
},
"currency": {
"type": "string"
},
"rounding": {
"type": "string"
},
"hourly_rate": {
"type": [
"number",
"null"
]
},
"time_format": {
"type": "string"
},
"rounding_label": {
"type": "string"
},
"week_start_day": {
"type": [
"string",
"null"
]
},
"overtime_preset": {
"type": "string"
},
"seventh_day_rule": {
"type": "boolean"
},
"overtime_multiplier": {
"type": "number"
},
"double_time_multiplier": {
"type": "number"
},
"daily_overtime_after_hours": {
"type": "number"
},
"weekly_overtime_after_hours": {
"type": "number"
},
"daily_double_time_after_hours": {
"type": "number"
}
},
"additionalProperties": false
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"required": [
"csv",
"pdf"
],
"properties": {
"csv": {
"type": "string"
},
"pdf": {
"type": "string"
}
},
"additionalProperties": false
},
"pay_period": {
"type": [
"string",
"null"
]
},
"assumptions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Readings of ambiguous clock times (no am/pm) that the user should confirm; empty when none."
}
},
"additionalProperties": false
}{
"title": "Calculate hours worked",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
time-card-widget — ShiftSum Time Card view
Interactive view for ShiftSum Time Card.
ui://widget/time-card-v3-1.0.0-1c3527db5f8ff86d3aa7a0f46887a5bb5b295301f57e9dab7df51a9e22335a81.htmltime-card-widget-legacy — ShiftSum Time Card view (previous versions)
ui://widget/time-card-{version}.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1301 ms
- 95th percentile latency
- 1301 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1301 ms · metadata changed · 1 tool(s), 1 resource(s), 1 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http shiftsum-time-card-mcp https://time-card.zovo.one/mcpCodex
codex mcp add shiftsum-time-card-mcp --url https://time-card.zovo.one/mcpCursor
{
"mcpServers": {
"shiftsum-time-card-mcp": {
"url": "https://time-card.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"shiftsum-time-card-mcp": {
"type": "streamableHttp",
"url": "https://time-card.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"shiftsum-time-card-mcp": {
"type": "http",
"url": "https://time-card.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http shiftsum-time-card-mcp https://time-card.zovo.one/mcpClaude Desktop
{
"mcpServers": {
"shiftsum-time-card-mcp": {
"url": "https://time-card.zovo.one/mcp"
}
}
}Windsurf
{
"mcpServers": {
"shiftsum-time-card-mcp": {
"serverUrl": "https://time-card.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like ShiftSum Time Card MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.