mcpField
T
tres-settings-management

tres-settings-management

github.com/anthropicsその他4.8k49 回インストール2 週間前に更新
リポジトリ

tres-settings-management について

TRES Financeの組織単位およびブロックチェーン・取引所単位の設定を管理するスキルです。財務データ設定の担当者向けで、変更前の確認と明示的な承認を求めます。

主な機能

  1. 01組織・プラットフォーム設定の確認
  2. 02introspectによる設定項目の探索
  3. 03組織・プラットフォーム設定の変更
  4. 04プラットフォーム収集の有効化・無効化
  5. 05ウォレットアドレスから内部アカウントIDを特定

活用シーン

  1. 01原価計算方式の確認
  2. 02ウォレットの同期開始日の変更
  3. 03収集が無効なプラットフォームの確認
  4. 04ウォレット資産の残高差分追跡の有効化

MCP 対応

MCPツールでスキーマを introspect し、クエリや設定変更を実行します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/anthropics/claude-plugins-community --skill tres-settings-management

インストール後、Claude Code で/tres-settings-managementを入力して読み込まれたか確認します。

詳細

TRES MCP - 組織とプラットフォームの設定

このスキルの仕組み

このスキルを使うと、ユーザーは TRES Finance の組織と、個々のブロックチェーン/取引所プラットフォームの設定を表示・変更できます。設定には次の 2 つのレベルがあります。

  • 組織の設定 — 組織全体に適用されます。取得原価の計算方法、有効にする機能、ERP の動作、価格ソース、コミットのスケジュールなどが含まれます。
  • プラットフォームの設定 — プラットフォーム単位(例:Ethereum、Arbitrum)で適用され、必要に応じてウォレット単位にも適用されます。コミット戦略、同期日付の範囲、残高差分、アセットのフィルタリングなどが含まれます。

基本ルール

1. まず組織を必ず確認する

何かを行う前に、ユーザーがどの組織に接続しているかを確認します。

query { admin { orgName } }

ユーザーに「{orgName} に接続しています。」と伝えます。

2. 書き込みの前に読み取る

設定を変更する前に、変更対象の設定の現在値を必ず取得します。変更前と変更後を明確に比較して表示します。

3. 変更には明示的な承認が必要

変更を実行する前に、必ず次の手順に従います。

  1. 設定、現在の値、新しい値を含む概要表を明確に表示する
  2. 「{orgName} にこれらの変更を適用しますか?」と明示的に尋ねる
  3. ユーザーの確認後にのみ続行する
  4. 実行後、変更レスポンスで確認された結果を表示する
4. リスクの高い変更に警告する

次の設定は危険を伴う可能性があるものとして警告を追加します。

  • costBasisStrategy — 期間の途中で変更すると、組織全体で再計算が発生する可能性があります
  • disableAutoCommit — すべての自動データ処理を停止します
  • skipCostBasis — 取得原価を完全に無効にします
  • commitStrategy: SKIP_ALL — プラットフォームのデータパイプラインを完全に無効にします
  • enableMultiEntity — 構造上の変更で、元に戻すのが困難です
  • allowShort — 取得原価での空売りポジションを有効にします
5. フィールドの確認にはスキーマのイントロスペクションを使う

ハードコードされたフィールド一覧に依存しないでください。MCP の introspect ツールを使って、利用可能なフィールドとその型を動的に確認します。

  • introspect("OrganizationSettingsObjectType") — 読み取り可能な組織設定すべて
  • introspect("setOrganizationSettings") — 説明付きの書き込み可能な組織設定すべて
  • introspect("PlatformSettingsObjectType") — 読み取り可能なプラットフォーム設定すべて
  • introspect("setPlatformSettings") — 説明付きの書き込み可能なプラットフォーム設定すべて

ユーザーから「何を設定できますか?」と尋ねられた場合や、フィールド名または列挙値を確認する必要がある場合は、まずイントロスペクションを行います。


設定カテゴリ(ユーザーの質問が曖昧な場合に使用)

ユーザーが具体的な内容を指定せずに「設定を見せて」と言った場合は、以下のカテゴリを平易な説明とともに提示します。

カテゴリ制御する内容
取得原価利益/損失の計算方法(FIFO、LIFO など)、ウォレット単位か組織全体か、減損
コミットパイプライン自動データ処理のスケジュール、優先度、停止検出、同期時間
内部振替組織内のウォレット間の振替を検出して照合する方法
価格設定アセット価格の取得元、ステーブルコインのペッグ、スワップの調整
ERP 連携会計システム(NetSuite、Xero、QuickBooks)へのデータ同期方法
ダッシュボードと機能有効にする UI 機能(ピボットテーブル、権利確定、支払い、マルチエンティティ)
ステーキングステーキング報酬の追跡とポジション管理
照合組織間およびサブシステム間の照合の動作
レポートスケジュールされたレポートの実行時刻、形式、内容
プラットフォームコレクション有効にするブロックチェーン/取引所と、それらの同期範囲およびフィルター

