Skip to content

DCL Trust Oracle — AI/LLM Output Audit (x402 MCP)

by fronesislabs.com · remote · no sign-in to list tools · v2.3.1 · published by com.fronesislabs

AI/LLM agent output audit MCP: policy eval, tamper-evident chain, AI safety, x402 USDC on Base.

Final · 1Changes · 173 high findings

18 tools: 1 do something that can't be undone and 17 change things.

Scanned Oct 21, 2026

9 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http dcl-trust-oracle https://mcp.fronesislabs.com/mcp

Findings

Matches of fixed checks, with the text they matched.

3 high2 warn4 info
  • The description contains "ignore previous instructions", an instruction to set earlier instructions aside.

    Matched text

    description: "...ing check against 3 forbidden phrases ("ignore previous instructions", "jailbreak", "bypass safety") with a..."

    What this check looks for
  • The description contains "ignore previous instructions", an instruction to set earlier instructions aside.

    Matched text

    description: "...ing check against 6 forbidden phrases ("ignore previous instructions", "jailbreak", "bypass safety", "preten..."

    What this check looks for
  • The description refers to "secrets/credentials".

    Matched text

    description: "...Post-processing checkpoint that strips secrets/credentials, PII, crypto material (seed phrases, pr..."

    What this check looks for
  • The server marks "dcl_audit_decode" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "post": a word for a change.

    What this check looks for
  • The server marks "dcl_audit_decode_deep" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "post": a word for a change.

    What this check looks for
  • The title mentions "Credential".

    Matched text

    title: "Secret & Credential Leak Scan"

    What this check looks for
Show 3 more findings

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

18 tools

Can't be undone 1Claude Code: ask
  • dcl_evaluate_strictSTRICT Pre-Action Audit ($0.05).No findings

    Why it is in this group

    • The name "dcl_evaluate_strict" says "evaluate": a word for a change.
    • The description says "irreversible".
    Description, as the server wrote it
    STRICT Pre-Action Audit ($0.05). Runs the response against a broader, higher-bar "strict" policy: the union of all forbidden phrases from the default, anti-jailbreak, and safety policies (8 phrases total), with a 0.85 minimum-confidence threshold instead of the default policy's 0.7. Each matched phrase costs 0.4 confidence; if confidence falls below 0.85, or any phrase matches, the verdict is NO_COMMIT with `reason` listing every match found. Use this instead of dcl_evaluate_fast when the cost of a false COMMIT is high — e.g. before an irreversible or high-stakes agent action — since it catches jailbreak- and safety-adjacent phrasing that the plain default policy would miss.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
