78trust / 100

Guard Payee

by PayeeGuard in Weather & location

x402 APIPassing, checked 3 h ago

Pre-flight a Base payment destination before you send. Verifies the EIP-55 checksum, measures distance from an address you expect — catching a mistyped digit and the shared prefix-and-suffix shape of a ground look-alike — flags the zero address, burn sinks and precompiles, refuses a token offered as its own payee, and reports whether the destination can receive the asset. Returns unknown rather than guessing when bytecode does not decide it. Not a judgement of the counterparty.

POST https://payee.schemasure.com/v1/guard/payee

Last 30 days

All checks passedSome failedAll failedNot checked
Uptime
100%
Response time
335 ms typical, 431 ms slowest 5%
Last check
3 h ago
Next check
any minute now

How to call it

# See the payment challenge (nothing is charged)
curl -i -X POST "https://payee.schemasure.com/v1/guard/payee" \
  -H "content-type: application/json" \
  -d '{"address":"0x7a3D40f7c6B18E5920Ab7C3e5d81f4A04E6F8a0D","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","expected_address":"0x7A3D9C1b5e2F4A8d6C0b3E5F7a9D1c2b4e6f8A0d"}'
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client().register(
  "eip155:8453",
  new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)),
);
const pay = wrapFetchWithPayment(fetch, client);

// Not sure it's safe to pay? Preflight it first for $0.005:
// GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Fpayee.schemasure.com%2Fv1%2Fguard%2Fpayee
const res = await pay("https://payee.schemasure.com/v1/guard/payee", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({"address":"0x7a3D40f7c6B18E5920Ab7C3e5d81f4A04E6F8a0D","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","expected_address":"0x7A3D9C1b5e2F4A8d6C0b3E5F7a9D1c2b4e6f8A0d"}),
});
console.log(await res.json());

Example input

{
  "address": "0x7a3D40f7c6B18E5920Ab7C3e5d81f4A04E6F8a0D",
  "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "expected_address": "0x7A3D9C1b5e2F4A8d6C0b3E5F7a9D1c2b4e6f8A0d"
}

Example output

{
  "confidence": 1,
  "data_versions": {
    "chain": "eip155:8453",
    "denylist": "2026-08-03.1",
    "policy": "2026-09-19"
  },
  "evidence": [
    {
      "code": "EXPECTED_ADDRESS_VANITY_COLLISION",
      "detail": "Shares the first 4 and last 8 hex digits with the address you expected while differing throughout the middle: the signature of a ground look-alike.",
      "severity": "critical"
    }
  ],
  "ok": true,
  "policy_version": "2026-09-19",
  "request_hash": "sha256:3f9a…c104",
  "result": {
    "address": {
      "canonical": "0x7a3D40f7c6B18E5920Ab7C3e5d81f4A04E6F8a0D",
      "input": "0x7a3D40f7c6B18E5920Ab7C3e5d81f4A04E6F8a0D"
    },
    "asset": {
      "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "exists": null,
      "kind": "erc20",
      "symbol": null
    },
    "can_receive": {
      "basis": "erc20-balance-mapping",
      "value": true
    },
    "checksum": {
      "form": "mixed",
      "valid": true
    },
    "denylist_hits": [],
    "destination": {
      "account_kind": "unknown",
      "is_contract": null
    },
    "expected_comparison": {
      "edit_distance": 25,
      "hamming_distance": 26,
      "match": "vanity_collision",
      "shared_prefix": 4,
      "shared_suffix": 8
    },
    "self_send": {
      "matches": null,
      "present": false
    },
    "sinks": {
      "is_burn_address": false,
      "is_precompile": false,
      "is_zero_address": false
    },
    "unresolved": [
      "whether the asset is a deployed contract"
    ]
  },
  "risk_codes": [
    "EXPECTED_ADDRESS_VANITY_COLLISION",
    "ASSET_EXISTENCE_UNKNOWN"
  ],
  "verdict": "block",
  "warnings": []
}

Security scan

  • No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTimePrice
3 h agoPassed402312 ms$0.02
6 h agoPassed402288 ms$0.02
10 h agoPassed402334 ms$0.02
13 h agoPassed402321 ms$0.02
17 h agoPassed402364 ms$0.02
21 h agoPassed402376 ms$0.02
24 h agoPassed402422 ms$0.02
29 h agoPassed402335 ms$0.02
32 h agoPassed402569 ms$0.02
35 h agoPassed402294 ms$0.02
40 h agoPassed402431 ms$0.02