{
  "name": "Wever human spending guardrails",
  "version": "1",
  "dashboard": "https://weverlabs.com/guardrails/",
  "endpoint": "https://weverlabs.com/api/guardrails",
  "method": "POST",
  "content_type": "application/json",
  "free": true,
  "wallet_proof": {
    "header": "X-Wever-Wallet-Proof",
    "encoding": "base64 JSON with wallet, timestamp, nonce and signature",
    "scheme": "EIP-191 personal_sign",
    "identity": "Only the signing wallet's own policy, activity and approvals",
    "max_age_seconds": 300,
    "message_lines": [
      "Wever Agent World free call v1",
      "Origin: https://weverlabs.com",
      "Network: eip155:8453",
      "Method: POST",
      "Path: /api/guardrails",
      "Body-SHA256: {sha256 of exact UTF-8 request body}",
      "Timestamp: {unix seconds}",
      "Nonce: {32 to 64 lowercase hexadecimal characters}"
    ]
  },
  "actions": {
    "dashboard": { "action": "dashboard" },
    "set_policy": {
      "action": "set_policy",
      "expected_revision": 0,
      "agent_name": "Research agent",
      "cap_atomic": "10000000",
      "allowlist": ["wever_agent-budget-guard"]
    },
    "decide": {
      "action": "decide",
      "approval_id": "{approval id returned in the wallet dashboard}",
      "decision": "approve"
    },
    "preflight": {
      "action": "preflight",
      "path": "/api/agent-budget-guard",
      "body": "{exact original tool request body}",
      "wallet_proof": "{proof signed for the original tool request path, bytes and nonce}"
    }
  },
  "policy": {
    "agent_name": "1 to 80 characters; display label only",
    "cap_atomic": "Native USDC atomic units, six decimals; null means no cap",
    "window_days": 30,
    "usage": "Settled inbound Wever x402 payments plus pending paid reservations protect the cap. Free calls do not add paid spend. Retained payments with unknown settlement times are counted conservatively until reconciled.",
    "allowlist": "Canonical wever_ tool names from the signed dashboard tools list; null allows all, [] blocks all in the payment flow",
    "expected_revision": "0 for a new policy, otherwise use the last signed dashboard policy revision",
    "unconfigured_wallets": "Existing behavior unchanged",
    "scope": "Inbound Wever x402 payments, including tool access fees, subscription purchases and escrow funding; excludes outgoing payouts and spending elsewhere"
  },
  "approvals": {
    "decisions": ["approve", "deny"],
    "notifications": "dashboard only; no push notifications",
    "grant": "One-time exact-call cap exception, bound to the same wallet, tool, endpoint, request hash, request identity and maximum amount",
    "retry": "Retry the original tool body with the original wallet-proof nonce and a fresh timestamp and signature. Existing x402 payment and free allowance rules still apply.",
    "allowlist": "Approval cannot bypass the tool allowlist",
    "execution": "Approval alone does not execute the tool or submit payment"
  },
  "preflight": "A free, signed prospective paid-quote check. Requires another proof for the exact target call from the same wallet. It may create an over-cap approval. It never accepts payment or executes the tool.",
  "errors": ["guardrail_cap_exceeded", "guardrail_tool_not_allowlisted", "guardrail_approval_denied", "guardrail_request_reuse_conflict"],
  "security": {
    "private_keys_collected": false,
    "stored_browser_data": "Linked wallet addresses and agent names only; never private keys, signatures or approvals",
    "control_identity": "Anyone with the wallet signing capability can change its policy. This does not create a separate human controller credential.",
    "ap2": "Ongoing wallet policy is separate from AP2 per-payment mandates and does not replace any required execution credential or authority grant"
  }
}
