Moltline RegClock
Incident-reporting deadlines from the law: CRA, NIS2, DORA, GDPR, HIPAA, SEC 8-K. 6 of 9 tools free.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"regclock": {
"url": "https://mcp.moltlinestudio.com/regclock"
}
}
}リモートエンドポイント
https://mcp.moltlinestudio.com/regclockstreamable-httpできること
ツール一覧
ツール(9)
🟢list_regimes
List the reporting regimes this server can compute, with citations. FREE. Typical input {} returns {"regimes": [{"id": "eu_nis2", "name": ..., "instrument": ..., "applies_from": ..., "event_types": [...]}, ...], "verified_on": "2026-09-06"}. Use when choosing the regime id and event_type for compute_deadlines or classify_event. Not for legal advice: it reports what the instruments say and when the entry was last checked. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
入力スキーマ
{
"type": "object",
"properties": {},
"additionalProperties": false
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}🟢explain_rule(regime, event_type, obligation)
Quote the time limit, citation and required content for an obligation. FREE. Typical input {"regime": "eu_cra", "event_type": "severe_incident", "obligation": "final_report"} returns {"citation": "Art. 14(4)(c)", "rule": "within one month after ...", "required_content": [...]}. Leave obligation empty to get every obligation of the event type; leave event_type empty on single-event regimes. Use when a caller needs the rule's own words next to a computed date. Not for computing dates: use compute_deadlines. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "unknown obligation '<value>' for <value>/<value>; one of <value>"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
入力スキーマ
{
"type": "object",
"properties": {
"regime": {
"type": "string",
"description": "regime id from list_regimes (eu_cra, eu_nis2, eu_dora, eu_gdpr, uk_gdpr, us_hipaa, us_sec_8k)."
},
"event_type": {
"default": "",
"type": "string",
"description": "event type within the regime (see list_regimes); optional when the regime has one."
},
"obligation": {
"default": "",
"type": "string",
"description": "obligation id (for example early_warning); empty for all."
}
},
"required": [
"regime"
],
"additionalProperties": false
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}🟢classify_event(regime, facts)
Apply a regime's statutory criteria to yes/no facts and name the event type. FREE. Typical input {"regime": "eu_dora", "facts": {"critical_services_affected": true, "duration_or_downtime": true, "geographic_spread": true}} returns {"reportable": true, "event_type": "major_ict_incident", "reasoning": [...], "criteria": {...}}. Unanswered questions are listed under "missing" so the caller can go and find out. Use when deciding whether an incident triggers a regime at all. Not for judging severity in the abstract: it only applies the written criteria to the facts given. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "facts must be an object of question id -> answer"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
入力スキーマ
{
"type": "object",
"properties": {
"regime": {
"type": "string",
"description": "regime id from list_regimes."
},
"facts": {
"additionalProperties": true,
"type": "object",
"description": "answers keyed by the question ids returned for the regime (booleans; integers for counts)."
}
},
"required": [
"regime",
"facts"
],
"additionalProperties": false
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}🟢compute_deadlines(regime, awareness_at, event_type, classification_at, measure_available_at, ...)
Compute every reporting deadline of one regime from the moment of awareness. FREE. Typical input {"regime": "eu_nis2", "event_type": "significant_incident", "awareness_at": "2026-09-14T09:30:00+02:00"} returns {"deadlines": [{"obligation": "early_warning", "due_at": "2026-09-15T09:30+02:00", "citation": "Art. 23(4)(a)", ...}, ...]}. Later clocks that run from an earlier submission are estimated from that report's due time until you pass the actual time in submitted. DORA needs classification_at and a country for the bank-holiday rule; the SEC needs materiality_determined_at; HIPAA takes discovery_date and flags.individuals_affected. Use when an incident has just been identified and the agent needs the instants. Not for several regimes at once: use compute_deadlines_multi. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "flags must be an object"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
入力スキーマ
{
"type": "object",
"properties": {
"regime": {
"type": "string",
"description": "regime id from list_regimes."
},
"awareness_at": {
"type": "string",
"description": "when the entity became aware, ISO 8601 with a UTC offset."
},
"event_type": {
"default": "",
"type": "string",
"description": "event type within the regime; optional when the regime has one."
},
"classification_at": {
"default": "",
"type": "string",
"description": "DORA - when the incident was classified as major."
},
"measure_available_at": {
"default": "",
"type": "string",
"description": "CRA - when a corrective or mitigating measure became available."
},
"materiality_determined_at": {
"default": "",
"type": "string",
"description": "SEC - when the incident was determined to be material."
},
"discovery_date": {
"default": "",
"type": "string",
"description": "HIPAA - the date the breach is treated as discovered (defaults to awareness date)."
},
"submitted": {
"additionalProperties": true,
"default": {},
"type": "object",
"description": "actual submission times of earlier reports, e.g. {\"initial_notification\": \"...\"}."
},
"entity_class": {
"default": "",
"type": "string",
"description": "e.g. trust_service_provider (NIS2), credit_institution / central_counterparty / trading_venue_operator / nis2_essential_or_important (DORA), business_associate (HIPAA)."
},
"country": {
"default": "",
"type": "string",
"description": "ISO 3166-1 alpha-2 code for the public-holiday calendar (DORA weekend rule; SEC uses US)."
},
"subdiv": {
"default": "",
"type": "string",
"description": "optional subdivision code for the holiday calendar (e.g. BY for Bavaria)."
},
"flags": {
"additionalProperties": true,
"default": {},
"type": "object",
"description": "condition answers: high_risk, processor, ongoing, handled_at, individuals_affected, max_residents_of_one_state, business_associate."
}
},
"required": [
"regime",
"awareness_at"
],
"additionalProperties": false
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}🟢deadline_status(deadlines, now, submitted)
Mark each computed deadline open, due soon, overdue or submitted as of now. FREE. Typical input {"deadlines": <rows from compute_deadlines>, "now": "2026-09-15T08:00:00+02:00"} returns {"items": [{"obligation": "early_warning", "status": "due_soon", "hours_remaining": 1.5, ...}], "overdue": 0, "next_due": {...}}. Use when polling an incident timeline or deciding what to escalate next. Not for computing the deadlines themselves. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "deadlines must be a non-empty list of rows from compute_deadlines"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
入力スキーマ
{
"type": "object",
"properties": {
"deadlines": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array",
"description": "rows from compute_deadlines / compute_deadlines_multi (each with obligation and due_at)."
},
"now": {
"type": "string",
"description": "the current instant, ISO 8601 with a UTC offset."
},
"submitted": {
"additionalProperties": true,
"default": {},
"type": "object",
"description": "actual submission times keyed by obligation id (or \"regime/obligation\")."
}
},
"required": [
"deadlines",
"now"
],
"additionalProperties": false
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}🟢holiday_calendar(country, year, subdiv)
List the public holidays the engine uses for a country and year. FREE. Typical input {"country": "IE", "year": 2026} returns {"holidays": [{"date": "2026-01-01", "name": "New Year's Day"}, ...]}. Use when checking why a business-day or bank-holiday adjustment landed where it did, or to see whether a country/subdivision is supported. Not a legal register of bank holidays: it is the `holidays` package's public-holiday calendar, which is what compute_deadlines uses. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "country is required"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
入力スキーマ
{
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "ISO 3166-1 alpha-2 code (DE, FR, IE, US, ...)."
},
"year": {
"maximum": 2100,
"minimum": 1990,
"type": "integer",
"description": "calendar year."
},
"subdiv": {
"default": "",
"type": "string",
"description": "optional subdivision code (state, province, region)."
}
},
"required": [
"country",
"year"
],
"additionalProperties": false
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}🟢compute_deadlines_multi(regimes, awareness_at, classification_at, measure_available_at, materiality_determined_at, ...)
One merged timeline across several regimes for the same incident. PREMIUM (license). Typical input {"regimes": [{"regime": "eu_nis2"}, {"regime": "eu_gdpr"}, {"regime": "eu_dora", "entity_class": "credit_institution"}], "awareness_at": "2026-09-14T09:30:00+02:00", "country": "DE"} returns {"timeline": [rows sorted by due_at, each tagged with regime], "first_due": {...}, "per_regime": {...}}. Each entry may carry its own event_type and entity_class; the anchors and flags are shared. Use when one incident triggers several regimes and the agent needs a single ordered list. Not for one regime: compute_deadlines is free. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "regimes must be a non-empty list of <value>"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
入力スキーマ
{
"type": "object",
"properties": {
"regimes": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array",
"description": "list of {\"regime\": id, \"event_type\"?: ..., \"entity_class\"?: ...} (1-10 entries)."
},
"awareness_at": {
"type": "string",
"description": "when the entity became aware, ISO 8601 with a UTC offset."
},
"classification_at": {
"default": "",
"type": "string",
"description": "DORA classification instant."
},
"measure_available_at": {
"default": "",
"type": "string",
"description": "CRA corrective-measure instant."
},
"materiality_determined_at": {
"default": "",
"type": "string",
"description": "SEC materiality determination instant."
},
"discovery_date": {
"default": "",
"type": "string",
"description": "HIPAA discovery date (defaults to the awareness date)."
},
"submitted": {
"additionalProperties": true,
"default": {},
"type": "object",
"description": "actual submission times keyed by \"regime/obligation\" or obligation id."
},
"entity_class": {
"default": "",
"type": "string",
"description": "default entity class for entries that do not set their own."
},
"country": {
"default": "",
"type": "string",
"description": "ISO 3166-1 alpha-2 code for the public-holiday calendar."
},
"subdiv": {
"default": "",
"type": "string",
"description": "optional subdivision code for the holiday calendar."
},
"flags": {
"additionalProperties": true,
"default": {},
"type": "object",
"description": "condition answers shared by all regimes (see compute_deadlines)."
}
},
"required": [
"regimes",
"awareness_at"
],
"additionalProperties": false
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}🟢validate_report(regime, obligation, report, event_type, due_at, ...)
Check a draft report against the statutory content list and its deadline. PREMIUM (license). Typical input {"regime": "eu_gdpr", "obligation": "supervisory_authority_notification", "report": {"nature": "...", "contact": "...", "consequences": "...", "measures": "..."}} returns {"checklist": [{"item": "...", "found": true, "evidence": [...]}, ...], "missing": [...], "coverage": 0.75, "timing": {...}}. The content check is a keyword heuristic over the report text, reported as such; the timing check compares submitted_at with due_at and, for GDPR, flags a late notification that gives no reasons for the delay. Use before a report is sent. Not a legal review, and it cannot judge quality, only presence. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "unknown obligation '<value>' for <value>/<value>; one of <value>"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
入力スキーマ
{
"type": "object",
"properties": {
"regime": {
"type": "string",
"description": "regime id from list_regimes."
},
"obligation": {
"type": "string",
"description": "obligation id (for example incident_notification)."
},
"report": {
"additionalProperties": true,
"type": "object",
"description": "the draft, as an object of section name -> text (any keys)."
},
"event_type": {
"default": "",
"type": "string",
"description": "event type within the regime; optional when the regime has one."
},
"due_at": {
"default": "",
"type": "string",
"description": "the computed due instant (from compute_deadlines), optional."
},
"submitted_at": {
"default": "",
"type": "string",
"description": "when the report was or will be submitted, optional."
}
},
"required": [
"regime",
"obligation",
"report"
],
"additionalProperties": false
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}🟢timeline_export(deadlines, calendar_name, incident_ref, alarm_hours_before)
Export computed deadlines as an iCalendar file and CSV rows. PREMIUM (license). Typical input {"deadlines": <rows from compute_deadlines or the timeline from compute_deadlines_multi>, "incident_ref": "INC-2026-041"} returns {"ics": "BEGIN:VCALENDAR...", "csv": "regime,obligation,...", "events": 4}. Each dated deadline becomes a VEVENT with the citation in the description and an alarm alarm_hours_before it; rows without a fixed time limit are listed in the CSV only. Use when the timeline needs to land in a calendar or a ticket. Not for computing deadlines. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "deadlines must be a non-empty list of rows from compute_deadlines"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
入力スキーマ
{
"type": "object",
"properties": {
"deadlines": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array",
"description": "rows from compute_deadlines / compute_deadlines_multi."
},
"calendar_name": {
"default": "Incident reporting deadlines",
"type": "string",
"description": "X-WR-CALNAME for the calendar file."
},
"incident_ref": {
"default": "",
"type": "string",
"description": "your incident reference, prefixed to every event summary."
},
"alarm_hours_before": {
"default": 4,
"maximum": 720,
"minimum": 0,
"type": "number",
"description": "hours before each due instant to fire a VALARM (0 disables)."
}
},
"required": [
"deadlines"
],
"additionalProperties": false
}出力スキーマ
{
"type": "object",
"additionalProperties": true
}コミュニティ
エビデンス