DJZS.

~/djzs/guide $

Connect the gate

DJZS is exposed as a Model Context Protocol server over streamable HTTP at /mcp. The lead tool is verify_pm_trade — the pre-execution audit an agent calls before it acts.

OKSYS_IDdjzs-mainnet-01
OKMODECONNECT — streamable HTTP at /mcp
OKPRICEverify_pm_trade 2.00 USDC via x402 · registry tools free

Endpoint: https://mcp.djzs.ai/mcp

Setup // step 01 · one line

claude mcp add --transport http djzs-trust https://mcp.djzs.ai/mcp

Listed in the official MCP Registry as ai.djzs/trust-mcp — MCP clients that read the registry can discover it there.

Or via config JSON

For agents that read an MCP server map, register the streamable-HTTP endpoint:

{
  "mcpServers": {
    "djzs-trust": {
      "type": "http",
      "url": "https://mcp.djzs.ai/mcp"
    }
  }
}

Tools // step 02 · three, one leads

ToolCostReturns
verify_pm_trade2.00 USDCverdict + flags + verdict_hash + anchored certificate
query_pol_certificatesfreepermanent ProofOfLogic certificates from Irys mainnet
query_agent_trustfreeon-chain trust: totalAudits, failRate, PROCEED / HALT / NO_HISTORY

verify_pm_trade — the gate Paid

Pass a free-text prediction-market trade thesis. The tool extracts the reasoning (N=3 consensus), audits it against the calibrated DJZS-M taxonomy, and returns one of three verdicts with flagged defects and a reproducible verdict_hash. It is prediction-market only: an intent that does not extract as a PM thesis (including the undetermined case) comes back in_scope: false rather than silently running a perpetuals audit.

PASS → PROCEED
Every scored fact is known and no blocking rule fired.
WAIT → HALT
A decision-critical fact is unknown; the response returns unknown_fields so the caller knows what to clarify.
FAIL
A rule fired on facts the engine knows. Stop.

Response fields: verdict, action, risk_score, flags, unknown_fields, disagreements, verdict_hash, extraction_failsafe, in_scope, taxonomy versions, and pol_certificate (the anchored Irys certificate).

Optional input agent_address (a 0x wallet): when present, the verdict is also written to that agent's on-chain trust record after the certificate anchors — fail-open, never altering the audit. The tool is paid: 2.00 USDC per audit; the two registry tools below are free.

query_pol_certificates Free

Reads ProofOfLogic certificates from the Irys datachain (mainnet, permanent) — including the certificate every in-scope verify_pm_trade audit anchors, plus prior-architecture lineage. Free.

query_agent_trust Free

LIVE — reads an agent's on-chain trust record from the DJZS subgraph on The Graph. Pass agentAddress (0x wallet); returns totalAudits, pass/fail counts, failRate, latest verdict and risk score, DJZS-S01/X01 flag counts, and an action of PROCEED, HALT (failRate > 0.3 or S01/X01 fired more than once), or NO_HISTORY (no audits on record — never a silent pass). Free. Records enter this index when audits are called with agent_address.

Pay for the audit // step 03 · x402, 2.00 USDC, non-custodial

verify_pm_trade is paid: 2.00 USDC per audit on Base mainnet over x402. An unpaid call is refused with a payment-required error — no free tier, no API key. Payment is non-custodial: your EIP-3009 signature moves USDC from your wallet directly to the DJZS treasury; the facilitator submits the transfer and pays the gas, so your wallet needs USDC only, no ETH.

The MCP-native payer path, exactly as the production parity instrument runs it:

import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { withX402Client } from "agents/x402"
import { privateKeyToAccount } from "viem/accounts"

const client = new Client({ name: "my-agent", version: "1.0.0" })
await client.connect(new StreamableHTTPClientTransport(new URL("https://mcp.djzs.ai/mcp")))

const paid = withX402Client(client, {
  account: privateKeyToAccount(PAYER_KEY), // wallet holding USDC on Base; gas is facilitator-paid
  network: "base",
  maxPaymentValue: 2000000n, // 2.00 USDC atomic - REQUIRED; the library default caps at 0.10 USDC
})

const res = await paid.callTool(
  async (offer) => true, // payment confirmation: inspect the 402 offer, return true to sign and pay
  { name: "verify_pm_trade", arguments: {
    intent: "YES on the March market; my calibrated model says 72% vs market 58%, invalidation if X...",
    agent_address: "0xYourAgentWallet", // optional: writes the verdict to your on-chain trust record
  } },
)

Two payer pitfalls, both hit and proven live: maxPaymentValue must be raised to 2000000n (the default 0.10 USDC cap refuses the price before signing anything), and the wrapped client's callTool is callback-first — the confirmation callback is the first argument, the tool call the second.

Verified path only: this recipe is the one the deploy-parity gate replays against production. Other x402 clients (HTTP-framed wrappers, AgentKit) are deliberately undocumented here until proven against this endpoint.

What comes back // step 04 · a real paid response

An actual production response — the deploy-parity replay of benchmark thesis pm-block-008 (2026-07-17), abridged to the decision fields. Nothing staged: the certificate below is permanently retrievable and the hash reproduces byte-identical on every replay of the same extracted struct.

FAIL
{
  "verdict": "FAIL",
  "action": "FAIL",
  "risk_score": 40,
  "flags": ["DJZS-M03 PROBABILITY_UNSOURCED", "DJZS-M04 CONSENSUS_NO_EDGE"],
  "unknown_fields": [],
  "disagreements": ["stop_loss"],
  "verdict_hash": "0x85918814b3dffa31b00d6892c2e00b2001efd35f7e0044b4cd3789fe1df14937",
  "pol_certificate": {
    "irys_id": "EuJ1evB3PWiNwvcMkixyRreaXEhfKGrzGwS6e4o1pyzp",
    "gateway_url": "https://gateway.irys.xyz/EuJ1evB3PWiNwvcMkixyRreaXEhfKGrzGwS6e4o1pyzp"
  }
}

disagreements lists fields where the N=3 extraction diverged — stop_loss sits outside the hash preimage, so the verdict_hash held anyway. Pull the certificate yourself: gateway.irys.xyz/EuJ1evB3… — same thesis, same struct, same hash, forever.

Taxonomy

The DJZS-M and DJZS-LF taxonomies — code names, severities, and weights — are documented once, as a single source of truth, in the repository README's Taxonomies section: github.com/SIFR0-dev/djzs-AI → Taxonomies. This guide deliberately keeps no local copy — one table, one source.

Connect once. Audit before every act.