tres-settings-management について
TRES Financeの組織単位およびブロックチェーン・取引所単位の設定を管理するスキルです。財務データ設定の担当者向けで、変更前の確認と明示的な承認を求めます。
主な機能
- 01組織・プラットフォーム設定の確認
- 02introspectによる設定項目の探索
- 03組織・プラットフォーム設定の変更
- 04プラットフォーム収集の有効化・無効化
- 05ウォレットアドレスから内部アカウントIDを特定
活用シーン
- 01原価計算方式の確認
- 02ウォレットの同期開始日の変更
- 03収集が無効なプラットフォームの確認
- 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. 変更には明示的な承認が必要
変更を実行する前に、必ず次の手順に従います。
- 設定、現在の値、新しい値を含む概要表を明確に表示する
- 「{orgName} にこれらの変更を適用しますか?」と明示的に尋ねる
- ユーザーの確認後にのみ続行する
- 実行後、変更レスポンスで確認された結果を表示する
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")を使い、利用可能なフィールドを確認します
ネストされたフィールド(クエリ時にサブフィールドを展開する必要があります)
これらのフィールドはスカラーではなく、オブジェクト/リストを返します。必ずサブフィールドを含めてください。
| フィールド | サブフィールド | 内容 |
|---|---|---|
peggedStableCoinsToFiat | assetName, currency | 法定通貨と同等として扱われるステーブルコイン |
pricingApiSourcePerAsset | assetName, pricingApiSource | 資産ごとのカスタム価格ソース |
netsuiteCurrencySymbolToInternalId | currency, internalId | NetSuite の通貨マッピング |
simpleMatchingStrategies | beforeRange, afterRange | 照合の時間範囲 |
proofOfFunds | organizationName | 資金証明のクライアント設定 |
その他の管理者フィールド
admin クエリでは、以下も取得できます。
orgName— 組織の表示名disabledPlatforms— 収集が完全に無効になっているプラットフォームの簡易リストauth0Connections— 利用可能な SSO ログイン方法
組織設定の書き込み
ミューテーションの構造
パッチセマンティクスを使用します。変更するフィールドのみを指定してください。それ以外はすべてそのまま維持されます。
mutation {
setOrganizationSettings(
costBasisStrategy: FIFO
) {
organizationSettings {
costBasisStrategy
}
}
}
introspect("setOrganizationSettings") を使用して、変更可能なすべてのフィールド、その型、説明を確認してください。
組織設定を変更するワークフロー
- 変更する設定の現在の値を読み取ります
- 変更前と変更後を比較する表をユーザーに提示します
- リスクの高い設定が含まれる場合は警告します
- 承認を求めます
- ミューテーションを実行します
- 返された値を表示して確認します
プラットフォーム設定の読み取り
クエリ構造(トップレベルクエリ)
明示的な上書きが設定されているプラットフォーム/アカウントのみを返します。すべての設定でデフォルトを使用しているプラットフォームは表示されません。
query {
platformSettings(platform: ETHEREUM) {
results {
settingsId
platform
internalAccountId
platformSettings {
commitStrategy
calculateBalanceDiff
minLastSyncedAt
maxToDate
# add fields as needed — use introspect("PlatformSettingsObjectType") for full list
}
}
}
}
絞り込みオプション
すべての引数は省略可能です。必要に応じて組み合わせてください。
| 引数 | 型 | 用途 |
|---|---|---|
platform | Platform | 特定のチェーン/取引所の設定を表示します |
internalAccountId | Int | 特定のウォレットの設定を表示します |
settingsId | String | ストレージキーに完全一致する設定を表示します |
settingsId_Icontains | String | 部分一致で検索します(例:「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 に変更する」
- 現在の設定を照会します:
admin { organizationSettings { costBasisStrategy } } - 表示します: 「現在: FIFO → 新規: LIFO」
- 警告します: 「原価基準法を変更すると再計算が実行されます。これはすべての過去の損益計算に影響します。」
- 承認を求めます
- 実行します:
setOrganizationSettings(costBasisStrategy: LIFO)
「Arbitrum を有効にする」
- 無効化されているものを照会します:
admin { disabledPlatforms }— リストに ARBITRUM が含まれていることを確認します - 表示します: 「ARBITRUM: 無効 → 有効」
- 承認を求めます
- 実行します:
setPlatformCollectionStatus(platformCollectionStatuses: [{platform: ARBITRUM, enabled: true}])
「Polygon 上のウォレット X の同期開始日を設定する」
- ウォレットを解決します:
internalAccount(identifier: "0x...")→idを取得します - 現在の値を読み取ります:
platformSettings(platform: POLYGON, internalAccountId: {id})→minLastSyncedAtを取得します - 表示します: 「ウォレット {name}(POLYGON 上): minLastSyncedAt: 1970-01-01 → 2025-01-01」
- 承認を求めます
- 実行します:
setPlatformSettings(platform: POLYGON, internalAccountId: {id}, minLastSyncedAt: "2025-01-01T00:00:00+00:00")
「特定のウォレットのネイティブアセットに残高差分を追加する」
- ウォレットを解決します:
internalAccount(identifier: "0x...")→idを取得します - 現在の値を読み取ります:
platformSettings(platform: ETHEREUM, internalAccountId: {id}) - 表示します: 「ウォレット {name} / ETHEREUM のネイティブアセット(DAILY 間隔)に残高ロールアップを追加します」
- 承認を求めます
- 実行します:
setPlatformSettings(platform: ETHEREUM, internalAccountId: {id}, balanceRollupSettings: {assetIdentifiers: ["native"], interval: DAILY})
「どのプラットフォームが無効になっているか表示して」
- 実行します:
admin { disabledPlatforms } - 結果が多い場合は、チェーンファミリーごとにグループ化した見やすいリストとして提示します
「設定されている価格ソースは何ですか?」
- 実行します:
admin { organizationSettings { pricingApiSource peggedStableCoinsToFiat { assetName currency } pricingApiSourcePerAsset { assetName pricingApiSource } } } - 提示します: デフォルトソース + アセットごとの上書き設定 + ペッグされたステーブルコイン
エラー処理
| エラー | 意味 | 解決方法 |
|---|---|---|
| 403 / 権限が拒否されました | ユーザーに admin:* 権限がありません | 組織の管理者に連絡してアクセス権を付与してもらいます |
platformSettings の結果が空 | カスタム上書き設定がありません — プラットフォームはデフォルトを使用します | これは正常です。デフォルトが適用されることを説明します |
| 「does not exist for organization」 | 内部アカウント ID がこの組織内で見つかりません | ウォレットアドレスを確認して再解決します |
| 無効な enum 値 | 設定に対する値が正しくありません | enum 型に対して introspect を使用して有効なオプションを表示します |
| DateTime 解析エラー | 形式が正しくありません | タイムゾーン付きの ISO 8601 である必要があります: "2025-01-01T00:00:00+00:00" |