# FaultKey · CausalLayer (remote · causallayer-mcp-demo.zykm9qkk7j.workers.dev)

Deterministic AI-liability attribution: signed, Bitcoin-anchored vendor/deployer/user fault split.

- Trust score: 57/100 (low)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `causallayer-mcp-demo.zykm9qkk7j.workers.dev`: 57/100 (this document), [markdown](https://verifymcp.io/servers/smq9sn5jck-cloud-causallayer-mcp/causallayer-mcp-demo.md), [page](https://verifymcp.io/servers/smq9sn5jck-cloud-causallayer-mcp/causallayer-mcp-demo)

## Channel facts

- Endpoint: `https://causallayer-mcp-demo.zykm9qkk7j.workers.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.2.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 10 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 55/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1769 tokens (~176/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 88/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 63% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http smq9sn5jck-cloud-causallayer-mcp https://causallayer-mcp-demo.zykm9qkk7j.workers.dev/mcp
```

### Codex

```toml
[mcp_servers.smq9sn5jck-cloud-causallayer-mcp]
url = "https://causallayer-mcp-demo.zykm9qkk7j.workers.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "smq9sn5jck-cloud-causallayer-mcp": {
      "type": "remote",
      "url": "https://causallayer-mcp-demo.zykm9qkk7j.workers.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add smq9sn5jck-cloud-causallayer-mcp --url https://causallayer-mcp-demo.zykm9qkk7j.workers.dev/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  smq9sn5jck-cloud-causallayer-mcp:
    url: "https://causallayer-mcp-demo.zykm9qkk7j.workers.dev/mcp"
```

### Other

```json
{
  "mcpServers": {
    "smq9sn5jck-cloud-causallayer-mcp": {
      "type": "http",
      "url": "https://causallayer-mcp-demo.zykm9qkk7j.workers.dev/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 57, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 56, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 56, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 55, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 54, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 53)

First indexed and scored.

## MCP tools (10)

### `submit_incident` (~209 tokens)

Submit an AI incident for deterministic causal liability attribution. Returns a signed CausalCertificate, per-agent liability allocation, evidence-chain completeness, regulatory mapping, and (where keys are configured) a Bitcoin-anchored proof. Cost: 50 credits. Three guardrails apply: PII scan, deterministic-only acknowledgement, and minimum evidence.

Input parameters:

- `agents` (array, required)
- `category` (string)
- `currency` (string)
- `description` (string)
- `deterministic_only` (boolean, required): G2: Must be true. Acknowledges CausalLayer is deterministic and not LLM-based.
- `events` (array, required)
- `financial_impact_cents`
- `jurisdiction` (string)
- `pii_acknowledged` (boolean): G1: Set to true ONLY if caller has confirmed PII handling is permitted by their data agreement. False payloads with detected PII will be rejected.
- `severity` (string)
- `title` (string, required)

### `verify_certificate` (~71 tokens)

Independently verify a CausalCertificate end-to-end (signature, Merkle integrity, issuer status against the registry). Cost: 1 credit. In production env, certificates from non-active issuers are rejected.

Input parameters:

- `certificate` (object, required): CausalCertificateV1 object as returned by submit_incident.certificate

### `verify_certificate_recompute` (~159 tokens)

Independently re-derive a CausalCertificate from its canonical input and compare byte-for-byte against the claimed certificate. This is the strongest verification path: it requires no trust in the issuer or signing key. Cost: 1 credit (same price as verify_certificate). Returns PASS only if every checked field (certificateId, request_hash, merkleRoot, verdict, causalGraph, fourFactorScoring, deviationTaxonomy, euRuleOverlay, cascadeAttenuation, damages, underwriting) matches identically.

Input parameters:

- `canonicalInput` (object, required): The original incident body that produced the certificate — the same JSON originally posted to submit_incident or submit_otel_trace.
- `certificate` (object, required): The CausalCertificate object claimed by the issuer.

### `submit_otel_trace` (~244 tokens)

Convert an OpenTelemetry OTLP JSON trace into a FaultKey incident and return the same deterministic CausalCertificate as submit_incident. Each span becomes an event; service.name groups spans into agents; W3C trace_id and span_id propagate as evidence pointers on the causal graph edges. Cost: 50 credits (same as submit_incident). Three guardrails apply: PII scan, deterministic-only acknowledgement, and minimum evidence (auto-satisfied when the trace has at least 1 span).

Input parameters:

- `category` (string)
- `currency` (string)
- `deterministic_only` (boolean, required): G2: Must be true. Acknowledges CausalLayer is deterministic.
- `financial_impact_cents`
- `jurisdiction` (string)
- `otlp` (object, required): OTLP JSON payload with resourceSpans[]. See https://opentelemetry.io/docs/specs/otlp/#json-protobuf-encoding
- `pii_acknowledged` (boolean): G1: Set to true ONLY if PII handling is permitted by your data agreement. OTLP traces frequently leak user/session ids in attributes.
- `title` (string, required)

### `simulate_remediation` (~223 tokens)

Counterfactual remediation simulator. Given a certificate's verdict + fourFactorScoring + agents and a list of remediation IDs from the FK-METHOD-2026-003 catalog, return the apportioned shares each remediation would have produced (in isolation) and the composite shares if they all stack. Every remediation cites a specific statute or standard. GET /api/v2/remediation/catalog for the list of IDs. Cost: 1 credit (same price as verify_certificate). Pure deterministic; same inputs produce a byte-identical result.

Input parameters:

- `agents` (array, required): Agent registry (id + type) so the simulator can map remediation targetType to specific party ids.
- `fourFactorScoring` (object, required): The fourFactorScoring block from the CausalCertificate.
- `remediations` (array, required): List of remediation IDs from the catalog (e.g. vendor_adversarial_eval_suite, deployer_human_in_loop). Each may optionally pin appliedToParty to a specific agent id.
- `verdict` (object, required): The verdict block from the CausalCertificate.

### `query_jurisdiction_overlay` (~303 tokens)

Multi-jurisdiction overlay (FK-METHOD-2026-004). Given a canonical attributable apportionment (party-id -> share), the union of all jurisdiction role tags on each actor, and the union of jurisdiction-specific flags, return side-by-side post-overlay shares for AU, EU, US, UK, CA (or a chosen subset) with the specific rules that fired in each, citation URLs, and a parties × jurisdictions matrix. v1 ships full implementations for AU and EU; US/UK/CA are research stubs marked `is_stub: true`. Use GET /api/v2/jurisdiction/catalog to discover support and stub status. Cost: 1 credit. Pure deterministic.

Input parameters:

- `actors` (array, required): All actors with the union of jurisdiction-specific role tags. EU and AU tags coexist on the same actor record.
- `attributable` (object, required): Canonical pre-overlay apportionment as { party_id: share }. Sum should approximate 1.0; the function renormalises within tolerance.
- `flags` (object, required): Union of jurisdiction-specific flags. AI Act / PLD flags drive the EU overlay; ACL / CPS 230 / VAISS flags drive the AU overlay.
- `jurisdictions` (array): Optional subset to compute. Defaults to all five.
- `primaryJurisdiction` (string): Engine-level jurisdiction string (e.g. 'EU', 'DE', 'AU'). Used by the EU gate to decide engagement.

### `evaluate_prospective_response` (~198 tokens)

Deterministic prospective-evaluation gate (FK-METHOD-2026-006). Pass a ProposedAction BEFORE the agent delivers a response; receive one of three verdicts: 'allow', 'require_revision' (with specific factor-keyed directives), or 'block'. Uses the same four-factor engine that issues post-hoc certificates, so a single incident chains: prospective_pre_image -> response -> certificate -> anchor. This is a policy gate on structured action metadata, NOT a content safety classifier on raw prose. Thresholds are per-jurisdiction (EU strictest, US most permissive); read via GET /api/v2/gate/thresholds. Overrides are allowed but REQUIRE a governance rationale so the audit trail is complete. Cost: 1 credit. Pure deterministic.

Input parameters:

- `action` (object, required): The structured ProposedAction to evaluate.
- `overrides` (object): Optional per-call threshold override. Rationale REQUIRED for audit.

### `get_anchor_status` (~75 tokens)

Return the index of all CausalLayer Tessera anchor batches, or one batch's full JSON (signed Merkle root, leaves, OpenTimestamps proof reference). FREE.

Input parameters:

- `version` (string): Optional anchor version, e.g. '2026-05-16-v1.6.4-simulation-calibration'.

### `query_issuer_registry` (~89 tokens)

Return the CausalLayer issuer registry, or one issuer record. The registry lists all trusted public-key fingerprints, key algorithms, validity windows, and the anchor-log repo for each active issuer. FREE — no API key required.

Input parameters:

- `issuer_id` (string): Optional issuer id, e.g. 'causallayer-prod-2026-q2'. If omitted, returns the full registry.

### `extract_incident` (~198 tokens)

Claude-powered structured extractor. Parses unstructured text (news articles, court filings, emails, PDFs, incident reports, logs) into the typed JSON schema required by submit_incident. Returns a ready-to-submit incident object with extracted agents, events, severity, jurisdiction, and financial impact. NOTE: This is a pre-processing convenience tool — the deterministic scoring engine itself remains LLM-free. Cost: 10 credits.

Input parameters:

- `context_hint` (string): Optional hint about the source type (e.g., 'court filing', 'news article', 'internal incident report') to improve extraction accuracy.
- `jurisdiction_hint` (string): Optional ISO country code hint if the jurisdiction is known (e.g., 'AU', 'US', 'EU').
- `text` (string, required): Unstructured text to extract from. Can be a news article, court filing, incident report, email, PDF text, log output, or any description of an AI incident.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/smq9sn5jck-cloud-causallayer-mcp/causallayer-mcp-demo#diagnostics

## Score history

- 2026-08-03: 57
- 2026-08-02: 57
- 2026-08-01: 56
- 2026-07-31: 56
- 2026-07-30: 56
- 2026-07-29: 55
- 2026-07-28: 55
- 2026-07-27: 54
- 2026-07-26: 53

## Links

- Remote endpoint: https://causallayer-mcp-demo.zykm9qkk7j.workers.dev/mcp
- Repository: https://github.com/smq9sn5jck-coder/causallayer-mcp
- Website: https://faultkey.com/
- Changelog RSS feed: https://verifymcp.io/servers/smq9sn5jck-cloud-causallayer-mcp/causallayer-mcp-demo/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/smq9sn5jck-cloud-causallayer-mcp/causallayer-mcp-demo/changelog.json
- HTML version of this page: https://verifymcp.io/servers/smq9sn5jck-cloud-causallayer-mcp/causallayer-mcp-demo
