addrbookFor publishers
← The evidence ledger

Evidence row 4366925

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint ffb2c26e-4d4a-4270-8565-bb02a1678c99
Recorded
Previous row
#1475304
Body SHA-256
5ce3ed8ae18d5f25164624c1627b2bd5b54eb47edbfd7095d555f8c282f3e542
Leaf
0xf4272115f1a2cc441eba37772e8ab185a7e59f1c4ad544a5524f5857d58c6fa8

What was observed

{
  "count": 7,
  "tools": [
    {
      "description": "Counts South African working days between two dates (inclusive), excluding weekends and public holidays. Optionally counts Saturdays as working days. Useful for notice periods, payment terms and delivery dates.",
      "inputSchema": {
        "properties": {
          "end": {
            "description": "YYYY-MM-DD",
            "type": "string"
          },
          "include_saturdays": {
            "default": false,
            "description": "Count Saturdays as working days. Default false (Monday to Friday only)",
            "type": "boolean"
          },
          "start": {
            "description": "YYYY-MM-DD",
            "type": "string"
          }
        },
        "required": [
          "start",
          "end"
        ],
        "type": "object"
      },
      "name": "business_days_between"
    },
    {
      "description": "Returns BCEA minimum leave (annual, sick, family responsibility), notice period and retrenchment severance pay for an employee, given days worked per week, start date and pay.",
      "inputSchema": {
        "properties": {
          "as_at": {
            "description": "Date to evaluate, default today",
            "type": "string"
          },
          "days_per_week": {
            "description": "Days worked per week, e.g. 5 or 6",
            "type": "number"
          },
          "start_date": {
            "description": "Employment start, YYYY-MM-DD",
            "type": "string"
          },
          "weekly_wage": {
            "description": "Ordinary weekly wage in rand (for severance)",
            "type": "number"
          },
          "worker_type": {
            "default": "general",
            "description": "Sector: general, farm or domestic (farm and domestic workers have longer notice periods). Default general",
            "enum": [
              "general",
              "farm",
              "domestic"
            ],
            "type": "string"
          }
        },
        "required": [
          "days_per_week",
          "start_date"
        ],
        "type": "object"
      },
      "name": "leave_and_termination"
    },
    {
      "description": "Checks whether an hourly, daily, weekly or monthly wage meets South Africa's National Minimum Wage on a given date (farm and domestic workers included). Returns the legal minimum, the shortfall and monthly equivalents.",
      "inputSchema": {
        "properties": {
          "amount": {
            "description": "Wage in rand",
            "type": "number"
          },
          "date": {
            "description": "YYYY-MM-DD, default today",
            "type": "string"
          },
          "hours_per_day": {
            "description": "Ordinary hours per day (needed for day). Default 9",
            "type": "number"
          },
          "hours_per_week": {
            "description": "Ordinary hours per week (needed for week/month). Default 45",
            "type": "number"
          },
          "period": {
            "description": "What the amount covers: per hour, day, week or month",
            "enum": [
              "hour",
              "day",
              "week",
              "month"
            ],
            "type": "string"
          },
          "worker_type": {
            "default": "general",
            "description": "Sector: general, farm, domestic, or epwp (Expanded Public Works Programme, which has its own lower minimum). Default general",
            "enum": [
              "general",
              "farm",
              "domestic",
              "epwp"
            ],
            "type": "string"
          }
        },
        "required": [
          "amount",
          "period"
        ],
        "type": "object"
      },
      "name": "minimum_wage_check"
    },
    {
      "description": "Calculates BCEA pay for a pay period: ordinary hours, weekday/Saturday overtime (1.5x), Sunday work (1.5x if ordinarily worked, else 2x), and public holiday work (s18). Flags breaches of overtime limits and checks the BCEA earnings threshold (employees above it have no statutory overtime entitlement).",
      "inputSchema": {
        "properties": {
          "annual_earnings": {
            "description": "Regular annual earnings, to test the BCEA threshold (optional)",
            "type": "number"
          },
          "date": {
            "description": "YYYY-MM-DD, default today",
            "type": "string"
          },
          "hourly_rate": {
            "description": "Ordinary hourly rate in rand",
            "type": "number"
          },
          "ordinarily_works_sunday": {
            "default": false,
            "description": "True if Sunday is a normal workday for this worker (paid 1.5x instead of 2x). Default false",
            "type": "boolean"
          },
          "ordinary_daily_hours": {
            "default": 9,
            "description": "Hours in a normal shift, for public holiday minimum. Default 9",
            "type": "number"
          },
          "ordinary_hours": {
            "description": "Ordinary hours worked in the period",
            "type": "number"
          },
          "overtime_hours": {
            "default": 0,
            "description": "Weekday/Saturday overtime hours",
            "type": "number"
          },
          "public_holiday_hours": {
            "default": 0,
            "description": "Hours worked on public holidays in the period. Default 0",
            "type": "number"
          },
          "public_holiday_is_ordinary_workday": {
            "default": true,
            "description": "True if the holiday fell on a day the worker would normally work (BCEA s18(2)); false if not (s18(3)). Default true",
            "type": "boolean"
          },
          "sunday_hours": {
            "default": 0,
            "description": "Hours worked on Sundays in the period. Default 0",
            "type": "number"
          },
          "weeks_in_period": {
            "default": 1,
            "description": "Weeks covered, used to check the 10h/week overtime cap. Default 1",
            "type": "number"
          }
        },
        "required": [
          "hourly_rate",
          "ordinary_hours"
        ],
        "type": "object"
      },
      "name": "overtime_and_premium_pay"
    },
    {
      "description": "Lists South African public holidays for a year, including Sunday-to-Monday substitutions and once-off declared holidays (e.g. election days).",
      "inputSchema": {
        "properties": {
          "year": {
            "description": "e.g. 2026",
            "type": "integer"
          }
        },
        "required": [
          "year"
        ],
        "type": "object"
      },
      "name": "public_holidays"
    },
    {
      "description": "Calculates monthly UIF (1% employee + 1% employer, capped at the R17,712 ceiling) for one or more employees, and the employer's Skills Development Levy (1% of payroll, exempt if annual payroll is under R500,000).",
      "inputSchema": {
        "properties": {
          "annual_payroll_estimate": {
            "description": "Employer's total annual payroll, for the SDL exemption test. Default: monthly total x 12",
            "type": "number"
          },
          "monthly_remuneration": {
            "description": "Gross monthly remuneration per employee, in rand",
            "items": {
              "type": "number"
            },
            "type": "array"
          }
        },
        "required": [
          "monthly_remuneration"
        ],
        "type": "object"
      },
      "name": "uif_sdl_contributions"
    },
    {
      "description": "Free to call. If you needed South African data that none of these tools provide (a cost, rate, rule, price or place we don't cover), describe it here in one sentence. We review these every week and build the most-requested data first.",
      "inputSchema": {
        "properties": {
          "context": {
            "description": "Optional: the kind of task it was for, e.g. 'renovation quote' or 'payroll run'.",
            "type": "string"
          },
          "need": {
            "description": "What information you were looking for, in one sentence.",
            "type": "string"
          },
          "region": {
            "description": "Optional: province or town, if it matters.",
            "type": "string"
          }
        },
        "required": [
          "need"
        ],
        "type": "object"
      },
      "name": "unmet_request"
    }
  ]
}

What the leaf hashes

{"body":"5ce3ed8ae18d5f25164624c1627b2bd5b54eb47edbfd7095d555f8c282f3e542","id":4366925,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1794213261779775,"prev":1475304,"subject":"ffb2c26e-4d4a-4270-8565-bb02a1678c99","subject_kind":"endpoint"}

Proof

Its day has not closed yet. A day closes ten minutes after midnight UTC; the proof appears here then.

How to check it · This row as JSON