組織設定の読み取り

クエリの構造
query {
  admin {
    orgName
    organizationSettings {
      # include only the fields relevant to the user's question
    }
  }
}
  • 組織は認証トークンから特定されるため、組織 ID は不要です
  • すべてのフィールドを一度にリクエストせず、質問に関連するカテゴリを選びます
  • 必要に応じて introspect("OrganizationSettingsObjectType") を使い、利用可能なフィールドを確認します
ネストされたフィールド(クエリ時にサブフィールドを展開する必要があります)

これらのフィールドはスカラーではなく、オブジェクト/リストを返します。必ずサブフィールドを含めてください。

フィールドサブフィールド内容
peggedStableCoinsToFiatassetName, currency法定通貨と同等として扱われるステーブルコイン
pricingApiSourcePerAssetassetName, pricingApiSource資産ごとのカスタム価格ソース
netsuiteCurrencySymbolToInternalIdcurrency, internalIdNetSuite の通貨マッピング
simpleMatchingStrategiesbeforeRange, afterRange照合の時間範囲
proofOfFundsorganizationName資金証明のクライアント設定
その他の管理者フィールド

admin クエリでは、以下も取得できます。

  • orgName — 組織の表示名
  • disabledPlatforms — 収集が完全に無効になっているプラットフォームの簡易リスト
  • auth0Connections — 利用可能な SSO ログイン方法

組織設定の書き込み

ミューテーションの構造

パッチセマンティクスを使用します。変更するフィールドのみを指定してください。それ以外はすべてそのまま維持されます。

mutation {
  setOrganizationSettings(
    costBasisStrategy: FIFO
  ) {
    organizationSettings {
      costBasisStrategy
    }
  }
}

introspect("setOrganizationSettings") を使用して、変更可能なすべてのフィールド、その型、説明を確認してください。

組織設定を変更するワークフロー
  1. 変更する設定の現在の値を読み取ります
  2. 変更前と変更後を比較する表をユーザーに提示します
  3. リスクの高い設定が含まれる場合は警告します
  4. 承認を求めます
  5. ミューテーションを実行します
  6. 返された値を表示して確認します

プラットフォーム設定の読み取り

クエリ構造(トップレベルクエリ)

明示的な上書きが設定されているプラットフォーム/アカウントのみを返します。すべての設定でデフォルトを使用しているプラットフォームは表示されません。

query {
  platformSettings(platform: ETHEREUM) {
    results {
      settingsId
      platform
      internalAccountId
      platformSettings {
        commitStrategy
        calculateBalanceDiff
        minLastSyncedAt
        maxToDate
        # add fields as needed — use introspect("PlatformSettingsObjectType") for full list
      }
    }
  }
}
絞り込みオプション

すべての引数は省略可能です。必要に応じて組み合わせてください。

引数型用途
platformPlatform特定のチェーン/取引所の設定を表示します
internalAccountIdInt特定のウォレットの設定を表示します
settingsIdStringストレージキーに完全一致する設定を表示します
settingsId_IcontainsString部分一致で検索します(例:「ethereum」で「ethereum_714128」に一致します)
  • 引数なし → 保存されているすべてのプラットフォーム設定
  • platform のみ → プラットフォーム全体の設定と、そのプラットフォームのすべてのウォレット別上書き設定
  • platform + internalAccountId → ウォレット別上書き設定のみ
  • internalAccountId のみ → そのウォレットのすべてのプラットフォーム
簡易確認:無効になっているプラットフォームは?
query { admin { disabledPlatforms } }

プラットフォーム設定の書き込み

ミューテーションの構造

パッチセマンティクスを使用します。指定したフィールドのみがマージされます。既存の値は保持されます。

mutation {
  setPlatformSettings(
    platform: ARBITRUM
    internalAccountId: 714128    # omit for platform-wide
    commitStrategy: FULL
    minLastSyncedAt: "2025-01-01T00:00:00+00:00"
  ) {
    settingsId
    platformSettings {
      commitStrategy
      minLastSyncedAt
    }
  }
}

introspect("setPlatformSettings") を使用して、利用可能なすべての引数を確認してください。

主な引数
  • platform(必須)— 対象のブロックチェーンまたは取引所
  • internalAccountId(省略可能)— 特定のウォレットに適用します。プラットフォーム全体に適用する場合は省略します
  • DateTime 値は、タイムゾーン付きの ISO 8601 形式にする必要があります:"2025-01-01T00:00:00+00:00"
残高のロールアップ(残高差分)

特定の資産について、残高差分に基づくアクティビティ追跡を有効にするには、次のようにします。

mutation {
  setPlatformSettings(
    platform: ARBITRUM
    internalAccountId: 714128
    balanceRollupSettings: {
      assetIdentifiers: ["native"]
      interval: DAILY
    }
  ) {
    settingsId
    platformSettings {
      balanceRollupSettings { assetIdentifiers interval }
    }
  }
}

