addrbookFor publishers
← The evidence ledger

Evidence row 123812

Observed , by baseline/1.

Kind
listing
About
source_record x402_bazaar:https://verdict.kechlab.com/v1/trade-gate
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
1ed132ee0716a9be19a77600c23bb1204d0583f4b7797a1f5ad4947f020c2551
Leaf
0x1c2a5f85f4453a0dc1d79dee32c3c96dcb20cb3e15bc2da27a21b7bf141558f2

What was observed

{
  "endpoints": [
    [
      "x402",
      "https://verdict.kechlab.com/v1/trade-gate"
    ]
  ],
  "name": "Verdict L402",
  "owner_address": "0xb36c56a749f81ffeb44a134082dd4744e1d254eb",
  "raw": {
    "accepts": [
      {
        "amount": "17300",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "extra": {
          "name": "USD Coin",
          "version": "2"
        },
        "maxTimeoutSeconds": 120,
        "network": "eip155:8453",
        "payTo": "0xb36c56A749f81FFeb44a134082DD4744E1d254Eb",
        "scheme": "exact"
      }
    ],
    "description": "Pre-trade risk check for traders and trading bots. Before an order is sent, checks it exactly against your own rules (risk per trade, daily loss, max loss, cooldown after a loss, trade quota, blocked hours, days and instruments, minimum reward to risk) and computes the largest size still allowed. If",
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "body": {
              "account": {
                "consecutive_losses": 2,
                "day_pnl": -900,
                "equity": 24100,
                "minutes_since_last_loss": 4,
                "start_of_day_equity": 25000,
                "trades_today": 3
              },
              "order": {
                "entry": 1.085,
                "side": "long",
                "size": 150000,
                "stop": 1.082,
                "symbol": "EURUSD",
                "target": 1.091
              },
              "rationale": "Two stops in a row, I need to get it back before the close. Doubling size, it has to bounce here.",
              "rules": {
                "cooldown_minutes_after_loss": 15,
                "daily_loss_pct": 5,
                "max_risk_pct": 1
              }
            },
            "bodyType": "json",
            "method": "POST",
            "type": "http"
          },
          "output": {
            "example": {
              "mode": "trade-gate",
              "paid_sats": 20,
              "payment_hash": "x402:<sha256 hex>",
              "receipt": {
                "payload": {
                  "at": "<ISO 8601 time>",
                  "kid": "<signing key id>",
                  "mode": "trade-gate",
                  "payment_hash": "x402:<sha256 hex>",
                  "v": 1,
                  "verdict_sha256": "<sha256 hex of the verdict>"
                },
                "signature": "<base64url Ed25519 signature>"
              },
              "verdict": {
                "allowed_risk_amount": 241,
                "binding_limit": "max_risk",
                "decision": "wait",
                "max_size": 80333.3333,
                "reasons": [
                  "mandatory pause after a loss",
                  "the reason shows a wish to win back a loss",
                  "risk above your maximum per trade"
                ],
                "risk_amount": 450,
                "risk_pct": 1.8672,
                "rr": 2,
                "rule": "block if a hard rule fires (no stop, daily or total loss limit reached, quota, losing streak, excluded hour, day, instrument or direction, reward to risk too low); wait if a cooldown after a loss applies, revenge or fear of missing out >= 0.7, impulse >= 0.7 without a plan, or contrary news >= 0.75; reduce if the risk exceeds the allowed headroom or overconfidence >= 0.7; otherwise go. The maximum size respects the smallest remaining headroom.",
                "scores": {
                  "fomo": 0.2,
                  "impulse": 0.6,
                  "overconfident": 0.4,
                  "plan": 0.1,
                  "revenge": 0.93
                },
                "wait_minutes": 30
              }
            },
            "type": "json"
          }
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "additionalProperties": false,
              "properties": {
                "body": {
                  "properties": {
                    "account": {
                      "description": "{ equity, start_of_day_equity, day_pnl, initial_balance, peak_equity, open_risk, trades_today, consecutive_losses, minutes_since_last_loss, usual_risk_amount } (equity required, the rest optional)",
                      "type": "object"
                    },
                    "news": {
                      "description": "(optional) recent headlines or news about the instrument"
                    },
                    "now": {
                      "description": "(optional) ISO date and time of the order, for excluded hours and days"
                    },
                    "order": {
                      "description": "{ symbol, side (long|short), entry, stop, target (optional), size or risk_amount, point_value (optional, value of one point per unit) }",
                      "type": "object"
                    },
                    "rationale": {
                      "description": "(optional) why you take this trade, in one or two sentences",
                      "type": "string"
                    },
                    "rules": {
                      "description": "(optional) { max_risk_pct, daily_loss_pct, max_loss_pct, trailing, max_trades_per_day, cooldown_minutes_after_loss, max_consecutive_losses, min_rr, blocked_hours, blocked_weekdays, blocked_symbols, blocked_side, no_size_up_after_loss }: the trade-audit flight plan plugs in as is",
                      "type": "object"
                    }
                  },
                  "required": [
                    "order",
                    "account"
                  ],
                  "type": "object"
                },
                "bodyType": {
                  "enum": [
                    "json",
                    "form-data",
                    "text"
                  ],
                  "type": "string"
                },
                "method": {
                  "enum": [
                    "POST"
                  ],
                  "type": "string"
                },
                "type": {
                  "const": "http",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "method",
                "bodyType",
                "body"
              ],
              "type": "object"
            },
            "output": {
              "properties": {
                "example": {
                  "type": "object"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            }
          },
          "required": [
            "input"
          ],
          "type": "object"
        }
      }
    },
    "lastUpdated": "2026-10-20T13:35:11.199Z",
    "quality": {
      "l30DaysTotalCalls": 1,
      "l30DaysUniquePayers": 1,
      "lastCalledAt": "2026-10-20T13:35:10.637Z"
    },
    "resource": "https://verdict.kechlab.com/v1/trade-gate",
    "serviceName": "Verdict L402",
    "tags": [
      "trading",
      "risk",
      "ai-agents"
    ],
    "type": "http",
    "x402Version": 2
  },
  "source": "x402_bazaar",
  "summary": "Pre-trade risk check for traders and trading bots. Before an order is sent, checks it exactly against your own rules (risk per trade, daily loss, max loss, cooldown after a loss, trade quota, blocked hours, days and instruments, minimum reward to risk) and computes the largest size still allowed. If"
}

