SERVICE / DETAILother

AgentPay Pre-Trade Risk Check

POST agentpay.tools/tools/pre_trade_check/call

SONAR SCORE0.000
LIVE PRICE0.010000
BAZAAR LIVE
CDP INDEXEDno
DECISION EVIDENCE

Why an agent can trust this route.

No recent observations
HANDSHAKE SUCCESS0.0%402 challenge reachable
PAID DELIVERY0.0%settlement observed
P90 LATENCYrecent response window
PRICE DRIFTadvertised vs observed

Sonar evidence is advisory. Paid delivery is shown as verified only when paid probes are available; otherwise route estimates use the unpaid handshake as a clearly labeled proxy.

SONAR PROBE HISTORY / 30D

Observed outcomes

JSON ↗
No probe history yet.
LIVE ENDPOINT METADATA

Pre-trade risk check for AI agents trading crypto: live orderbook slippage at YOUR size, side-aware funding carry, open-interest crowding, and optional contract security — composed into a single ok/caution/avoid verdict with per-factor reasons and raw data embedded. Answers 'is this trade sane?' before trading, not after. Replaces four API integrations plus the judgment layer.

Resource: agentpay.tools/tools/pre_trade_check/call

Network: eip155:8453 · Asset: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 · Pay to: 0xE8B25A72dD6aeF69515452a61AD231C7DF2843b7

Payment methods: eip3009 · Last validation:

{
  "input": {
    "body": {
      "parameters": {
        "side": "long",
        "symbol": "ETH",
        "size_usd": 50000
      }
    },
    "type": "http",
    "method": "POST",
    "bodyType": "json"
  },
  "output": {
    "type": "json",
    "example": {
      "side": "long",
      "symbol": "ETH",
      "factors": {
        "carry": {
          "level": "ok",
          "reason": "carry unremarkable",
          "median_funding_pct": 0.01
        },
        "crowding": {
          "level": "ok",
          "reason": "positioning unremarkable",
          "long_short_ratio": 1.2
        },
        "security": {
          "level": "skipped",
          "reason": "no token_address provided"
        },
        "liquidity": {
          "level": "ok",
          "reason": "fills within 0.001% of best price",
          "slippage_pct": 0.001
        }
      },
      "verdict": "ok",
      "size_usd": 50000
    }
  },
  "paymentRequirements": [
    {
      "raw": {
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "extra": {
          "name": "USD Coin",
          "version": "2",
          "assetTransferMethod": "eip3009"
        },
        "payTo": "0xE8B25A72dD6aeF69515452a61AD231C7DF2843b7",
        "amount": "10000",
        "scheme": "exact",
        "network": "eip155:8453",
        "mimeType": "application/json",
        "resource": "https://agentpay.tools/tools/pre_trade_check/call",
        "description": "AgentPay tool call",
        "outputSchema": {
          "input": {
            "type": "object",
            "required": [
              "symbol"
            ],
            "properties": {
              "side": {
                "enum": [
                  "long",
                  "short"
                ],
                "type": "string",
                "default": "long",
                "description": "Trade direction (funding carry is side-aware)"
              },
              "symbol": {
                "type": "string",
                "description": "Asset to check, e.g. 'ETH', 'BTC', 'SOL'"
              },
              "size_usd": {
                "type": "number",
                "default": 10000,
                "description": "Intended position size in USD (drives the slippage check)"
              },
              "token_address": {
                "type": "string",
                "description": "Optional ERC-20 contract address for the GoPlus security scan. Auto-resolved for major tokens; required for a full verdict on tokens the resolver doesn't know (otherwise security reads 'unknown' and caps the verdict at caution)"
              }
            }
          },
          "errors": [
            {
              "body": {
                "error": "<summary>",
                "reason": "<machine-readable reason>"
              },
              "when": "No payment attached (this challenge), or the attached payment failed verification: wrong amount/recipient, memo mismatch, expired, or already used (replay)",
              "retry": "Re-request the challenge and pay again",
              "status": 402
            },
            {
              "body": {
                "detail": [
                  {
                    "loc": [
                      "body"
                    ],
                    "msg": "<what is wrong>",
                    "type": "<error type>"
                  }
                ]
              },
              "when": "Request body present but malformed (invalid JSON or wrong field types) WITH a payment header attached — checked BEFORE settlement, so the payment is never consumed. An unpaid malformed request gets the 402, not a 422",
              "retry": "Fix the body and retry with a fresh payment",
              "status": 422
            },
            {
              "body": {
                "detail": "Tool '<name>' not found"
              },
              "when": "Unknown tool name",
              "status": 404
            },
            {
              "body": {
                "error": "Rate limit exceeded"
              },
              "when": "Rate limited (per-IP and per-wallet limits)",
              "retry": "Back off and retry after a minute",
              "status": 429
            },
            {
              "body": {
                "tool": "<name>",
                "error": "Tool execution failed",
                "payment_status": "refund_pending"
              },
              "when": "Payment settled on-chain but tool execution failed — the payment is marked refund_pending automatically; you are not charged for a failed call",
              "status": 502
            },
            {
              "body": {
                "detail": "<what is unavailable>"
              },
              "when": "Tool temporarily unavailable, or the gateway cannot persist the challenge (fail-closed)",
              "retry": "Retry shortly",
              "status": 503
            }
          ],
          "output": {
            "side": "long",
            "symbol": "ETH",
            "factors": {
              "carry": {
                "level": "caution",
                "reason": "longs paying elevated funding",
                "annualized_pct": 67.9,
                "median_funding_pct": 0.062
              },
              "crowding": {
                "level": "ok",
                "reason": "positioning unremarkable",
                "long_short_ratio": 1.4,
                "oi_change_24h_pct": 3.2
              },
              "security": {
                "level": "skipped",
                "reason": "no token_address provided"
              },
              "liquidity": {
                "level": "ok",
                "reason": "fills within 0.011% of best ask",
                "bucket_usd": 50000,
                "slippage_pct": 0.011
              }
            },
            "verdict": "caution",
            "size_usd": 50000
          }
        },
        "maxTimeoutSeconds": 300
      },
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "payTo": "0xE8B25A72dD6aeF69515452a61AD231C7DF2843b7",
      "scheme": "exact",
      "network": "eip155:8453",
      "amountAtomic": "10000"
    }
  ]
}
METADATA PROVENANCE

Source catalog records are retained separately from live endpoint observations. Sonar score, uptime, and latency are advisory metrics. CDP indexing is not inferred from validation.