assetIdentifiers には、チェーンのネイティブ資産を示す "native"、またはトークンのコントラクトアドレスを指定できます。


プラットフォームの有効化/無効化

単純な有効化/無効化には、setPlatformSettings ではなく setPlatformCollectionStatus を使用してください。

mutation {
  setPlatformCollectionStatus(
    platformCollectionStatuses: [
      { platform: ARBITRUM, enabled: true }
      { platform: POLYGON, enabled: false }
    ]
  ) {
    success
  }
}
  • enabled: true → プラットフォームはコミット時に収集されます(FULL)
  • enabled: false → プラットフォームは完全にスキップされます(SKIP_ALL)

一括操作に対応しており、1 回の呼び出しで複数のプラットフォームを指定できます。


ウォレットアドレスを内部アカウント ID に解決する

ユーザーからウォレットアドレスが提示された場合は、内部アカウント ID を検索します。

query {
  internalAccount(identifier: "0x1887fa9edadeab7562b01cc3f4fa246ace2c3cdd") {
    results {
      id
      name
      identifier
      parentPlatform
    }
  }
}

返された id を、プラットフォーム設定のミューテーションで internalAccountId として使用してください。

注:parentPlatform は最上位のチェーンファミリーを表します(例:ethereum には Ethereum、Arbitrum、Polygon などが含まれます)。ethereum の parentPlatform 上にある単一のウォレットアドレスでも、各 L2 にプラットフォーム固有の設定を適用できます。


一般的なワークフロー

「原価基準法を LIFO に変更する」
  1. 現在の設定を照会します: admin { organizationSettings { costBasisStrategy } }
  2. 表示します: 「現在: FIFO → 新規: LIFO」
  3. 警告します: 「原価基準法を変更すると再計算が実行されます。これはすべての過去の損益計算に影響します。」
  4. 承認を求めます
  5. 実行します: setOrganizationSettings(costBasisStrategy: LIFO)
「Arbitrum を有効にする」
  1. 無効化されているものを照会します: admin { disabledPlatforms } — リストに ARBITRUM が含まれていることを確認します
  2. 表示します: 「ARBITRUM: 無効 → 有効」
  3. 承認を求めます
  4. 実行します: setPlatformCollectionStatus(platformCollectionStatuses: [{platform: ARBITRUM, enabled: true}])
「Polygon 上のウォレット X の同期開始日を設定する」
  1. ウォレットを解決します: internalAccount(identifier: "0x...") → id を取得します
  2. 現在の値を読み取ります: platformSettings(platform: POLYGON, internalAccountId: {id}) → minLastSyncedAt を取得します
  3. 表示します: 「ウォレット {name}(POLYGON 上): minLastSyncedAt: 1970-01-01 → 2025-01-01」
  4. 承認を求めます
  5. 実行します: setPlatformSettings(platform: POLYGON, internalAccountId: {id}, minLastSyncedAt: "2025-01-01T00:00:00+00:00")
「特定のウォレットのネイティブアセットに残高差分を追加する」
  1. ウォレットを解決します: internalAccount(identifier: "0x...") → id を取得します
  2. 現在の値を読み取ります: platformSettings(platform: ETHEREUM, internalAccountId: {id})
  3. 表示します: 「ウォレット {name} / ETHEREUM のネイティブアセット(DAILY 間隔)に残高ロールアップを追加します」
  4. 承認を求めます
  5. 実行します: setPlatformSettings(platform: ETHEREUM, internalAccountId: {id}, balanceRollupSettings: {assetIdentifiers: ["native"], interval: DAILY})
「どのプラットフォームが無効になっているか表示して」
  1. 実行します: admin { disabledPlatforms }
  2. 結果が多い場合は、チェーンファミリーごとにグループ化した見やすいリストとして提示します
「設定されている価格ソースは何ですか?」
  1. 実行します: admin { organizationSettings { pricingApiSource peggedStableCoinsToFiat { assetName currency } pricingApiSourcePerAsset { assetName pricingApiSource } } }
  2. 提示します: デフォルトソース + アセットごとの上書き設定 + ペッグされたステーブルコイン

エラー処理

エラー意味解決方法
403 / 権限が拒否されましたユーザーに admin:* 権限がありません組織の管理者に連絡してアクセス権を付与してもらいます
platformSettings の結果が空カスタム上書き設定がありません — プラットフォームはデフォルトを使用しますこれは正常です。デフォルトが適用されることを説明します
「does not exist for organization」内部アカウント ID がこの組織内で見つかりませんウォレットアドレスを確認して再解決します
無効な enum 値設定に対する値が正しくありませんenum 型に対して introspect を使用して有効なオプションを表示します
DateTime 解析エラー形式が正しくありませんタイムゾーン付きの ISO 8601 である必要があります: "2025-01-01T00:00:00+00:00"

コメント