What the leaf hashes

{"body":"1ed132ee0716a9be19a77600c23bb1204d0583f4b7797a1f5ad4947f020c2551","id":123812,"kind":"listing","method":"baseline/1","observed_us":1793025623741575,"prev":null,"subject":"x402_bazaar:https://verdict.kechlab.com/v1/trade-gate","subject_kind":"source_record"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).

  1. 0x1c2a80daf9b1c0c132a0a8f39d0923cdb4776a49881a6b6399ea83ea6ebfad0a
  2. 0x2670cb75bdb50030c4e6977ab927dd92372666c2c7cb4a163f70e32a08fe9943
  3. 0xd90717a90fe1884ab82602ac4fa8bd71c18447439eba2c0950c7d6e0de8e9554
  4. 0x7c25104ed9e0e5103b416ea29d50cb81923b96ee86d5bc0ccf60e7472deea385
  5. 0xe7fbbf579d43c1bcb1d747d564a36788a44336612db9834e877c903a13a19474
  6. 0xf3cac442a48133e4bd35875586b8eeb3393b6dac72b2c50c3b0c1f97d2698b0b
  7. 0x084a4eff4ec37188adc5ca265332fe7c2f3e3c596f80113d4c4dc11d41a92a82
  8. 0xf7f5683378b762dc7268fa1c254f11bef45467d125729918444b18c6aa19a402
  9. 0x2d421bc9466d0d4b4327525e0ea891650f7ef1bb786aac0e9343baa14ec49fe2
  10. 0xff0b07a758b1dcaf0eebbded2fa92a070a531479a35a33200105774bbc143b25
  11. 0xa71cc4f892400c8dd1d9d33faa6b7466eba77734b3716286b78aa51d46ff4255
  12. 0x7ab2e7902b312a74cfdbc32b2906ced29b1fb9dc4280b5378e8eb181ad88686e
  13. 0xe00c7829e46541e49a308807d357db902e06eff941a833217a8f0dbccd3964f1
  14. 0x770e4376196188c7fc9ec40f8e218dc0d1cb92bba5fe0425a0edce27ca9a997f
  15. 0x60582ab4b41e72eb70eb0bce07fbf0fb4d2b62a8bad5be50f5d16d511adc746c
  16. 0xc6a4d7899a0f442958e26505011190b7cff2483611c1b94eba9043e0ba9ac36e
  17. 0x8c756542e482157df0c36464d75c937b845e4423dbbcfad08f0cf8d5a16b9a13
  18. 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON