memodu

MEMODU ยท FOR DEVELOPERS AND AI AGENTS

API

A small JSON API over the same engine the site uses. Built for developers and AI agents. No key, no sign up.

Basics

Endpoints

EndpointParametersReturns
/api/tracetarget: address or transaction hash. hops: 1 to 6, default 4. branch: 1 to 8, default 4.Flow graph, findings and a plain language summary.
/api/pathfrom, to: two addresses.Chains of transfers that link them, strength of each link, type of both endpoints.
/api/checkaddressFrozen by Tether or not, on the OFAC list or not, flagged counterparties.
/api/profileaddressType of address by behaviour, totals, top counterparties, flags.
/api/askaddress, q: question in English or Russian.Answer text and the profile it is based on.

Trace

curl "https://memodu.com/api/trace?target=TXyz...&hops=4"
{
  "type": "trace",
  "start": "TXyz...",
  "traced_usdt": 1000.0,
  "nodes": [
    {"address": "TXyz...", "hop": 0, "kind": "wallet", "tracked": 1000.0, "held": 10.0, "flags": []},
    {"address": "TAbc...", "hop": 1, "kind": "deposit", "label": "Binance deposit (likely)",
     "deposit_of": "Binance", "tracked": 600.0, "end": "service", "flags": []}
  ],
  "edges": [
    {"src": "TXyz...", "dst": "TAbc...", "amount": 600.0, "count": 1, "hop": 1,
     "first": "2026-11-02 10:10 UTC", "delay_hours": 0.17, "sample_tx": "9f2c..."}
  ],
  "findings": {
    "share_to_services": 0.99, "share_held": 0.01,
    "services": [{"address": "TAbc...", "name": "Binance deposit (likely)", "usdt": 600.0, "share": 0.6, "step": 1}],
    "pass_through": [], "held": [], "flagged": []
  },
  "summary": ["TXyz... sent 1,000.00 USDT in the transfers we read. ..."],
  "checks": {"tether_freeze_list": {"status": "ready", "addresses": 8200}, "ofac_sdn_list": {"addresses": 351}}
}
FieldMeaning
nodes[].kindwallet, service (named), hub (busy service by behaviour), collector (collection wallet), deposit (likely exchange deposit address), distributor (payout wallet), others (grouped small recipients), empty.
nodes[].endWhy the trail stops here: service, held (funds have not moved), depth (step limit reached), not_followed (small flows). null when the trail continues.
nodes[].tracked, heldUSDT attributed to this address, and the part that has not moved on.
nodes[].flagsList matches. Codes: tether_frozen, ofac_sanctioned.
edges[]Followed flows: amount, number of transfers, first time, delay after the money arrived, and one example transaction.
findingsTotals by outcome: services reached, funds held, pass-through wallets, flagged addresses, and shares of the traced amount.
summaryThe same result as sentences, ready to show to a person.

Check

curl "https://memodu.com/api/check?address=TXyz..."
{
  "type": "check",
  "address": "TXyz...",
  "frozen_by_tether": false,
  "ofac_sanctioned": false,
  "flags": [],
  "flagged_counterparties": [
    {"address": "TDef...", "direction": "sent to", "amount": 300.0, "count": 1,
     "flags": ["Frozen by Tether"], "sample_tx": "41ab..."}
  ],
  "counterparties_checked": 37,
  "kind": "wallet",
  "summary": ["This address is not frozen by Tether and is not on the OFAC sanctions list.", "..."]
}

The address itself is checked directly against the USDT contract at request time. Counterparties are compared with the freeze list held in memory, which is refreshed every few hours. The checks object in every response says how fresh the lists are.

Ask

curl "https://memodu.com/api/ask?address=TXyz...&q=is%20it%20frozen%20and%20where%20did%20it%20send%20money"

Topics it understands: balance, type of address, where it sent money, where money came from, when it was active, freeze and sanctions status. A question in Russian gets an answer in Russian.

Errors

StatusMeaning
400The address or hash is not valid. The error field says what is expected.
429Too many requests. Wait retry_after_seconds.
502Blockchain data could not be read right now. Try again in a minute.

For AI agents

Responses are designed to be passed to a language model as they are: every result carries a summary written in plain sentences next to the structured data. Pay per request access over the x402 protocol is planned for heavier use. The free tier stays.

What the data can and cannot say

More on the method: How it works. Rules of use: Terms.