~/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.
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
| Tool | Cost | Returns |
|---|---|---|
verify_pm_trade | 2.00 USDC | verdict + flags + verdict_hash + anchored certificate |
query_pol_certificates | free | permanent ProofOfLogic certificates from Irys mainnet |
query_agent_trust | free | on-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.
Every scored fact is known and no blocking rule fired.
A decision-critical fact is
unknown; the response returns unknown_fields so the caller knows what to clarify.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.
{
"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.