ShiftSum Time Card
A time card calculator for hours worked.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"time-card": {
"url": "https://time-card.zovo.one/mcp"
}
}
}远程端点
https://time-card.zovo.one/mcpstreamable-http它能做什么
工具清单
工具(1)
🟢calculate_hours(entries, hourly_rate, currency, overtime_preset, weekly_overtime_after_hours, ...)
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",
"properties": {
"entries": {
"minItems": 1,
"maxItems": 62,
"type": "array",
"items": {
"type": "object",
"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."
},
"punches": {
"maxItems": 8,
"type": "array",
"items": {
"type": "object",
"properties": {
"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\"."
},
"end": {
"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.",
"anyOf": [
{
"type": "string",
"maxLength": 20
},
{
"type": "null"
}
]
}
},
"required": [
"start"
]
},
"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": {
"description": "Unpaid break or lunch minutes to subtract from this day, e.g. 30. Do not also add it as a separate punch gap.",
"type": "integer",
"minimum": 0,
"maximum": 720
},
"week": {
"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.",
"type": "integer",
"minimum": 1,
"maximum": 10
}
},
"required": [
"day",
"punches"
]
},
"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}]."
},
"hourly_rate": {
"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.",
"type": "number",
"minimum": 0,
"maximum": 1000000
},
"currency": {
"description": "ISO currency code for pay amounts, default USD, e.g. EUR or GBP.",
"type": "string",
"maxLength": 3
},
"overtime_preset": {
"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.",
"type": "string",
"enum": [
"us_federal",
"california",
"none"
]
},
"weekly_overtime_after_hours": {
"description": "Override the weekly overtime threshold in hours, e.g. 40 or 37.5. 0 turns weekly overtime off.",
"type": "number",
"minimum": 0,
"maximum": 168
},
"daily_overtime_after_hours": {
"description": "Override the daily overtime threshold in hours, e.g. 8 (Alaska, Nevada) or 12 (Colorado). 0 turns daily overtime off.",
"type": "number",
"minimum": 0,
"maximum": 24
},
"daily_double_time_after_hours": {
"description": "Override the daily double-time threshold in hours, e.g. 12. 0 turns double time off.",
"type": "number",
"minimum": 0,
"maximum": 24
},
"overtime_multiplier": {
"description": "Overtime pay multiplier, default 1.5.",
"type": "number",
"minimum": 1,
"maximum": 5
},
"double_time_multiplier": {
"description": "Double-time pay multiplier, default 2.",
"type": "number",
"minimum": 1,
"maximum": 5
},
"seventh_day_rule": {
"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.",
"type": "boolean"
},
"rounding": {
"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).",
"type": "string",
"enum": [
"none",
"nearest_5",
"nearest_6",
"nearest_15",
"seven_minute_rule"
]
},
"week_start_day": {
"description": "First day of the workweek for dated entries, e.g. \"sun\". Default: the weekday of the earliest date.",
"type": "string",
"enum": [
"sun",
"mon",
"tue",
"wed",
"thu",
"fri",
"sat"
]
},
"pay_period": {
"description": "Optional pay period label printed on the timesheet, e.g. \"Sep 28 - Oct 11, 2026\" or \"Week 40\".",
"type": "string",
"maxLength": 60
}
},
"required": [
"entries"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"pay_period": {
"type": [
"string",
"null"
]
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"display": {
"type": "string"
},
"date": {
"type": [
"string",
"null"
]
},
"week": {
"type": "number"
},
"punches": {
"type": "array",
"items": {
"type": "object",
"properties": {
"in": {
"type": "string"
},
"out": {
"type": [
"string",
"null"
]
},
"in_rounded": {
"type": "string"
},
"out_rounded": {
"type": [
"string",
"null"
]
},
"next_day": {
"type": "boolean"
},
"hhmm": {
"type": [
"string",
"null"
]
}
},
"required": [
"in",
"out",
"in_rounded",
"out_rounded",
"next_day",
"hhmm"
],
"additionalProperties": false
}
},
"break_minutes": {
"type": "number"
},
"minutes": {
"type": "number"
},
"hhmm": {
"type": "string"
},
"decimal": {
"type": "number"
},
"regular": {
"type": "number"
},
"overtime": {
"type": "number"
},
"double_time": {
"type": "number"
},
"seventh_day": {
"type": "boolean"
},
"flags": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"label",
"display",
"date",
"week",
"punches",
"break_minutes",
"minutes",
"hhmm",
"decimal",
"regular",
"overtime",
"double_time",
"seventh_day",
"flags"
],
"additionalProperties": false
}
},
"weeks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"week": {
"type": "number"
},
"label": {
"type": "string"
},
"minutes": {
"type": "number"
},
"hhmm": {
"type": "string"
},
"decimal": {
"type": "number"
},
"regular": {
"type": "number"
},
"overtime": {
"type": "number"
},
"double_time": {
"type": "number"
}
},
"required": [
"week",
"label",
"minutes",
"hhmm",
"decimal",
"regular",
"overtime",
"double_time"
],
"additionalProperties": false
}
},
"totals": {
"type": "object",
"properties": {
"minutes": {
"type": "number"
},
"hhmm": {
"type": "string"
},
"decimal": {
"type": "number"
},
"regular": {
"type": "number"
},
"overtime": {
"type": "number"
},
"double_time": {
"type": "number"
},
"regular_hhmm": {
"type": "string"
},
"overtime_hhmm": {
"type": "string"
},
"double_time_hhmm": {
"type": "string"
},
"days_worked": {
"type": "number"
}
},
"required": [
"minutes",
"hhmm",
"decimal",
"regular",
"overtime",
"double_time",
"regular_hhmm",
"overtime_hhmm",
"double_time_hhmm",
"days_worked"
],
"additionalProperties": false
},
"pay": {
"anyOf": [
{
"type": "object",
"properties": {
"hourly_rate": {
"type": "number"
},
"currency": {
"type": "string"
},
"regular_pay": {
"type": "number"
},
"overtime_pay": {
"type": "number"
},
"double_time_pay": {
"type": "number"
},
"gross_pay": {
"type": "number"
},
"formatted": {
"type": "object",
"properties": {
"hourly_rate": {
"type": "string"
},
"regular_pay": {
"type": "string"
},
"overtime_pay": {
"type": "string"
},
"double_time_pay": {
"type": "string"
},
"gross_pay": {
"type": "string"
}
},
"required": [
"hourly_rate",
"regular_pay",
"overtime_pay",
"double_time_pay",
"gross_pay"
],
"additionalProperties": false
}
},
"required": [
"hourly_rate",
"currency",
"regular_pay",
"overtime_pay",
"double_time_pay",
"gross_pay",
"formatted"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"settings": {
"type": "object",
"properties": {
"overtime_preset": {
"type": "string"
},
"rules": {
"type": "string"
},
"weekly_overtime_after_hours": {
"type": "number"
},
"daily_overtime_after_hours": {
"type": "number"
},
"daily_double_time_after_hours": {
"type": "number"
},
"overtime_multiplier": {
"type": "number"
},
"double_time_multiplier": {
"type": "number"
},
"seventh_day_rule": {
"type": "boolean"
},
"rounding": {
"type": "string"
},
"rounding_label": {
"type": "string"
},
"time_format": {
"type": "string"
},
"hourly_rate": {
"type": [
"number",
"null"
]
},
"currency": {
"type": "string"
},
"week_start_day": {
"type": [
"string",
"null"
]
}
},
"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"
],
"additionalProperties": false
},
"assumptions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Readings of ambiguous clock times (no am/pm) that the user should confirm; empty when none."
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"note": {
"type": "string"
},
"downloads": {
"type": "object",
"properties": {
"csv": {
"type": "string"
},
"pdf": {
"type": "string"
}
},
"required": [
"csv",
"pdf"
],
"additionalProperties": false
}
},
"required": [
"pay_period",
"days",
"weeks",
"totals",
"pay",
"settings",
"assumptions",
"warnings",
"note",
"downloads"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}社区
证据