tres-export-3rd-party-contacts について
未識別の外部アドレスを取得し、連絡先情報を付与するための XLSX ブックを作成する TRES Finance スキルです。インポート用の連絡先シートとアドレスの活動詳細を分けてまとめます。
主な機能
- 01未識別アドレスの取得
- 02アドレス表記の重複排除
- 03形式に基づくネットワーク推定
- 04取引・法定通貨活動の追加
- 052 シートの XLSX 作成
活用シーン
- 01未識別アドレスから連絡先リストを作成
- 02法定通貨ベースの活動で取引相手を優先
- 03TRES への連絡先インポートを準備
MCP 対応
TRES Finance MCP の `get_viewer` と `execute` を使って認証し、`accountTxsSummary` を検索して未識別アドレスを取得します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ anthropics/ claude-plugins-community --skill tres-export-3rd-party-contactsインストール後、Claude Code で/tres-export-3rd-party-contactsを入力して読み込まれたか確認します。
同梱ファイルevals/evals.json
詳細
TRES Finance — 3rd-Party アドレスを連絡先ワークブックとしてエクスポート
目標
accountTxsSummary クエリ(TRES UI の「Unidentified Addresses」タブと同じデータソース)を使用して、ユーザーの TRES 環境から未識別の外部アドレスをすべて取得し、重複を排除してアクティビティデータを付加し、2 つのタブを含む XLSX ワークブックを作成します。
- 連絡先 — TRES の連絡先テンプレートに一致する、インポート可能なシートです。ユーザーはここに名前とタグを入力し、このシートを TRES にインポートします。
- アドレスの詳細 — ユーザーが各アドレスの所有者を特定するための補足データ(ネットワーク、トランザクション数、法定通貨建ての取引量)です。
このワークフローを使うと、ユーザーはアドレス帳をすばやく作成できます。Claude が未識別アドレスを抽出、重複排除、補足し、ユーザーはラベルを付けるだけです。
MCP サーバー
すべての GraphQL 呼び出しには user-tres-finance MCP サーバーの execute ツールを使用します。
ワークフロー
ステップ 1 — 認証
引数なしで get_viewer を呼び出し、セッションが有効であることを確認して、組織名を記録します。
ステップ 2 — 未識別アドレスを取得
identificationState: "UNIDENTIFIED" を指定して accountTxsSummary クエリを使用します。これは、TRES UI の Accounts 内にある「Unidentified Addresses」タブと同じクエリです。組織が所有するウォレットはすでに除外されており、まだ名前が付けられていない外部取引相手のアドレスのみが返されます。
query UnidentifiedAddresses($limit: Int, $offset: Int, $identificationState: String, $excludeInternalAccounts: Boolean, $fiatCurrency: String) {
accountTxsSummary(
limit: $limit
offset: $offset
identificationState: $identificationState
excludeInternalAccounts: $excludeInternalAccounts
fiatCurrency: $fiatCurrency
) {
totalCount
results {
accountIdentifier
displayName
inflowTxCount
outflowTxCount
inflowFiatValue
outflowFiatValue
}
}
}
変数:
{
"limit": 500,
"offset": 0,
"identificationState": "UNIDENTIFIED",
"excludeInternalAccounts": true,
"fiatCurrency": "usd"
}
すべての結果をページネーションで取得します(totalCount からすべてのエントリーを取得するまで、毎回 offset を 500 ずつ増やします)。
ステップ 3 — 重複排除とネットワークの判定
accountTxsSummary クエリは、同じアドレスを複数回返す場合があります(例:大文字・小文字が異なる同一の EVM アドレスや、送信者と受信者のコンテキストごとに分かれた行)。小文字に変換した accountIdentifier を使って重複を排除します。
accountIdentifier.lower()をキーにした辞書を作成します- 各アドレスについて、最初に出現したときの元の大文字・小文字を保持し、流入と流出のトランザクション数および法定通貨建ての金額を合計します
accountIdentifierが空または null のアドレスはスキップします
重複を排除したアドレスを、法定通貨建ての総取引量(流入+流出)の降順で並べ替えます。これにより、アクティビティが最も多い取引相手が先頭に表示されます。通常、ユーザーが最初にラベルを付けたいのはこうしたアドレスです。
ネットワークの判定: API はネットワークフィールドを返さないため、アドレス形式からネットワークを推定します。次のルールを使用します。
| アドレスのパターン | ネットワーク |
|---|---|
0x で始まる(42 文字、16 進数) | EVM |
KT1 で始まる | Tezos(コントラクト) |
tz1、tz2、tz3 で始まる | Tezos |
T で始まる(34 文字、base58) | Tron |
bc1、1、3 で始まる(25~62 文字) | Bitcoin |
r で始まる(25~35 文字) | XRP Ledger |
cosmos1 で始まる | Cosmos |
osmo1 で始まる | Osmosis |
terra1 で始まる | Terra |
addr1 または stake1 で始まる | Cardano |
bnb1 で始まる | BNB Beacon Chain |
G で始まる(56 文字) | Stellar |
D、A、L、M、ltc1 のいずれかで始まる(26~35 文字) | Litecoin/Dogecoin(推定) |
| 上記のいずれにも該当しない | 不明 |
これは可能な範囲でのヒューリスティックです。特に EVM アドレスは、Ethereum、Polygon、Arbitrum、Base、Avalanche、BSC、その他の EVM 互換チェーンのいずれに属する可能性もあります。アドレスだけではチェーンを区別できないため、ラベルには意図的に広い「EVM」を使用します。
ステップ 4 — XLSX ワークブックを作成
openpyxl==3.1.5 を使って Python で作成します。インストールされていない場合は、処理を停止して次のメッセージを表示します。
「openpyxl is not installed. Please run:
python3 -m venv .venv && .venv/bin/pip install openpyxl==3.1.5」
タブ 1:"Contacts"(インポート対応)
このシートは、TRES の連絡先インポートテンプレートと完全に一致します。
| Contact Name | Contact Address | Contact Tag |
|---|---|---|
| (空欄) | 0xABC... | (空欄) |
- Contact Name:空欄のままにします(ユーザーが入力します)
- Contact Address:アドレス識別子(元の大文字・小文字表記)
- Contact Tag:空欄のままにします(ユーザーが入力します)
- 法定通貨建ての合計取引量が多い順に並べ替えます(Address details と同じ順序)
タブ 2:"Address details"(情報補完)
| Contact Address | Network | Inflow Txs | Outflow Txs | Inflow USD | Outflow USD | Total USD |
|---|---|---|---|---|---|---|
| 0xABC... | EVM | 142 | 38 | 1,240,500 | 890,200 | 2,130,700 |
| KT1Xyz... | Tezos (contract) | 6 | 0 | 40,144,631 | 0 | 40,144,631 |
| TBmxn... | Tron | 23 | 5 | 340,100 | 52,000 | 392,100 |
- Contacts タブと同じアドレス順(Total USD の降順)
Network:アドレス形式から推定します(ステップ 3 を参照)Inflow Txs/Outflow Txs:accountTxsSummaryの結果から取得しますInflow USD/Outflow USD:accountTxsSummaryの法定通貨建ての値から取得しますTotal USD:流入と流出の法定通貨建ての値の合計です
書式設定のガイドライン
- すべてのタブでヘッダー行を太字にします
- 読みやすくなるように列幅を自動調整します
- USD の列は数値として書式設定します(セルに $ を付けず、Excel の数値書式を使用します)
- ファイルを開いたときにユーザーが作業するシートである "Contacts" タブが最初のアクティブなシートになるようにします
ステップ 5 — 保存して提示する
XLSX を出力ディレクトリに保存します。tres_3rd_party_contacts_<org_name>_<date>.xlsx のような、内容がわかるファイル名を使用します(スペースや特殊文字はアンダースコアに置き換えます)。
簡潔な概要を添えてファイルをユーザーに提示します。
- 識別されていない一意のアドレスがいくつ見つかったか
- これらのアドレスに関係する取引の合計数
- XLSX ファイルへのリンク
次に、各タブの用途を説明します。
このワークブックには 2 つのタブがあります。
Contacts — これはインポート対応のシートです。認識できるアドレスごとに Contact Name を入力し、必要に応じて Contact Tag(例:
Exchange、Vendor、Treasury)を追加してください。入力が終わったら、contacts import skill を使ってこのシートを TRES にアップロードしてください。Address details — 検出されたネットワークと、各アドレスのアクティビティ統計(流入/流出の取引件数と USD 建ての取引量)を示す参照用タブです。どのアドレスにラベルを付けるか優先順位を決める際に使用してください。取引量の多い相手先が上位に表示されます。ネットワーク列は、アドレスが属するチェーンを絞り込むのに役立ちます。
エッジケース
- 識別されていないアドレスが見つからない場合:結果が空の場合は、その旨をユーザーに伝えます。相手先アドレスがすでにすべて連絡先リストに登録されている可能性があります。
- 大文字・小文字が混在するアドレス:EVM アドレスは、チェックサムによって大文字・小文字の異なる形式で表示されることがあります。重複排除では必ず小文字に変換して比較し、出力では元の大文字・小文字表記を維持します。
- ゼロアドレス/バーンアドレス:
0x0000000000000000000000000000000000000000が表示された場合は出力に含めます。ユーザーは「Burn Address」などのラベルを付けたい場合があります。 - 不明なネットワーク:アドレスが既知のパターンに一致しない場合は、Network を "Unknown" に設定します。アドレスを除外しないでください。有効な相手先であることに変わりはありません。