[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M718FW5ST9J56WY4TJ5G5A7X":3,"skill-same:01M718FW5ST9J56WY4TJ5G5A7X":71},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M718FW5ST9J56WY4TJ5G5A7X","tres-settings-management",null,"Manage Organization Settings and Platform Settings via the TRES MCP GraphQL API. Use when users ask about org settings, platform settings, configuration, feature flags, enable\u002Fdisable platforms, balance diff, commit strategy, cost basis, ERP, pricing, sync boundaries, or any setting read\u002Fwrite operation. Trigger phrases include \"get settings\", \"show settings\", \"update settings\", \"change settings\", \"enable platform\", \"disable platform\", \"balance diff\", \"commit strategy\", \"cost basis strategy\", \"set min sync date\", \"configure\", \"turn on\", \"turn off\".","anthropics\u002Fclaude-plugins-community","anthropics","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F76263028?v=4","01M697XGDPXJAVQ8391V2BCYTE","Anthropic","01M718C1RS4JJFM9KNJMTCAYJG",4892,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-community\u002Fblob\u002Fmain\u002Ftres-finance-plugin\u002Fskills\u002Ftres-settings-management\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"settings","management","tres settings management","flags","mcp graphql","sync","write","read","update","organization","change","api","commit","ask","configure","when","MCP","get","show","SET","2026-11-10 10:12:30",false,"---\nname: tres-settings-management\ndescription: Manage Organization Settings and Platform Settings via the TRES MCP GraphQL API. Use when users ask about org settings, platform settings, configuration, feature flags, enable\u002Fdisable platforms, balance diff, commit strategy, cost basis, ERP, pricing, sync boundaries, or any setting read\u002Fwrite operation. Trigger phrases include \"get settings\", \"show settings\", \"update settings\", \"change settings\", \"enable platform\", \"disable platform\", \"balance diff\", \"commit strategy\", \"cost basis strategy\", \"set min sync date\", \"configure\", \"turn on\", \"turn off\".\n---\n\n# TRES MCP - Organization & Platform Settings\n\n## How This Skill Works\n\nThis skill lets users view and modify configuration for their TRES Finance organization and individual blockchain\u002Fexchange platforms. There are two levels:\n\n- **Organization Settings** — Apply to the entire org: how cost basis is calculated, which features are enabled, ERP behavior, pricing sources, commit scheduling, etc.\n- **Platform Settings** — Apply per-platform (e.g., Ethereum, Arbitrum) and optionally per-wallet: commit strategy, sync date boundaries, balance diff, asset filtering, etc.\n\n---\n\n## Ground Rules\n\n### 1. Always Start by Identifying the Org\n\nBefore doing anything, confirm which organization the user is connected to:\n\n```graphql\nquery { admin { orgName } }\n```\n\nTell the user: \"You're connected to **{orgName}**.\"\n\n### 2. Read Before Write\n\nBefore any mutation, ALWAYS fetch the current value of the setting(s) being changed. Show a clear before\u002Fafter comparison.\n\n### 3. Mutations Require Explicit Approval\n\nBefore executing ANY mutation, you MUST:\n1. Show a clear summary table with **Setting**, **Current Value**, and **New Value**\n2. Explicitly ask: \"Shall I apply these changes to **{orgName}**?\"\n3. Only proceed after the user confirms\n4. After execution, show the confirmed result from the mutation response\n\n### 4. Warn About High-Risk Changes\n\nFlag these settings as potentially dangerous and add a warning:\n- `costBasisStrategy` — Changing mid-period can cause recalculations across the entire org\n- `disableAutoCommit` — Stops all automatic data processing\n- `skipCostBasis` — Disables cost basis entirely\n- `commitStrategy: SKIP_ALL` — Fully disables a platform's data pipeline\n- `enableMultiEntity` — Structural change, hard to reverse\n- `allowShort` — Enables short positions in cost basis\n\n### 5. Use Schema Introspection for Field Discovery\n\nDo NOT rely on hardcoded field lists. Use the MCP `introspect` tool to discover available fields and their types dynamically:\n\n- `introspect(\"OrganizationSettingsObjectType\")` — all readable org settings\n- `introspect(\"setOrganizationSettings\")` — all writable org settings with descriptions\n- `introspect(\"PlatformSettingsObjectType\")` — all readable platform settings\n- `introspect(\"setPlatformSettings\")` — all writable platform settings with descriptions\n\nWhen a user asks \"what can I configure?\" or you need to verify a field name or enum values, introspect first.\n\n---\n\n## Setting Categories (use when users ask vaguely)\n\nIf the user says \"show me the settings\" without specifics, offer these categories with plain-language explanations:\n\n| Category | What It Controls |\n|---|---|\n| **Cost Basis** | How gains\u002Flosses are calculated (FIFO, LIFO, etc.), per-wallet vs org-wide, impairment |\n| **Commit Pipeline** | Automatic data processing schedule, priority, stuck detection, sync hours |\n| **Internal Transfers** | How transfers between the org's own wallets are detected and matched |\n| **Pricing** | Where asset prices come from, stablecoin pegging, swap alignment |\n| **ERP Integration** | How data syncs to accounting systems (NetSuite, Xero, QuickBooks) |\n| **Dashboard & Features** | Which UI features are enabled (pivot tables, vesting, payments, multi-entity) |\n| **Staking** | Staking rewards tracking and position management |\n| **Reconciliation** | Cross-org and subsystem reconciliation behavior |\n| **Reports** | Scheduled report timing, format, and content |\n| **Platform Collection** | Which blockchains\u002Fexchanges are enabled, their sync boundaries and filters |\n\n---\n\n## Reading Organization Settings\n\n### Query Structure\n\n```graphql\nquery {\n  admin {\n    orgName\n    organizationSettings {\n      # include only the fields relevant to the user's question\n    }\n  }\n}\n```\n\n- Organization is resolved from the auth token — no org ID needed\n- Never request all fields at once — pick the category relevant to the question\n- Use `introspect(\"OrganizationSettingsObjectType\")` to discover available fields if needed\n\n### Nested Fields (must expand sub-fields when querying)\n\nThese fields return objects\u002Flists, not scalars. Always include their sub-fields:\n\n| Field | Sub-fields | What It Is |\n|---|---|---|\n| `peggedStableCoinsToFiat` | `assetName`, `currency` | Stablecoins treated as equivalent to fiat |\n| `pricingApiSourcePerAsset` | `assetName`, `pricingApiSource` | Custom pricing source per asset |\n| `netsuiteCurrencySymbolToInternalId` | `currency`, `internalId` | NetSuite currency mapping |\n| `simpleMatchingStrategies` | `beforeRange`, `afterRange` | Reconciliation time windows |\n| `proofOfFunds` | `organizationName` | Proof of funds client config |\n\n### Additional Admin Fields\n\nThe `admin` query also provides:\n- `orgName` — the organization's display name\n- `disabledPlatforms` — quick list of platforms with collection fully disabled\n- `auth0Connections` — available SSO login methods\n\n---\n\n## Writing Organization Settings\n\n### Mutation Structure\n\nUses patch semantics — only include the fields you want to change. Everything else stays as-is.\n\n```graphql\nmutation {\n  setOrganizationSettings(\n    costBasisStrategy: FIFO\n  ) {\n    organizationSettings {\n      costBasisStrategy\n    }\n  }\n}\n```\n\nUse `introspect(\"setOrganizationSettings\")` to discover all mutable fields, their types, and descriptions.\n\n### Workflow for Changing Org Settings\n\n1. **Read** the current values of the setting(s) being changed\n2. **Show** the user a before\u002Fafter comparison table\n3. **Warn** if any high-risk settings are involved\n4. **Ask** for approval\n5. **Execute** the mutation\n6. **Confirm** by showing the returned values\n\n---\n\n## Reading Platform Settings\n\n### Query Structure (top-level query)\n\nReturns only platforms\u002Faccounts with explicit overrides. Platforms using all defaults won't appear.\n\n```graphql\nquery {\n  platformSettings(platform: ETHEREUM) {\n    results {\n      settingsId\n      platform\n      internalAccountId\n      platformSettings {\n        commitStrategy\n        calculateBalanceDiff\n        minLastSyncedAt\n        maxToDate\n        # add fields as needed — use introspect(\"PlatformSettingsObjectType\") for full list\n      }\n    }\n  }\n}\n```\n\n### Filtering Options\n\nAll arguments are optional — combine as needed:\n\n| Argument | Type | Use Case |\n|---|---|---|\n| `platform` | `Platform` | Show settings for a specific chain\u002Fexchange |\n| `internalAccountId` | `Int` | Show settings for a specific wallet |\n| `settingsId` | `String` | Exact match on storage key |\n| `settingsId_Icontains` | `String` | Partial match (e.g., \"ethereum\" matches \"ethereum_714128\") |\n\n- **No args** → all stored platform settings\n- **`platform` only** → platform-wide + all per-wallet overrides for that platform\n- **`platform` + `internalAccountId`** → only the per-wallet override\n- **`internalAccountId` only** → all platforms for that wallet\n\n### Quick Check: Which Platforms Are Disabled?\n\n```graphql\nquery { admin { disabledPlatforms } }\n```\n\n---\n\n## Writing Platform Settings\n\n### Mutation Structure\n\nPatch semantics — only included fields are merged. Existing values preserved.\n\n```graphql\nmutation {\n  setPlatformSettings(\n    platform: ARBITRUM\n    internalAccountId: 714128    # omit for platform-wide\n    commitStrategy: FULL\n    minLastSyncedAt: \"2025-01-01T00:00:00+00:00\"\n  ) {\n    settingsId\n    platformSettings {\n      commitStrategy\n      minLastSyncedAt\n    }\n  }\n}\n```\n\nUse `introspect(\"setPlatformSettings\")` to discover all available arguments.\n\n### Key Arguments\n\n- `platform` (required) — target blockchain or exchange\n- `internalAccountId` (optional) — scope to a specific wallet. Omit for platform-wide\n- DateTime values must be ISO 8601 with timezone: `\"2025-01-01T00:00:00+00:00\"`\n\n### Balance Rollup (Balance Diff)\n\nTo enable balance-diff-based activity tracking for specific assets:\n\n```graphql\nmutation {\n  setPlatformSettings(\n    platform: ARBITRUM\n    internalAccountId: 714128\n    balanceRollupSettings: {\n      assetIdentifiers: [\"native\"]\n      interval: DAILY\n    }\n  ) {\n    settingsId\n    platformSettings {\n      balanceRollupSettings { assetIdentifiers interval }\n    }\n  }\n}\n```\n\n`assetIdentifiers` can be `\"native\"` for the chain's native asset, or contract addresses for tokens.\n\n---\n\n## Enabling \u002F Disabling Platforms\n\nUse `setPlatformCollectionStatus` (not `setPlatformSettings`) for simple enable\u002Fdisable.\n\n```graphql\nmutation {\n  setPlatformCollectionStatus(\n    platformCollectionStatuses: [\n      { platform: ARBITRUM, enabled: true }\n      { platform: POLYGON, enabled: false }\n    ]\n  ) {\n    success\n  }\n}\n```\n\n- `enabled: true` → platform will be collected in commits (FULL)\n- `enabled: false` → platform is fully skipped (SKIP_ALL)\n\nSupports bulk operations — multiple platforms in one call.\n\n---\n\n## Resolving Wallet Addresses to Internal Account IDs\n\nWhen the user provides a wallet address, look up the internal account ID:\n\n```graphql\nquery {\n  internalAccount(identifier: \"0x1887fa9edadeab7562b01cc3f4fa246ace2c3cdd\") {\n    results {\n      id\n      name\n      identifier\n      parentPlatform\n    }\n  }\n}\n```\n\nUse the returned `id` as `internalAccountId` in platform settings mutations.\n\nNote: `parentPlatform` represents the top-level chain family (e.g., `ethereum` covers Ethereum, Arbitrum, Polygon, etc.). A single wallet address on `ethereum` parentPlatform can have platform-specific settings for each L2.\n\n---\n\n## Common Workflows\n\n### \"Change the cost basis method to LIFO\"\n\n1. Query current: `admin { organizationSettings { costBasisStrategy } }`\n2. Show: \"Current: FIFO → New: LIFO\"\n3. Warn: \"Changing the cost basis method will trigger recalculation. This affects all historical gain\u002Floss calculations.\"\n4. Ask for approval\n5. Execute: `setOrganizationSettings(costBasisStrategy: LIFO)`\n\n### \"Enable Arbitrum\"\n\n1. Query disabled: `admin { disabledPlatforms }` — confirm ARBITRUM is in the list\n2. Show: \"ARBITRUM: Disabled → Enabled\"\n3. Ask for approval\n4. Execute: `setPlatformCollectionStatus(platformCollectionStatuses: [{platform: ARBITRUM, enabled: true}])`\n\n### \"Set sync start date for wallet X on Polygon\"\n\n1. Resolve wallet: `internalAccount(identifier: \"0x...\")` → get `id`\n2. Read current: `platformSettings(platform: POLYGON, internalAccountId: {id})` → get `minLastSyncedAt`\n3. Show: \"Wallet {name} on POLYGON: minLastSyncedAt: 1970-01-01 → 2025-01-01\"\n4. Ask for approval\n5. Execute: `setPlatformSettings(platform: POLYGON, internalAccountId: {id}, minLastSyncedAt: \"2025-01-01T00:00:00+00:00\")`\n\n### \"Add balance diff for native asset on a specific wallet\"\n\n1. Resolve wallet: `internalAccount(identifier: \"0x...\")` → get `id`\n2. Read current: `platformSettings(platform: ETHEREUM, internalAccountId: {id})`\n3. Show: \"Adding balance rollup for native asset (DAILY interval) on wallet {name} \u002F ETHEREUM\"\n4. Ask for approval\n5. Execute: `setPlatformSettings(platform: ETHEREUM, internalAccountId: {id}, balanceRollupSettings: {assetIdentifiers: [\"native\"], interval: DAILY})`\n\n### \"Show me which platforms are disabled\"\n\n1. Execute: `admin { disabledPlatforms }`\n2. Present as a clean list grouped by chain family if many results\n\n### \"What pricing source is configured?\"\n\n1. Execute: `admin { organizationSettings { pricingApiSource peggedStableCoinsToFiat { assetName currency } pricingApiSourcePerAsset { assetName pricingApiSource } } }`\n2. Present: default source + any per-asset overrides + pegged stablecoins\n\n---\n\n## Error Handling\n\n| Error | Meaning | Resolution |\n|---|---|---|\n| 403 \u002F Permission denied | User lacks `admin:*` permission | Contact org admin to grant access |\n| Empty `platformSettings` results | No custom overrides — platform uses defaults | This is normal; explain that defaults apply |\n| \"does not exist for organization\" | Internal account ID not found in this org | Verify the wallet address and re-resolve |\n| Invalid enum value | Wrong value for a setting | Use `introspect` on the enum type to show valid options |\n| DateTime parse error | Wrong format | Must be ISO 8601 with timezone: `\"2025-01-01T00:00:00+00:00\"` |\n","# TRES MCP - Organization & Platform Settings\n\n## How This Skill Works\n\nThis skill lets users view and modify configuration for their TRES Finance organization and individual blockchain\u002Fexchange platforms. There are two levels:\n\n- **Organization Settings** — Apply to the entire org: how cost basis is calculated, which features are enabled, ERP behavior, pricing sources, commit scheduling, etc.\n- **Platform Settings** — Apply per-platform (e.g., Ethereum, Arbitrum) and optionally per-wallet: commit strategy, sync date boundaries, balance diff, asset filtering, etc.\n\n---\n\n## Ground Rules\n\n### 1. Always Start by Identifying the Org\n\nBefore doing anything, confirm which organization the user is connected to:\n\n```graphql\nquery { admin { orgName } }\n```\n\nTell the user: \"You're connected to **{orgName}**.\"\n\n### 2. Read Before Write\n\nBefore any mutation, ALWAYS fetch the current value of the setting(s) being changed. Show a clear before\u002Fafter comparison.\n\n### 3. Mutations Require Explicit Approval\n\nBefore executing ANY mutation, you MUST:\n1. Show a clear summary table with **Setting**, **Current Value**, and **New Value**\n2. Explicitly ask: \"Shall I apply these changes to **{orgName}**?\"\n3. Only proceed after the user confirms\n4. After execution, show the confirmed result from the mutation response\n\n### 4. Warn About High-Risk Changes\n\nFlag these settings as potentially dangerous and add a warning:\n- `costBasisStrategy` — Changing mid-period can cause recalculations across the entire org\n- `disableAutoCommit` — Stops all automatic data processing\n- `skipCostBasis` — Disables cost basis entirely\n- `commitStrategy: SKIP_ALL` — Fully disables a platform's data pipeline\n- `enableMultiEntity` — Structural change, hard to reverse\n- `allowShort` — Enables short positions in cost basis\n\n### 5. Use Schema Introspection for Field Discovery\n\nDo NOT rely on hardcoded field lists. Use the MCP `introspect` tool to discover available fields and their types dynamically:\n\n- `introspect(\"OrganizationSettingsObjectType\")` — all readable org settings\n- `introspect(\"setOrganizationSettings\")` — all writable org settings with descriptions\n- `introspect(\"PlatformSettingsObjectType\")` — all readable platform settings\n- `introspect(\"setPlatformSettings\")` — all writable platform settings with descriptions\n\nWhen a user asks \"what can I configure?\" or you need to verify a field name or enum values, introspect first.\n\n---\n\n## Setting Categories (use when users ask vaguely)\n\nIf the user says \"show me the settings\" without specifics, offer these categories with plain-language explanations:\n\n| Category | What It Controls |\n|---|---|\n| **Cost Basis** | How gains\u002Flosses are calculated (FIFO, LIFO, etc.), per-wallet vs org-wide, impairment |\n| **Commit Pipeline** | Automatic data processing schedule, priority, stuck detection, sync hours |\n| **Internal Transfers** | How transfers between the org's own wallets are detected and matched |\n| **Pricing** | Where asset prices come from, stablecoin pegging, swap alignment |\n| **ERP Integration** | How data syncs to accounting systems (NetSuite, Xero, QuickBooks) |\n| **Dashboard & Features** | Which UI features are enabled (pivot tables, vesting, payments, multi-entity) |\n| **Staking** | Staking rewards tracking and position management |\n| **Reconciliation** | Cross-org and subsystem reconciliation behavior |\n| **Reports** | Scheduled report timing, format, and content |\n| **Platform Collection** | Which blockchains\u002Fexchanges are enabled, their sync boundaries and filters |\n\n---\n\n## Reading Organization Settings\n\n### Query Structure\n\n```graphql\nquery {\n  admin {\n    orgName\n    organizationSettings {\n      # include only the fields relevant to the user's question\n    }\n  }\n}\n```\n\n- Organization is resolved from the auth token — no org ID needed\n- Never request all fields at once — pick the category relevant to the question\n- Use `introspect(\"OrganizationSettingsObjectType\")` to discover available fields if needed\n\n### Nested Fields (must expand sub-fields when querying)\n\nThese fields return objects\u002Flists, not scalars. Always include their sub-fields:\n\n| Field | Sub-fields | What It Is |\n|---|---|---|\n| `peggedStableCoinsToFiat` | `assetName`, `currency` | Stablecoins treated as equivalent to fiat |\n| `pricingApiSourcePerAsset` | `assetName`, `pricingApiSource` | Custom pricing source per asset |\n| `netsuiteCurrencySymbolToInternalId` | `currency`, `internalId` | NetSuite currency mapping |\n| `simpleMatchingStrategies` | `beforeRange`, `afterRange` | Reconciliation time windows |\n| `proofOfFunds` | `organizationName` | Proof of funds client config |\n\n### Additional Admin Fields\n\nThe `admin` query also provides:\n- `orgName` — the organization's display name\n- `disabledPlatforms` — quick list of platforms with collection fully disabled\n- `auth0Connections` — available SSO login methods\n\n---\n\n## Writing Organization Settings\n\n### Mutation Structure\n\nUses patch semantics — only include the fields you want to change. Everything else stays as-is.\n\n```graphql\nmutation {\n  setOrganizationSettings(\n    costBasisStrategy: FIFO\n  ) {\n    organizationSettings {\n      costBasisStrategy\n    }\n  }\n}\n```\n\nUse `introspect(\"setOrganizationSettings\")` to discover all mutable fields, their types, and descriptions.\n\n### Workflow for Changing Org Settings\n\n1. **Read** the current values of the setting(s) being changed\n2. **Show** the user a before\u002Fafter comparison table\n3. **Warn** if any high-risk settings are involved\n4. **Ask** for approval\n5. **Execute** the mutation\n6. **Confirm** by showing the returned values\n\n---\n\n## Reading Platform Settings\n\n### Query Structure (top-level query)\n\nReturns only platforms\u002Faccounts with explicit overrides. Platforms using all defaults won't appear.\n\n```graphql\nquery {\n  platformSettings(platform: ETHEREUM) {\n    results {\n      settingsId\n      platform\n      internalAccountId\n      platformSettings {\n        commitStrategy\n        calculateBalanceDiff\n        minLastSyncedAt\n        maxToDate\n        # add fields as needed — use introspect(\"PlatformSettingsObjectType\") for full list\n      }\n    }\n  }\n}\n```\n\n### Filtering Options\n\nAll arguments are optional — combine as needed:\n\n| Argument | Type | Use Case |\n|---|---|---|\n| `platform` | `Platform` | Show settings for a specific chain\u002Fexchange |\n| `internalAccountId` | `Int` | Show settings for a specific wallet |\n| `settingsId` | `String` | Exact match on storage key |\n| `settingsId_Icontains` | `String` | Partial match (e.g., \"ethereum\" matches \"ethereum_714128\") |\n\n- **No args** → all stored platform settings\n- **`platform` only** → platform-wide + all per-wallet overrides for that platform\n- **`platform` + `internalAccountId`** → only the per-wallet override\n- **`internalAccountId` only** → all platforms for that wallet\n\n### Quick Check: Which Platforms Are Disabled?\n\n```graphql\nquery { admin { disabledPlatforms } }\n```\n\n---\n\n## Writing Platform Settings\n\n### Mutation Structure\n\nPatch semantics — only included fields are merged. Existing values preserved.\n\n```graphql\nmutation {\n  setPlatformSettings(\n    platform: ARBITRUM\n    internalAccountId: 714128    # omit for platform-wide\n    commitStrategy: FULL\n    minLastSyncedAt: \"2025-01-01T00:00:00+00:00\"\n  ) {\n    settingsId\n    platformSettings {\n      commitStrategy\n      minLastSyncedAt\n    }\n  }\n}\n```\n\nUse `introspect(\"setPlatformSettings\")` to discover all available arguments.\n\n### Key Arguments\n\n- `platform` (required) — target blockchain or exchange\n- `internalAccountId` (optional) — scope to a specific wallet. Omit for platform-wide\n- DateTime values must be ISO 8601 with timezone: `\"2025-01-01T00:00:00+00:00\"`\n\n### Balance Rollup (Balance Diff)\n\nTo enable balance-diff-based activity tracking for specific assets:\n\n```graphql\nmutation {\n  setPlatformSettings(\n    platform: ARBITRUM\n    internalAccountId: 714128\n    balanceRollupSettings: {\n      assetIdentifiers: [\"native\"]\n      interval: DAILY\n    }\n  ) {\n    settingsId\n    platformSettings {\n      balanceRollupSettings { assetIdentifiers interval }\n    }\n  }\n}\n```\n\n`assetIdentifiers` can be `\"native\"` for the chain's native asset, or contract addresses for tokens.\n\n---\n\n## Enabling \u002F Disabling Platforms\n\nUse `setPlatformCollectionStatus` (not `setPlatformSettings`) for simple enable\u002Fdisable.\n\n```graphql\nmutation {\n  setPlatformCollectionStatus(\n    platformCollectionStatuses: [\n      { platform: ARBITRUM, enabled: true }\n      { platform: POLYGON, enabled: false }\n    ]\n  ) {\n    success\n  }\n}\n```\n\n- `enabled: true` → platform will be collected in commits (FULL)\n- `enabled: false` → platform is fully skipped (SKIP_ALL)\n\nSupports bulk operations — multiple platforms in one call.\n\n---\n\n## Resolving Wallet Addresses to Internal Account IDs\n\nWhen the user provides a wallet address, look up the internal account ID:\n\n```graphql\nquery {\n  internalAccount(identifier: \"0x1887fa9edadeab7562b01cc3f4fa246ace2c3cdd\") {\n    results {\n      id\n      name\n      identifier\n      parentPlatform\n    }\n  }\n}\n```\n\nUse the returned `id` as `internalAccountId` in platform settings mutations.\n\nNote: `parentPlatform` represents the top-level chain family (e.g., `ethereum` covers Ethereum, Arbitrum, Polygon, etc.). A single wallet address on `ethereum` parentPlatform can have platform-specific settings for each L2.\n\n---\n\n## Common Workflows\n\n### \"Change the cost basis method to LIFO\"\n\n1. Query current: `admin { organizationSettings { costBasisStrategy } }`\n2. Show: \"Current: FIFO → New: LIFO\"\n3. Warn: \"Changing the cost basis method will trigger recalculation. This affects all historical gain\u002Floss calculations.\"\n4. Ask for approval\n5. Execute: `setOrganizationSettings(costBasisStrategy: LIFO)`\n\n### \"Enable Arbitrum\"\n\n1. Query disabled: `admin { disabledPlatforms }` — confirm ARBITRUM is in the list\n2. Show: \"ARBITRUM: Disabled → Enabled\"\n3. Ask for approval\n4. Execute: `setPlatformCollectionStatus(platformCollectionStatuses: [{platform: ARBITRUM, enabled: true}])`\n\n### \"Set sync start date for wallet X on Polygon\"\n\n1. Resolve wallet: `internalAccount(identifier: \"0x...\")` → get `id`\n2. Read current: `platformSettings(platform: POLYGON, internalAccountId: {id})` → get `minLastSyncedAt`\n3. Show: \"Wallet {name} on POLYGON: minLastSyncedAt: 1970-01-01 → 2025-01-01\"\n4. Ask for approval\n5. Execute: `setPlatformSettings(platform: POLYGON, internalAccountId: {id}, minLastSyncedAt: \"2025-01-01T00:00:00+00:00\")`\n\n### \"Add balance diff for native asset on a specific wallet\"\n\n1. Resolve wallet: `internalAccount(identifier: \"0x...\")` → get `id`\n2. Read current: `platformSettings(platform: ETHEREUM, internalAccountId: {id})`\n3. Show: \"Adding balance rollup for native asset (DAILY interval) on wallet {name} \u002F ETHEREUM\"\n4. Ask for approval\n5. Execute: `setPlatformSettings(platform: ETHEREUM, internalAccountId: {id}, balanceRollupSettings: {assetIdentifiers: [\"native\"], interval: DAILY})`\n\n### \"Show me which platforms are disabled\"\n\n1. Execute: `admin { disabledPlatforms }`\n2. Present as a clean list grouped by chain family if many results\n\n### \"What pricing source is configured?\"\n\n1. Execute: `admin { organizationSettings { pricingApiSource peggedStableCoinsToFiat { assetName currency } pricingApiSourcePerAsset { assetName pricingApiSource } } }`\n2. Present: default source + any per-asset overrides + pegged stablecoins\n\n---\n\n## Error Handling\n\n| Error | Meaning | Resolution |\n|---|---|---|\n| 403 \u002F Permission denied | User lacks `admin:*` permission | Contact org admin to grant access |\n| Empty `platformSettings` results | No custom overrides — platform uses defaults | This is normal; explain that defaults apply |\n| \"does not exist for organization\" | Internal account ID not found in this org | Verify the wallet address and re-resolve |\n| Invalid enum value | Wrong value for a setting | Use `introspect` on the enum type to show valid options |\n| DateTime parse error | Wrong format | Must be ISO 8601 with timezone: `\"2025-01-01T00:00:00+00:00\"` |\n",{"name":5,"description":7},"main","163301d1904c0a994539f5226ce0fcd65b8652bf","tres-finance-plugin\u002Fskills\u002Ftres-settings-management",363,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-community","https:\u002F\u002Fgithub.com\u002Fanthropics","https:\u002F\u002Fanthropic.com","2026-11-12 15:56:31",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add anthropics\u002Fclaude-plugins-community --skill tres-settings-management",{"tool":63,"command":64},"bunx","bunx skills add anthropics\u002Fclaude-plugins-community --skill tres-settings-management",{"tool":66,"command":67},"pnpm","pnpm dlx skills add anthropics\u002Fclaude-plugins-community --skill tres-settings-management","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-community\u002Fblob\u002Fmain\u002Ftres-finance-plugin\u002Fskills\u002Ftres-settings-management\u002FSKILL.md",true,[],[72,106,131,154,178,198],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":87,"publishedAt":44},"01M718G9QZ4B2DJVEB3MAW5ZB1","tres-wallets-upload","Upload and onboard multiple on-chain wallets or exchange accounts into Tres Finance. Use this skill whenever the user wants to add wallets, onboard wallets, import wallets, upload wallet addresses, ingest wallets, or connect exchanges into Tres — whether from a file (CSV\u002FExcel) or by typing them manually. This skill guides Claude through the full flow: wallet type selection → input collection → validation → preview with editable HTML table → exchange credential collection (if exchange) → user confirmation → batch creation via the TRES MCP API. Always trigger this skill for wallet onboarding, wallet data ingestion, or any request to \"add wallets to Tres\".","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-community\u002Fblob\u002Fmain\u002Ftres-finance-plugin\u002Fskills\u002Ftres-wallets-upload\u002FSKILL.md",[78,81,82],{"categoryNo":79,"categoryName":80,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000004","电子表格",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000040","财务","PROFESSION","适用职业",[88,89,90,91,92,93,94,95,96,97,40,98,99,100,101,35,102,103,104,105],"wallets","tres wallets upload","upload","typing","ingestion","Wallet","chain","creation","xlsx","selection","confirmation","connect","collection","preview","batch","guides","on-chain","request",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":44},"01M718G5RD9064Z574RQ4SEY38","tres-upload-tx-header-validation","The exact column header names required by the TRES Finance bulk transaction CSV upload. Use whenever building, fixing, or validating the header row of a TRES manual transaction or sub-transaction upload CSV — especially after an upload fails with \"Missing required column(s): ...\". Trigger phrases include: 'fix my CSV headers', 'bulk transaction upload failed', 'missing required columns', 'validate TRES upload CSV', 'transaction CSV template headers'. This skill is ONLY about the header naming convention; it does not cover row values or upload workflow. Do NOT trigger for contacts import CSV (use tres-import-contacts), wallet upload CSV (use tres-wallets-upload), or general CSV parsing unrelated to bulk TX upload headers.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-community\u002Fblob\u002Fmain\u002Ftres-finance-plugin\u002Fskills\u002Ftres-upload-tx-header-validation\u002FSKILL.md",[],[113,90,114,115,116,117,93,118,119,120,121,122,123,124,125,126,127,128,129,130],"tres upload tx header validation","validation","bulk","do","import","parsing","for","manual","trigger","fix","missing","general","only","use","workflow","csv","contacts","with",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":138,"publishedAt":44},"01M718G1F3DBWTX5H9RWPHHB4F","tres-tx-story","Analyze a blockchain transaction by its hash using TRES Finance MCP and generate a visual flow diagram showing all asset movements, followed by a plain-language explanation of what happened. Use this skill whenever the user provides a transaction hash and asks to \"analyze\", \"explain\", \"visualize\", \"diagram\", \"show me what happened in\", or \"tell the story of\" a transaction. Also trigger when the user pastes a tx hash (long hex string starting with 0x) and asks anything about it. Always use this skill for transaction hash analysis — do not attempt to answer from memory alone.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-community\u002Fblob\u002Fmain\u002Ftres-finance-plugin\u002Fskills\u002Ftres-tx-story\u002FSKILL.md",[137],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[139,140,42,141,142,40,39,143,144,145,146,147,148,149,150,151,152,116,153,119],"tres tx story","Story","memory","hex","show me","analysis","analyze","me","diagram","generate","flow","asset","blockchain","STRING","visualize",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":162,"publishedAt":44},"01M718FND35X9DPTNR7JTX2YX8","tres-rollup-rules","Analyze an organization's sub-transaction patterns in TRES Finance, identify groups of repetitive transactions, and propose data-driven rollup rules that consolidate them into one aggregated entry per interval (daily or monthly) for cleaner ERP integration. Also lists and deletes rollup rules. Trigger this skill whenever the user asks about rollup rules, transaction aggregation, consolidating transactions, reducing transaction noise, rolling up gas fees, rolling up staking rewards, rolling up micro-transactions, or collapsing many small ledger entries into fewer summary entries. Also trigger on \"create a rollup rule\", \"suggest rollup rules\", \"what should I roll up\", \"show my rollup rules\", \"delete a rollup rule\", \"aggregate transactions\", \"too many transactions\", \"reduce transaction count\", \"roll up fees\", \"daily rollup\", \"monthly rollup\". If a wallet has too many transactions, high-frequency activity, or noisy ledger entries, proactively suggest rollup rules. For computing the EXACT impact of a single already-specified rule or reviewing submitted\u002Fpending rules, use the tres-rollup-review skill instead.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-community\u002Fblob\u002Fmain\u002Ftres-finance-plugin\u002Fskills\u002Ftres-rollup-rules\u002FSKILL.md",[160,161],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[163,164,165,42,166,93,167,40,168,169,170,171,172,145,173,174,175,176,33,177],"tres rollup rules","Rules","rollup","gas","up","impact","reduce","Connector","review","consolidate","create","transactions","delete","data-driven","activity",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":186,"publishedAt":44},"01M718FFX3KV2JRFVS2RCM719D","tres-rollup-review","Compute the EXACT sub-transaction impact of a rollup rule in TRES Finance — every filter applied — and flag genuine problems (zero matches, overlap, config mistakes) before the rule is created. Two modes. Mode A: a pre-create quality gate invoked by the tres-rollup-rules skill to vet proposed candidate rules. Mode B: standalone review of a rule someone submitted or of existing PENDING rules. Trigger this skill when the user says \"review this rollup rule\", \"what would this rollup rule actually match\", \"preview the rollup impact\", \"how many transactions would this rule catch\", \"is this rollup rule valid\", \"validate my rollup rule\", \"check my pending rollup rules\", or \"review the rollup requests\". Do NOT use this to design or propose new rollups — that is tres-rollup-rules. This skill only measures impact and flags issues; it never executes mutations.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-community\u002Fblob\u002Fmain\u002Ftres-finance-plugin\u002Fskills\u002Ftres-rollup-review\u002FSKILL.md",[184,185],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[171,187,165,188,189,190,191,192,125,193,40,168,39,101,194,170,195,196,173,197],"tres rollup review","standalone","never","mode","issues","design","new","candidate","filter","valid","catch",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":202,"categories":203,"keywords":205,"publishedAt":44},"01M718F9C31MH0XFSZ29Z4X7WD","tres-request-skill-update","Submit feedback about the TRES Claude plugin — bug reports, feature requests, skill improvements, new skill ideas, MCP issues, workflow friction, or positive feedback about what's working well. Use this skill whenever the user wants to share any kind of feedback about the plugin, its skills, or the TRES MCP. Trigger phrases include: \"submit feedback\", \"report a bug\", \"request a feature\", \"suggest an improvement\", \"I have an idea\", \"something is broken\", \"the skill isn't working\", \"I love this skill\", \"this worked great\", \"the MCP is returning wrong data\", \"the flow is confusing\", \"can you fix the skill\", \"file a skill request\", \"give feedback\", \"this could be better\". Also trigger proactively when the conversation appears to be wrapping up — e.g. the user says \"thanks\", \"that's all\", \"looks good\", \"we're done\", \"nothing else\", or any other signal that the task is complete. In that case, offer a brief feedback prompt instead of launching the full guided flow. Do NOT trigger for general questions about how a skill works — only when the user wants to submit feedback or the conversation is ending.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-community\u002Fblob\u002Fmain\u002Ftres-finance-plugin\u002Fskills\u002Ftres-request-skill-update\u002FSKILL.md",[204],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[206,105,32,207,208,209,210,211,212,167,122,191,213,125,193,214,40,39,127,215],"skill update","tres request skill update","conversation","brief","broken","submit","re","good","give feedback","you"]