The reasoning gate every trading agent calls before it acts.
Transaction-security tools ask "is this transaction safe to sign?" DJZS asks a different question — "should this position be taken at all?" It audits the reasoning behind a move before capital is committed and returns one of three verdicts, with the specific defects flagged and a reproducible hash of the decision.
It's live now as a Model Context Protocol tool (streamable HTTP). Add it in one line:
claude mcp add --transport http djzs-trust https://djzs-trust-mcp.easy-less-spoil.workers.dev/mcp
Then call verify_pm_trade with a free-text prediction-market thesis.
Audit before act.
Architecture C // extraction reports, the engine decides
DJZS splits the model-bound step from the trusted step. An LLM extracts observable
facts from messy intent — it never returns a verdict. It runs as an N=3
consensus: per-field state must agree across all three samples or the field collapses
to unknown; a claimed absent must quote the intent verbatim (quote gates);
and a critical-driving absent needs the same quote across every sample (evidence-unanimity).
The resulting struct is scored by a frozen deterministic engine — pure code, no model, no network, no clock. The verdict rules are model-independent: swap the model and the extraction quality changes, but the rules, weights, and hash do not. The same struct always yields the same verdict and the same hash:
verdict_hash = sha256(canonicalize({ verdict, risk_score, flags: flags.map(f => f.code).sort(), unknown_fields }))
Verdict is computed, not improvised.
The ladder // three outcomes, never two
Every scored fact is known and no blocking rule fired.
A decision-critical fact is
unknown. The caller halts and the response returns unknown_fields so it knows what to clarify.A rule fired on facts the engine knows. Stop.
Under-specified reasoning drains to WAIT → HALT, never to a silently guessed PASS or FAIL. Abstention is a first-class outcome.
Abstain over guess.
Taxonomies // frozen
DJZS-M — Prediction Market (DJZS-PM-v1.0)
Weights sum to 100; FAIL threshold 25. All four codes implemented and calibrated.
| Code | Name | Severity | Weight |
|---|---|---|---|
DJZS-M01 | NARRATIVE_RESOLUTION_GAP | CRITICAL | 30 |
DJZS-M02 | FALSIFICATION_ABSENT | CRITICAL | 30 |
DJZS-M03 | PROBABILITY_UNSOURCED | HIGH | 25 |
DJZS-M04 | CONSENSUS_NO_EDGE | MEDIUM | 15 |
M04 is advisory-grade: a lone M04 rides a PASS with the flag on the certificate (weight 15 is below the threshold); it blocks only by stacking (e.g. M03 + M04 = 40 → FAIL).
DJZS-LF — Perpetuals / general reasoning (DJZS-LF-v1.1)
Weights sum to 200. Frozen at 11 codes; 3 are wired live today (●). The rest are defined and weighted but not yet firing — stated honestly, not implied.
| Code | Name | Category | Severity | Weight | Live |
|---|---|---|---|---|---|
DJZS-S01 | CIRCULAR_LOGIC | Structural | CRITICAL | 30 | |
DJZS-S02 | LAYER_INVERSION | Structural | HIGH | 25 | |
DJZS-S03 | DEPENDENCY_GHOST | Structural | MEDIUM | 18 | |
DJZS-E01 | ORACLE_UNVERIFIED | Epistemic | HIGH | 25 | ● |
DJZS-E02 | CONFIDENCE_INFLATION | Epistemic | MEDIUM | 18 | |
DJZS-I01 | FOMO_LOOP | Incentive | MEDIUM | 16 | ● |
DJZS-I02 | MISALIGNED_REWARD | Incentive | MEDIUM | 16 | |
DJZS-I03 | DATA_UNVERIFIED | Incentive | MEDIUM | 16 | |
DJZS-X01 | EXECUTION_UNBOUND | Execution | CRITICAL | 15 | ● |
DJZS-X02 | RACE_CONDITION | Execution | HIGH | 9 | |
DJZS-T01 | STALE_REFERENCE | Temporal | LOW | 12 |
Both weight tables are hash-locked exported constants; a weight change is a deliberate re-derive, not a hot patch.
Proof // first external audit on record
An outside agent audited a benchmark thesis (pm-block-008) through the deployed
tool and received:
{
"tool": "verify_pm_trade",
"case": "pm-block-008",
"verdict": "FAIL",
"action": "FAIL",
"risk_score": 40,
"flags": ["DJZS-M03", "DJZS-M04"],
"unknown_fields": [],
"disagreements": [],
"verdict_hash": "0x85918814b3dffa31b00d6892c2e00b2001efd35f7e0044b4cd3789fe1df14937"
}
Behavioral parity against the offline batteries (verdict + flags + extracted input) is green. Hash parity is a pending re-mint — the calibration key lapsed during deployment — so the live hash above stands as the record until it is re-run.
Honest v1 posture // recorded deferrals
What the tool does not do yet, stated plainly:
- No ProofOfLogic write on the tool.
verify_pm_tradereturns averdict_hashbut does not yet anchor a certificate. Existing Irys certificates are prior-architecture lineage, not output of this tool. - No payment gate on the tool. The MCP tool is not metered; the older paid HTTP tiers are a separate surface.
- Taxonomy hashes not in the response. The four hash constants are exported from the frozen tables but are not yet included in the tool's JSON response.
On-chain: four DJZS contracts are attested on Base in the A2A manifest, with source in
contracts/. A fifth contract, DJZSProofOfLogicNFT.sol, exists as source
only — it is not in the deployed manifest, and nothing here claims certificate NFTs are live or
mintable.
For agents // this page is the API doc
curl this page and you get this pitch — every word is in the HTML, no JavaScript required to read it. A machine-readable summary lives at /llms.txt with the MCP endpoint and repository link. The gate is one install command away (see the hero above); the source of truth for every number on this page is the repository at github.com/SIFR0-dev/djzs-AI.
Evidence before record.