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

Epoch

NPM · @KYANITELABS/EPOCH · SCANNED AUG 3

Epoch time estimation MCP server for PERT, COCOMO, Monte Carlo, calibration, cost, and risk.

Available components

+34 this week 79 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security87
  • No malware found by supply-chain analysis.Pass
  • Only part of the dependency tree could be resolved (98 of 102), so this covers what we could see, not the whole tree.Partial
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (98 of 102), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to KyaniteLabs/Epoch). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 23 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability71
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3122 tokens (~130/item across 24 items; 24 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 Management27
  • Stability observed for 8 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
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · @kyanitelabs/epoch

# add to Claude Code
claude mcp add kyanitelabs-epoch -- npx -y @kyanitelabs/epoch
# add to Codex CLI
codex mcp add kyanitelabs-epoch -- npx -y @kyanitelabs/epoch
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "kyanitelabs-epoch": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@kyanitelabs/epoch"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add kyanitelabs-epoch --command npx --arg -y --arg @kyanitelabs/epoch
# ~/.hermes/config.yaml
mcp_servers:
  kyanitelabs-epoch:
    command: "npx"
    args: ["-y", "@kyanitelabs/epoch"]
// mcp.json
{
  "mcpServers": {
    "kyanitelabs-epoch": {
      "command": "npx",
      "args": [
        "-y",
        "@kyanitelabs/epoch"
      ]
    }
  }
}
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.

  • 3 Aug 26 +4
    • Stability: unverified → 0.27 functional
  • 2 Aug 26 +70
    • Install scripts: unverified → pass security
    • Provenance: unverified → pass security
    • Known CVEs: unverified → partial security
    • Malware scan: unverified → pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • The attested source repository moved: KyaniteLabs/Epoch security
    • Schema quality: unverified → excellent functional
    • License: unverified → pass functional
    • Dependency health: unverified → partial functional
    • Maintenance: unverified → pass functional
    • MCP protocol: unverified → pass functional
    • Tool coverage: unverified → 100 functional
    • Licence: MIT functional
  • 1 Aug 26 −22
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 31 Jul 26 −18
    • Malware scan: pass → unverified security
  • 27 Jul 26 45

    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 3 Aug 2026 · Analysed npm/@kyanitelabs/[email protected]

Provenance verified

Ecosystem: npm · Outcome: verified

Reason: verified

Source repo:
KyaniteLabs/Epoch
Certificate issuer:
https://token.actions.githubusercontent.com
Certificate SAN:
https://github.com/KyaniteLabs/Epoch/.github/workflows/release.yml@refs/tags/v0.2.9
Rekor log index:
1633502770
Predicate type:
https://slsa.dev/provenance/v1
Subject digest:
sha512:f6a1a9a030fb1e872ad4133dd3c1d777dbcb508f1eaeec5242d2d3136abcb4207cf7de56363ee966a23a26543eacaab4872682fe7e9431d2a00f12108
Discovery method:
attestation_endpoint
Dependencies 98 packages

98 packages in the resolved dependency tree · 97 deprecated · 29 stale.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 24 exposed · ~3,122 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.

Tool Tokens
accuracy_trend ~102

Track estimation accuracy improvement over time. Computes sliding-window MAPE and compares against industry baseline (25%). Shows whether your estimates are improving, degrading, or stable. Industry research shows estimation accuracy does NOT improve with experience (Cao 2022) — self-correcting systems like Epoch can buck this trend.

NameTypeReqDescription
team_idstringOptional team identifier to scope historical data.
window_sizenumberNumber of records per sliding window.

No output schema declared.

No examples provided.

add_business_days ~95

Adds N business (working) days to a start date, skipping weekends and country-specific public holidays. Supports US, UK, FR, DE, and JP holidays.

NameTypeReqDescription
countrystringISO-3166-1-alpha-2 country code for holiday calendar.
daysnumberyesNumber of business days to add (negative to subtract).
start_datestringyesISO date string for the start date.

No output schema declared.

No examples provided.

batch_record_actuals ~67

Record actual hours for multiple estimates in a single call. Efficient for bulk feedback submission — accepts 1 to 500 entries at once. Each entry pairs an estimate ID with the actual hours spent.

NameTypeReqDescription
entriesarrayyesArray of actual-hour records (1–500 entries).

No output schema declared.

No examples provided.

calibrate_estimates ~102

Recalculate team-specific correction factors from historical estimation data. Compares estimated vs actual hours to compute a correction multiplier. Requires PM system integration for best results. Returns recommendations for improving estimation accuracy.

NameTypeReqDescription
minimum_samplesnumberMinimum number of completed tasks required before producing a calibration factor.
period_daysnumberLookback window in calendar days for calibration data.
team_idstringyesTeam identifier whose historical accuracy data should be analysed.

No output schema declared.

No examples provided.

cocomo_estimate ~393

LLM-adapted COCOMO II parametric effort estimation. Replaces traditional 17 human-labor cost drivers with 5 LLM-specific factors: reasoning complexity, context completeness, transformation impact, iterative cycles, and human oversight. Returns both nominal and LLM-adjusted person-months.

NameTypeReqDescription
ai_nativeDegree of AI assistance: 0.0 = fully human, 1.0 = fully AI-native, 0.5 = hybrid. Accepts boolean for backward compatibility (true=1.0, false=0.0).
context_completenessnumberHow complete is the context provided to the LLM? 0.5 = exhaustive specs, 1.0 = typical, 2.0 = vague requirements.
human_oversightnumberHuman review overhead multiplier. 0.5 = auto-merged, 1.0 = standard PR review, 2.0 = compliance/security review.
iterative_cyclesnumberIteration overhead multiplier or literal cycle count. Multiplier scale: 0.5 = one-shot, 1.0 = typical debug loop, 2.0 = heavy back-and-forth. Values above 2.0 are accepted as literal cycle counts and…
klocnumberyesEstimated thousands of lines of code. Count actual code, not comments/blank lines.
reasoning_complexitynumberMultiplier for reasoning complexity of the codebase. 0.5 = trivial CRUD, 1.0 = average, 2.0 = novel algorithm/R&D.
task_typestringOptional task type for feedback matching.
transformation_impactnumberScale of transformation relative to existing code. 0.5 = small patch, 1.0 = new module, 2.0 = architectural rewrite.

No output schema declared.

No examples provided.

cocomo_ground_truth ~118

Validate all COCOMO estimation models against 240 real historical projects with known effort. Runs 6 models in parallel: COCOMO Basic, COCOMO II Nominal, COCOMO II + AI 12x speedup, and AI + developer profile at human/hybrid/ai_native gradients. Reports MAPE, MMRE, PRED(25), PRED(50), bias per model, with breakdowns by dataset and project type.

NameTypeReqDescription
dataset_filterarrayOptional filter to validate against specific datasets only.

No output schema declared.

No examples provided.

cocomo_validate ~81

Validate COCOMO estimation model against 195 real historical projects. Runs the COCOMO Basic formula against projects from NASA93, COCOMO81, Albrecht, and Kemerer datasets. Reports overall MAPE, bias, per-type accuracy, and recommended coefficient adjustments.

NameTypeReqDescription
dataset_filterarrayOptional filter to validate against specific datasets only.

No output schema declared.

No examples provided.

compare_models ~111

Compare all LLM models side-by-side for a given token budget. Ranks models by estimated cost or time. Shows quality tier for each model. Use when choosing which model to use for a task.

NameTypeReqDescription
reasoning_depthstringExpected depth of chain-of-thought reasoning.
sort_bystringSort models by cost (default) or estimated time.
tokensnumberyesTotal number of tokens to estimate across all models.
tool_callsnumberNumber of tool calls expected.

No output schema declared.

No examples provided.

convert_timezone ~76

Converts an ISO-8601 timestamp to a target IANA timezone. The input timestamp must include timezone information or be in UTC. Returns the localised time, UTC offset, and human-readable format.

NameTypeReqDescription
target_tzstringyesTarget IANA timezone identifier.
timestampstringyesISO-8601 timestamp to convert.

No output schema declared.

No examples provided.

count_business_days ~96

Counts the number of business (working) days between two dates, excluding weekends and country-specific public holidays. The count is exclusive of the start date and inclusive of the end date.

NameTypeReqDescription
countrystringISO-3166-1-alpha-2 country code for holiday calendar.
end_datestringyesISO date string for the end date.
start_datestringyesISO date string for the start date.

No output schema declared.

No examples provided.

critical_path ~88

Compute critical path with merge-bias adjustment for project schedules. Performs forward/backward pass to identify critical tasks and slack. Applies merge bias: tasks with >2 predecessors get 5% duration increase per extra predecessor.

NameTypeReqDescription
task_typestringOptional task type for feedback matching.
tasksarrayyesAll tasks in the project graph. Each task must have a unique name.

No output schema declared.

No examples provided.

feedback_health ~52

Get a health report on the estimation feedback loop. Shows total estimates, actuals, match rate, MAPE by tool and task type, and self-improvement readiness (which types have enough data for auto-calibration).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_current_time ~74

Returns the current date and time in the specified IANA timezone. Useful for grounding the LLM in the user's local time. Example timezones: 'UTC', 'America/New_York', 'Europe/London', 'Asia/Tokyo'.

NameTypeReqDescription
timezonestringIANA timezone identifier. Defaults to "UTC".

No output schema declared.

No examples provided.

get_pending_estimates ~61

List recent estimates that have not yet received actual-hour feedback. Returns estimates awaiting actuals so you can submit feedback via record_actual. Use this to close the estimation feedback loop and improve accuracy over time.

NameTypeReqDescription
limitintegerMax estimates to return.

No output schema declared.

No examples provided.

monte_carlo_schedule ~131

Run Monte Carlo simulation for probabilistic schedule risk analysis. Samples task durations from triangular distributions and returns P10/P50/P80/P95 completion estimates with identified risk events. Use seed for reproducible results.

NameTypeReqDescription
iterationsnumberNumber of Monte Carlo simulation iterations (1–100,000). Higher = more stable percentiles.
seedintegerOptional seed for reproducible results.
task_typestringOptional task type for feedback matching. Enables per-task-type accuracy tracking.
tasksarrayyesTask list with PERT-style three-point estimates and dependency edges.

No output schema declared.

No examples provided.

parse_duration ~99

Parses a human-readable duration string into structured seconds. Supports combinations of y (years), mo (months), w (weeks), d (days), h (hours), m (minutes), s (seconds). Examples: '2h30m', '1d6h', '1w3d', '45m'.

NameTypeReqDescription
duration_stringstringyesDuration string like "2h30m", "1d6h", "45m".

No output schema declared.

No examples provided.

pert_estimate ~228

Calculate PERT expected duration from three-point estimates using Beta distribution. Formula: E = (O + 4M + P) / 6. Returns expected value, variance, standard deviation, and 95%/99% confidence bounds with urgency categorization. Use when estimating task duration with uncertain outcomes.

NameTypeReqDescription
ai_nativeDegree of AI assistance: 0.0 = fully human, 1.0 = fully AI-native, 0.5 = hybrid. Accepts boolean for backward compatibility (true=1.0, false=0.0).
most_likelynumberyesMode of the distribution — the single most probable outcome.
optimisticnumberyesBest-case duration. Do NOT use your initial optimistic guess — this should be the absolute minimum if everything goes perfectly.
pessimisticnumberyesWorst-case duration accounting for known risks and unknown unknowns.
task_typestringOptional task type for feedback matching. Enables per-task-type accuracy tracking.
unitstringTime unit for all three PERT estimates.

No output schema declared.

No examples provided.

record_actual ~93

Submit actual hours for a previous estimate to improve future accuracy. Pairs with any estimation tool. The estimate_id comes from the estimate response. Actuals feed into the self-improvement loop — after enough samples, correction factors update automatically to reduce estimation bias.

NameTypeReqDescription
actual_hoursnumberyesActual hours spent.
estimate_idstringyesID of the estimate to update.
notesstringOptional context.

No output schema declared.

No examples provided.

reference_class_estimate ~264

Data-driven estimate using reference class forecasting. Applies historical correction factors based on actual-vs-estimated ratios. When no historical data exists, uses industry averages (1.3-2.2x for software tasks). Prioritize this over algorithmic models when historical data is available.

NameTypeReqDescription
ai_nativeDegree of AI assistance: 0.0 = fully human, 1.0 = fully AI-native, 0.5 = hybrid. Accepts boolean for backward compatibility (true=1.0, false=0.0).
complexitynumberFine-tuning complexity from 1 (trivial) to 5 (extreme). Adjusts within the scope band: low complexity shortens, high complexity lengthens the estimate.
scopestringRough size of the task: small=tiny fix/tweak, medium=typical task, large=significant effort, xl=epic-scale. When omitted, inferred from complexity (1-2=small, 3=medium, 4=large, 5=xl).
task_typestringyesCategory of work being estimated for reference-class lookup.
team_idstringOptional team identifier to scope historical data to a specific team.

No output schema declared.

No examples provided.

schedule_risk ~192

Assess schedule risk for an estimate using historical accuracy data. Computes confidence intervals (p50/p80/p95) based on your team's MAPE. Returns risk level and actionable recommendations. Uses industry baseline (25% MAPE) when no historical data is available.

NameTypeReqDescription
ai_nativeDegree of AI assistance: 0.0 = fully human, 1.0 = fully AI-native, 0.5 = hybrid. Accepts boolean for backward compatibility (true=1.0, false=0.0).
complexitynumberTask complexity from 1 (trivial) to 5 (extreme). Higher complexity widens confidence intervals.
estimated_hoursnumberyesThe estimated effort in hours to assess risk for.
task_typestringOptional task type to refine historical accuracy lookup.
team_idstringOptional team identifier to scope historical data.

No output schema declared.

No examples provided.

sprint_forecast ~200

Forecast sprint completion date from backlog size and historical velocity. Computes average velocity from sprint history, converts story points to hours, and returns required sprints with pessimistic estimate based on velocity variance.

NameTypeReqDescription
ai_nativeDegree of AI assistance: 0.0 = fully human, 1.0 = fully AI-native, 0.5 = hybrid. Accepts boolean for backward compatibility (true=1.0, false=0.0).
backlog_pointsnumberyesTotal story points or effort units remaining in the backlog.
hours_per_sprintnumberTotal productive engineering hours available per sprint (accounts for meetings, overhead).
sprint_length_daysnumberCalendar days in a single sprint cycle.
task_typestringOptional task type for feedback matching.
velocity_historyarrayyesHistorical velocities from completed sprints. Minimum 1 data point; 3+ recommended for meaningful forecasts.

No output schema declared.

No examples provided.

time_math ~95

Performs compound time-math operations. Dispatches to the appropriate sub-operation based on the 'operation' parameter. Operations: add_days, add_business_days, diff, convert_tz, parse_nl, format_duration.

NameTypeReqDescription
operandsobjectyesKey-value pairs matching the chosen operation's expected fields. See operation documentation for required keys.
operationstringyesThe time arithmetic operation to perform. Each operation expects specific operands.

No output schema declared.

No examples provided.

token_cost_estimate ~137

Estimate wall-clock time AND dollar cost for LLM token usage. Combines token-to-time mapping with model-specific pricing data. Returns cost breakdown (input/output/overhead) alongside the time estimate.

NameTypeReqDescription
modelstringyesLLM model identifier. Unknown models fall back to generic estimates.
reasoning_depthstringExpected depth of chain-of-thought reasoning.
task_typestringOptional task type for feedback matching.
tokensnumberyesTotal number of tokens in the LLM request (prompt + completion).
tool_callsnumberNumber of tool calls expected in the agentic loop.

No output schema declared.

No examples provided.

token_time_bridge ~167

Map LLM token budgets to estimated wall-clock time. Uses model-specific calibration data (tokens/second, reasoning overhead, tool-call latency) to estimate how long a task will actually take. Bridges the gap between token-space (how agents reason) and time-space (what humans need).

NameTypeReqDescription
modelstringyesLLM model identifier. Unknown models fall back to generic estimates.
reasoning_depthstringExpected depth of chain-of-thought reasoning. Deep reasoning adds significant per-token latency.
task_typestringOptional task type for feedback matching.
tokensnumberyesTotal number of tokens in the LLM request (prompt + completion).
tool_callsnumberNumber of tool calls expected in the agentic loop. Each adds overhead latency.

No output schema declared.

No examples provided.