Changes things 17Claude Code: ask
  • dcl_audit_decodePOST-ACTION Basic Audit ($0.10).1 finding

    Why it is in this group

    • The description's first verb is "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "dcl_audit_decode" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    POST-ACTION Basic Audit ($0.10). Retrieves a record from the tamper-evident chain by tx_hash.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • dcl_audit_decode_deepPOST-ACTION Deep Forensic Audit ($0.50).1 finding

    Why it is in this group

    • The description's first verb is "post": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "dcl_audit_decode_deep" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "post": a word for a change.

      What this check looks for
    Description, as the server wrote it
    POST-ACTION Deep Forensic Audit ($0.50). Extended output with drift_context and full chain integrity verification.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • dcl_commitFINAL-STEP Leibniz Layer Crypto Commit ($0.01).No findings

    Why it is in this group

    • The name "dcl_commit" says "commit": a word for a change.
    Description, as the server wrote it
    FINAL-STEP Leibniz Layer Crypto Commit ($0.01). Writes a trading/agent decision to the append-only Leibniz Layer audit chain and returns a Merkle-proof-style receipt: `tx_hash` (proof of this specific commit), `chain_hash` (the previous commit's hash, linking this one into the chain), and `chain_depth` (this commit's position in the chain). Unlike the evaluate_* tools, this call has no pass/fail verdict of its own — it always succeeds and simply seals the decision. Passing `prior_checks` is optional but recommended: it records which earlier pipeline steps (firewall/wallet/trade/MEV) this specific commit is downstream of, in one auditable record. Always run this LAST, after every other crypto-suite check has passed.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_evaluate_batchPRE-ACTION Bulk Processing ($0.10).No findings

    Why it is in this group

    • The name "dcl_evaluate_batch" says "evaluate": a word for a change.
    Description, as the server wrote it
    PRE-ACTION Bulk Processing ($0.10). Evaluates a list of items in one call; each item is a dict shaped {"response": str, "policy"?: str}, where policy defaults to "default" if omitted and may be any built-in policy name (default, strict, anti_jailbreak, safety, content_quality). Each item gets its own independent COMMIT/NO_COMMIT verdict via the same logic as the matching single-item evaluate_* tool; results are returned in input order under `results`, plus a shared `batch_id`. Capped at 200 items per call — oversized batches are rejected. Use this instead of multiple single-item evaluate_* calls when checking several responses — optionally against different policies — in one priced call rather than paying per item separately.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_evaluate_fastFAST Pre-Action Audit ($0.01).1 finding

    Why it is in this group

    • The name "dcl_evaluate_fast" says "evaluate": a word for a change.

    Findings

    • High

      The description contains "ignore previous instructions", an instruction to set earlier instructions aside.

      Matched text

      description: "...ing check against 3 forbidden phrases ("ignore previous instructions", "jailbreak", "bypass safety") with a..."

      What this check looks for
    Description, as the server wrote it
    FAST Pre-Action Audit ($0.01). Runs the response through the server's "default" policy: a substring check against 3 forbidden phrases ("ignore previous instructions", "jailbreak", "bypass safety") with a 0.7 minimum-confidence threshold. Each forbidden match found costs 0.4 confidence; if confidence falls below 0.7, or any match is found, the verdict is NO_COMMIT and `reason` lists which phrase triggered it. Otherwise COMMIT. Use this as the default low-cost first-pass gate before a risky agent action; switch to dcl_evaluate_strict for a broader, higher-bar check, or to dcl_evaluate_jailbreak / dcl_evaluate_safety / dcl_evaluate_quality for a narrower, single-topic check instead of the general-purpose default policy.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_evaluate_jailbreakPRE-ACTION Instruction Adherence Check ($0.02).1 finding

    Why it is in this group

    • The name "dcl_evaluate_jailbreak" says "evaluate": a word for a change.

    Findings

    • High

      The description contains "ignore previous instructions", an instruction to set earlier instructions aside.

      Matched text

      description: "...ing check against 6 forbidden phrases ("ignore previous instructions", "jailbreak", "bypass safety", "preten..."

      What this check looks for
    Description, as the server wrote it
    PRE-ACTION Instruction Adherence Check ($0.02). Runs the "anti_jailbreak" policy: a substring check against 6 forbidden phrases ("ignore previous instructions", "jailbreak", "bypass safety", "pretend you are", "act as if", "DAN") with a 0.8 minimum-confidence threshold — each match costs 0.4 confidence. Returns COMMIT if no phrase matches and confidence stays at or above 0.8, otherwise NO_COMMIT with `reason` listing the matched phrase(s). Use this as a targeted, cheaper check when the concern is specifically prompt-injection / persona-hijack risk; use dcl_evaluate_strict instead when you also want safety- and default-policy phrases covered in the same call.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_evaluate_jailbreak_cryptoPRE-ACTION Crypto Jailbreak & Injection Detection ($0.02).No findings

    Why it is in this group

    • The name "dcl_evaluate_jailbreak_crypto" says "evaluate": a word for a change.
    Description, as the server wrote it
    PRE-ACTION Crypto Jailbreak & Injection Detection ($0.02). Crypto-specialized instruction-override/jailbreak/injection screen: standard role-switch and instruction-override patterns, plus crypto-specific drain-wallet injection (e.g. "transfer all funds to...", fake "test transaction" requesting full balance) and unlimited-approval injection (e.g. type(uint256).max, "approve unlimited allowance", skip-slippage-confirmation framing). Any match returns NO_COMMIT with `reason` and `findings` naming the matched category/categories; run this FIRST in the DCL crypto pipeline, before wallet/trade/MEV checks, since it screens the input itself rather than a decision built on top of it.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_evaluate_mevPOST-ACTION MEV & Market-Abuse Compliance Screen ($0.03).No findings

    Why it is in this group

    • The name "dcl_evaluate_mev" says "evaluate": a word for a change.
    Description, as the server wrote it
    POST-ACTION MEV & Market-Abuse Compliance Screen ($0.03). Text-level screen (not a mempool/transaction analyzer) for front-running/sandwich-attack language, wash trading/layering/spoofing, KYC/AML red flags (mixers, structuring, obscuring fund origin), and pump-and-dump/rug-pull language. Any critical-severity finding, or two or more major-severity findings, returns NO_COMMIT; a single major-severity finding is also returned as NO_COMMIT but with a distinctly higher `confidence` (~0.55 vs ~0.05-0.2 for harder violations) so downstream callers can tell a soft single flag apart from a hard multi-finding block. Each finding includes an illustrative `regulatory_reference` tag (MiFID II, FCA, or an EU AI Act article).

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_evaluate_output_sanitizerFINAL-GATE Output Sanitizer ($0.02).1 finding

    Why it is in this group

    • The name "dcl_evaluate_output_sanitizer" says "evaluate": a word for a change.

    Findings

    • High

      The description refers to "secrets/credentials".

      Matched text

      description: "...Post-processing checkpoint that strips secrets/credentials, PII, crypto material (seed phrases, pr..."

      What this check looks for
    Description, as the server wrote it
    FINAL-GATE Output Sanitizer ($0.02). Post-processing checkpoint that strips secrets/credentials, PII, crypto material (seed phrases, private keys, wallet addresses), internal network details (private IPs, MAC addresses, .internal/.local/.corp hostnames), and unsafe shell/SQL/path-traversal fragments from a raw model response — plus a narrow, high-precision safety net for direct self-harm-instruction-seeking and targeted-harassment phrasing (not a general toxicity classifier). Returns a single `sanitized_output` with every match replaced by `[REDACTED]`; use that instead of the original whenever verdict is NO_COMMIT. Run this as the LAST gate before a response reaches its destination — after `dcl_evaluate_jailbreak_crypto`/other input-side checks have already run, and immediately before `dcl_commit` seals the final decision. Internally re-uses the same detection tables as `dcl_evaluate_secrets`/`dcl_evaluate_pii` for the secrets/PII categories, so results stay consistent with those tools.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_evaluate_piiPOST-ACTION PII Detection Scan ($0.02).No findings

    Why it is in this group

    • The name "dcl_evaluate_pii" says "evaluate": a word for a change.
    Description, as the server wrote it
    POST-ACTION PII Detection Scan ($0.02). Regex-based scan across 8 personal-data categories, with a Luhn checksum on card numbers to reduce false positives. Any finding results in NO_COMMIT.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_evaluate_qualityPRE-ACTION Content Quality & Drift Check ($0.03).No findings

    Why it is in this group

    • The name "dcl_evaluate_quality" says "evaluate": a word for a change.
    Description, as the server wrote it
    PRE-ACTION Content Quality & Drift Check ($0.03). Runs the "content_quality" policy: flags 12 absolutist or unverifiable-claim phrases (e.g. "guaranteed returns", "100% accurate", "studies show", "without a doubt") with a 0.85 minimum-confidence threshold — the highest bar of any single-policy tool. Returns NO_COMMIT if any phrase matches or confidence falls below 0.85, with `reason` listing the matched phrase(s). Use this to catch overconfident or unsubstantiated claims in generated content — a different concern from jailbreak or safety phrasing — e.g. before publishing agent-written copy or reports.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_evaluate_safetyPRE-ACTION Baseline Safety Check ($0.01).No findings

    Why it is in this group

    • The name "dcl_evaluate_safety" says "evaluate": a word for a change.
    Description, as the server wrote it
    PRE-ACTION Baseline Safety Check ($0.01). Runs the "safety" policy: flags 2 forbidden disclaimers ("I cannot be held responsible", "no guarantees") and additionally REQUIRES the substring "AI" to appear somewhere in the response — missing it costs 0.2 confidence even with no forbidden phrase present. Minimum confidence is 0.75. Returns NO_COMMIT if confidence drops below 0.75, with `reason` naming the forbidden phrase found or the missing required pattern. Use this when you specifically need to confirm an AI-disclosure marker is present and the two disclaimer phrases are absent — not as a general-purpose safety net; for broader coverage use dcl_evaluate_fast or dcl_evaluate_strict instead.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_evaluate_secretsPOST-ACTION Secret & Credential Leak Scan ($0.02).3 findings

    Why it is in this group

    • The name "dcl_evaluate_secrets" says "evaluate": a word for a change.

    Findings

    • Info

      The title mentions "Credential".

      Matched text

      title: "Secret & Credential Leak Scan"

      What this check looks for
    • Info

      The description mentions "Credential".

      Matched text

      description: "POST-ACTION Secret & Credential Leak Scan ($0.02). Regex-based scan acr..."

      What this check looks for
    • Info

      The input schema at properties.response.description mentions "credentials".

      Matched text

      inputSchema.properties.response.description: "...okens, private keys, DB URLs, and other credentials."

      What this check looks for
    Description, as the server wrote it
    POST-ACTION Secret & Credential Leak Scan ($0.02). Regex-based scan across 8 categories (API keys, cloud credentials, tokens/JWTs, private keys, DB URLs, connection strings, env assignments, webhook secrets, internal endpoints with auth). Any finding results in NO_COMMIT.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_evaluate_signalPOST-ACTION Market Signal Fabrication Screen ($0.03).No findings

    Why it is in this group

    • The name "dcl_evaluate_signal" says "evaluate": a word for a change.
    Description, as the server wrote it
    POST-ACTION Market Signal Fabrication Screen ($0.03). Pattern-based heuristic on the output text alone (no source price feed) — flags guaranteed-price-prediction language ("will definitely hit $X"), absolute-certainty claims ("100% certain", "cannot go down"), a fabricated-price flag when a specific dollar figure co-occurs with a guaranteed-outcome claim, and an invented-token flag when a "$TICKER" cashtag doesn't match a small set of well-known symbols (false positives are possible for legitimate lesser-known tickers — this is a heuristic pre-check, not ground truth). For a full claim-by-claim check against an actual price-feed snapshot, use the local grounding workflow instead of this live tool. Verdict/confidence collapsing follows the same rule as dcl_evaluate_mev: any critical finding or 2+ major findings is a hard NO_COMMIT; exactly one major finding is a softer NO_COMMIT at ~0.55 confidence.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_evaluate_tradePRE-ACTION Trade Decision Verifier ($0.02).No findings

    Why it is in this group

    • The name "dcl_evaluate_trade" says "evaluate": a word for a change.
    Description, as the server wrote it
    PRE-ACTION Trade Decision Verifier ($0.02). Screens trade-decision language for guaranteed-return claims, zero-risk/"can't lose" framing, and unqualified "buy/sell X now" directives — any match is NO_COMMIT. If no unsafe language is found, COMMIT additionally requires the word "risk" to appear anywhere in the text as a minimum disclosure marker; its absence alone triggers NO_COMMIT with `reason` noting the missing disclosure. Produces an immutable `trade_receipt` (tx_hash/chain_hash/chain_depth) distinct from the top-level audit hash, for downstream systems that specifically need a trade-shaped receipt object.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_evaluate_walletPOST-ACTION Wallet Secret Guardian ($0.02).1 finding

    Why it is in this group

    • The name "dcl_evaluate_wallet" says "evaluate": a word for a change.

    Findings

    • Info

      The input schema at properties.response.description mentions "credentials".

      Matched text

      inputSchema.properties.response.description: "...allet addresses, and wallet-context API credentials."

      What this check looks for
    Description, as the server wrote it
    POST-ACTION Wallet Secret Guardian ($0.02). Scans for BIP-39 seed phrases (12 or 24 consecutive wordlist words), raw hex or WIF-format private keys, Ethereum/Bitcoin wallet addresses, and API keys/bearer tokens appearing near wallet/custody/signing terminology. Any finding results in NO_COMMIT — wallet secrets have no safe threshold, unlike other DCL evaluators. Returns a `sanitized_output` with all matches redacted (null if nothing was found) and a masked `redacted_sample` per finding — the real value is never returned or stored server-side.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • dcl_pipeline_startSESSION Management ($0.05).No findings

    Why it is in this group

    • The name "dcl_pipeline_start" says "start": a word for a change.
    Description, as the server wrote it
    SESSION Management ($0.05). Generates a new `pipeline_id` and returns session metadata (scope, expiry, initial drift_mode) for organizing a series of related checks under one identifier. Note: this call does not currently link the returned pipeline_id to later evaluate_* calls — there is no server-side session state that ties subsequent audits back to it; it is an identifier/timestamp issuer, not an active tracking session. Use this to obtain a shared reference ID for your own client-side grouping of a multi-step audit sequence; do not rely on it to automatically aggregate drift across calls.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 2.3.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http dcl-trust-oracle https://mcp.fronesislabs.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [],
    "ask": [
      "mcp__dcl-trust-oracle__dcl_evaluate_fast",
      "mcp__dcl-trust-oracle__dcl_evaluate_strict",
      "mcp__dcl-trust-oracle__dcl_evaluate_jailbreak",
      "mcp__dcl-trust-oracle__dcl_evaluate_safety",
      "mcp__dcl-trust-oracle__dcl_evaluate_quality",
      "mcp__dcl-trust-oracle__dcl_evaluate_secrets",
      "mcp__dcl-trust-oracle__dcl_evaluate_pii",
      "mcp__dcl-trust-oracle__dcl_evaluate_batch",
      "mcp__dcl-trust-oracle__dcl_pipeline_start",
      "mcp__dcl-trust-oracle__dcl_audit_decode",
      "mcp__dcl-trust-oracle__dcl_audit_decode_deep",
      "mcp__dcl-trust-oracle__dcl_evaluate_jailbreak_crypto",
      "mcp__dcl-trust-oracle__dcl_evaluate_wallet",
      "mcp__dcl-trust-oracle__dcl_evaluate_trade",
      "mcp__dcl-trust-oracle__dcl_evaluate_mev",
      "mcp__dcl-trust-oracle__dcl_evaluate_signal",
      "mcp__dcl-trust-oracle__dcl_evaluate_output_sanitizer",
      "mcp__dcl-trust-oracle__dcl_commit"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as dcl-trust-oracle. Review it before you use it.