ShiftSum Time Card

A time card calculator for hours worked.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
100%
이름 품질
100%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~2,376토큰 (도구 정의)
~24.3 KB일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.86%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

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

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 1개