Publisher: @daririnch · Fronesis Labs
Version: 2.0.0
Part of: DCL Skills · Leibniz Layer™ Security Suite
MCP endpoint: https://mcp.fronesislabs.com/mcp (DCL Trust Oracle)
Starting with v2.0.0, the categories below can be run two ways:
tx_hash seal. No subscription, no account — pay per call.Unlike some other DCL skills, this one is a close one-to-one match: the live tool implements the same S1-S8 categories documented here, so the two modes should agree. Use the free mode for manual review or offline work; use the live mode when you want an independently verifiable, on-chain-anchored proof of the scan.
Scans AI agent outputs, tool results, and pipeline data for exposed secrets and credentials — before they reach users, logs, or downstream systems.
CategoryPattern classapi_keyProvider-prefixed keys: OpenAI, Anthropic, Stripe, GitHub, Slack, SendGrid, Twilio patternscloud_credentialAWS access key IDs, AWS secret access keys, GCP service account fragmentstokenJWTs, Bearer tokensprivate_key_pemPEM header/footer blocks for any private key typedatabase_urlConnection strings with embedded credentials: proto://user:pass@host``connection_stringADO.NET / ODBC style strings with User ID=/ Password= fieldsenv_assignment``.env-style lines where the variable name matches known secret patternswebhook_secretSigned secrets for platforms like Stripeinternal_endpointURLs containing API keys or tokens as query parameters
MCP toolPriceWhat it runsdcl_evaluate_secrets$0.02Regex scan across all 8 categories above; any finding → NO_COMMIT
json
{
"mcpServers": {
"dcl-trust-oracle": {
"url": "https://mcp.fronesislabs.com/mcp"
}
}
}
Payment is handled automatically for x402-capable clients; clients without native x402 support fall back to a guided payment flow. No API key or account signup is required — only a wallet capable of paying in USDC on Base. Prices are set server-side and may change; the MCP tool description returned by the server at call time is the source of truth.
python
result = dcl_evaluate_secrets(
response=agent_output,
agent_id="my-agent-01",
)
if result["verdict"] == "NO_COMMIT":
block_and_alert(result["findings"])
else:
log_audit(result["tx_hash"])
json
{
"verdict": "COMMIT | NO_COMMIT",
"risk_score": 0.0,
"findings": [
{
"type": "api_key",
"provider": "openai",
"position": 87,
"redacted_sample": "sk****************3456",
"severity": "critical",
"category": "S1"
}
],
"detection_count": 0,
"categories_checked": ["S1","S2","S3","S4","S5","S6","S7","S8"],
"categories_clear": ["S1","S2","S3","S4","S5","S6","S7","S8"],
"tx_hash": "string",
"chain_index": 0,
"input_hash": "string",
"timestamp": 0.0,
"seal_text": "🔒 Verified by Leibniz Layer | Fronesis Labs\nHash: ...\nIntent: ...\nSealed: ... — Base Mainnet\nVerify: https://x402.fronesislabs.com/verify/...",
"verify_url": "https://x402.fronesislabs.com/verify/<hash>"
}
Only input_hash (a hash of the scanned text) and finding metadata are written to the audit
chain — the raw text and any real secret values are never stored. redacted_sample shows only
the first 2 and last 4 characters of any match.
Paste the text to scan into the conversation and work through the checklist below entirely inside the agent's own context. Nothing here contacts any server.
Verify the text to scan is present in the conversation. If not provided, ask the user to paste it.
text
content_hash = SHA-256(raw text submitted for scanning)
Work through every category below. For each match found, record type, provider (if
identifiable), position, a redacted_sample (first 2 and last 4 chars only), and severity.
If no patterns match a category, mark it CLEAR.
ConditionVerdictAny finding at any severityNO_COMMITNo findingsCOMMIT
Secrets have no safe threshold — any detected secret results in NO_COMMIT.
text
analysis_content = verdict + all findings serialized + timestamp
analysis_hash = SHA-256(analysis_content)
dcl_fingerprint = "DCL-SLD-" + date + "-" + content_hash[:8] + "-" + analysis_hash[:8]
S1 — API Keys (Critical)
S2 — Cloud Credentials (Critical)
S3 — Tokens & JWTs (Critical)
S4 — Private Keys (Critical)
S5 — Database & Connection Strings (Critical)
:// + username + : + password + @ + hostS6 — Environment Variable Assignments (Major)
KEY, SECRET, TOKEN, PASS, PWD, CREDENTIAL, AUTHS7 — Webhook & Signed URL Secrets (Major)
S8 — Internal Endpoints with Auth (Minor → Major)
api_key=, token=, secret=, or access_token= appears with a non-trivial valueThese two skills are complementary, not competing. Run both.
DCL Sentinel TraceDCL Secret Leak DetectorFocusPersonal identity dataTechnical credentialsCatchesEmails, phones, national IDs, IBANs, card PANsAPI keys, tokens, private keys, DB URLsPrimary riskPrivacy breachSecurity breach / credential compromiseLive tooldcl_evaluate_pii ($0.02)dcl_evaluate_secrets ($0.02)
A response can be PII-clean and still contain a live credential. Both checks are necessary for complete output coverage.
text
Untrusted input
│
▼
DCL Prompt Firewall ← blocks malicious input
│ COMMIT
▼
LLM call
│
▼
DCL Policy Enforcer ← policy & jailbreak check
│ COMMIT
▼
DCL Sentinel Trace ← PII redaction
│ COMMIT
▼
DCL Secret Leak Detector ← this skill — credential & secret scan
│ COMMIT
▼
DCL Semantic Drift Guard ← hallucination & grounding check
│ IN_COMMIT
▼
Safe to deliver
Coding agents — generate shell scripts, Dockerfiles, CI configs, Terraform. Common vector for hardcoded credentials appearing in generated output.
DevOps / infrastructure agents — read deployment configs, env files, Kubernetes secrets. May quote them verbatim in responses.
RAG pipelines over internal docs — internal wikis and runbooks routinely contain credentials left by engineers. Retrieved chunks can carry them into LLM context and outputs.
Tool-calling agents — an agent that calls an API internally may reproduce the key in its reasoning trace or final response.
Operated by Fronesis Labs. The free checklist runs 100% instruction-only — no network
requests, no content transmitted anywhere. For the live tool: only a hash of the scanned text
( input_hash) and finding metadata are written to the on-chain audit trail; raw text and
detected secret values are never stored server-side. Only redacted samples ever appear in output.
Full policy: https://fronesislabs.com/#privacy · Questions: support@fronesislabs.com
dcl-sentinel-trace — PII redaction and identity exposure detectiondcl-prompt-firewall — Input-layer injection and jailbreak detectiondcl-policy-enforcer — Policy and jailbreak detection for AI outputsdcl-semantic-drift-guard — Hallucination and grounding checkLeibniz Layer™ · Fronesis Labs · fronesislabs.com