mcpField
T
tres-export-3rd-party-contacts

tres-export-3rd-party-contacts

github.com/anthropicsデータ・データベース4.8k49 回インストール2 週間前に更新
リポジトリ

tres-export-3rd-party-contacts について

未識別の外部アドレスを取得し、連絡先情報を付与するための XLSX ブックを作成する TRES Finance スキルです。インポート用の連絡先シートとアドレスの活動詳細を分けてまとめます。

主な機能

  1. 01未識別アドレスの取得
  2. 02アドレス表記の重複排除
  3. 03形式に基づくネットワーク推定
  4. 04取引・法定通貨活動の追加
  5. 052 シートの XLSX 作成

活用シーン

  1. 01未識別アドレスから連絡先リストを作成
  2. 02法定通貨ベースの活動で取引相手を優先
  3. 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 ワークブックを作成します。

  1. 連絡先 — TRES の連絡先テンプレートに一致する、インポート可能なシートです。ユーザーはここに名前とタグを入力し、このシートを TRES にインポートします。
  2. アドレスの詳細 — ユーザーが各アドレスの所有者を特定するための補足データ(ネットワーク、トランザクション数、法定通貨建ての取引量)です。

このワークフローを使うと、ユーザーはアドレス帳をすばやく作成できます。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 NameContact AddressContact Tag
(空欄)0xABC...(空欄)
  • Contact Name:空欄のままにします(ユーザーが入力します)
  • Contact Address:アドレス識別子(元の大文字・小文字表記)
  • Contact Tag:空欄のままにします(ユーザーが入力します)
  • 法定通貨建ての合計取引量が多い順に並べ替えます(Address details と同じ順序)
タブ 2:"Address details"(情報補完)
Contact AddressNetworkInflow TxsOutflow TxsInflow USDOutflow USDTotal USD
0xABC...EVM142381,240,500890,2002,130,700
KT1Xyz...Tezos (contract)6040,144,631040,144,631
TBmxn...Tron235340,10052,000392,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 つのタブがあります。

  1. Contacts — これはインポート対応のシートです。認識できるアドレスごとに Contact Name を入力し、必要に応じて Contact Tag(例:Exchange、Vendor、Treasury)を追加してください。入力が終わったら、contacts import skill を使ってこのシートを TRES にアップロードしてください。

  2. Address details — 検出されたネットワークと、各アドレスのアクティビティ統計(流入/流出の取引件数と USD 建ての取引量)を示す参照用タブです。どのアドレスにラベルを付けるか優先順位を決める際に使用してください。取引量の多い相手先が上位に表示されます。ネットワーク列は、アドレスが属するチェーンを絞り込むのに役立ちます。

エッジケース

  • 識別されていないアドレスが見つからない場合:結果が空の場合は、その旨をユーザーに伝えます。相手先アドレスがすでにすべて連絡先リストに登録されている可能性があります。
  • 大文字・小文字が混在するアドレス:EVM アドレスは、チェックサムによって大文字・小文字の異なる形式で表示されることがあります。重複排除では必ず小文字に変換して比較し、出力では元の大文字・小文字表記を維持します。
  • ゼロアドレス/バーンアドレス:0x0000000000000000000000000000000000000000 が表示された場合は出力に含めます。ユーザーは「Burn Address」などのラベルを付けたい場合があります。
  • 不明なネットワーク:アドレスが既知のパターンに一致しない場合は、Network を "Unknown" に設定します。アドレスを除外しないでください。有効な相手先であることに変わりはありません。

コメント