ToolAssay

Follow the money out of a wallet

Follow the money out of a wallet. Walks outflows hop by hop under a causal gate (each hop must post-date the last and carry continuous value) until it reaches an exchange deposit, a bridge, a swap venue, or runs out of trail. Returns every hop with its labelled destination, the token-leg outflows alongside the SOL leg, and whether the trail ended at an exchange or a privacy protocol.

Not tested: has real-world effectsour last check, 2026-09-24
0 of 0checks answered this week
n/amedian answer time
n/alisted price per call
n/aprice it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

GET https://api.solsentry.app/x402/v1/drain-trace/:solana_address

CategoryMarket data
Provider hostapi.solsentry.app
Networkssolana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
Payment schemesexact
Self-reported calls, 30 days4 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

We never call tools that send, buy, move money or file anything, not even without paying.

Example input (from the provider)

{
  "method": "GET",
  "pathParams": {
    "solana_address": "Solana wallet address (base58-encoded public key, 43\u201344 characters)"
  },
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "method": {
          "enum": [
            "GET",
            "HEAD",
            "DELETE"
          ],
          "type": "string"
        },
        "pathParams": {
          "properties": {
            "wallet": {
              "description": "Solana address (base58)",
              "maxLength": 44,
              "minLength": 32,
              "type": "string"
            }
          },
          "required": [
            "wallet"
          ],
          "type": "object"
        },
        "queryParams": {
          "properties": {},
          "type": "object"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "properties": {
            "cloak_proof": {
              "type": "object"
            },
            "endpoints": {
              "items": {
                "type": "object"
              },
              "type": "array"
            },
            "free_via_victimhood": {
              "type": "boolean"
            },
            "hop_count": {
              "type": "integer"
            },
            "hops": {
              "items": {
                "properties": {
                  "amount_sol": {
                    "type": "number"
                  },
                  "destination_category": {
                    "type": "string"
                  },
                  "destination_label": {
                    "type": "string"
                  },
                  "from": {
                    "type": "string"
                  },
                  "hop_number": {
                    "type": "integer"
                  },
                  "timestamp": {
                    "type": "number"
                  },
                  "to": {
                    "type": "string"
                  },
                  "tx_signature": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "latency_ms": {
              "type": "number"
            },
            "origin_risk": {
              "type": "object"
            },
            "origin_token": {
              "type": "object"
            },
            "provenance": {
              "description": "Freshness of this answer: when it was fetched/computed (UTC), whether it came from a cache layer, and the Solana slot it reflects when the underlying data source exposes one (null otherwise).",
              "properties": {
                "as_of_slot": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "cached": {
                  "type": "boolean"
                },
                "fetched_at": {
                  "description": "ISO-8601 UTC timestamp",
                  "type": "string"
                },
                "source": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": "object"
            },
            "reached_cex": {
              "type": "boolean"
            },
            "reached_mixer": {
              "type": "boolean"
            },
            "spl_outflows": {
              "description": "Token-leg outflows; a SOL-only reading of this trace is incomplete",
              "items": {
                "type": "object"
              },
              "type": "array"
            },
            "total_sol_drained": {
              "type": "number"
            },
            "trace_time_ms": {
              "type": "number"
            },
            "victim_verdict": {
              "type": "object"
            },
            "wallet": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}

This page as JSON