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/disable platforms, balance diff, commit strategy, cost basis, ERP, pricing, sync boundaries, or any setting read/write 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".
npx skills add https://github.com/anthropics/claude-plugins-community --skill tres-settings-management
This skill lets users view and modify configuration for their TRES Finance organization and individual blockchain/exchange platforms. There are two levels:
Before doing anything, confirm which organization the user is connected to:
query { admin { orgName } }
Tell the user: "You're connected to {orgName}."
Before any mutation, ALWAYS fetch the current value of the setting(s) being changed. Show a clear before/after comparison.
Before executing ANY mutation, you MUST:
Flag these settings as potentially dangerous and add a warning:
costBasisStrategy — Changing mid-period can cause recalculations across the entire orgdisableAutoCommit — Stops all automatic data processingskipCostBasis — Disables cost basis entirelycommitStrategy: SKIP_ALL — Fully disables a platform's data pipelineenableMultiEntity — Structural change, hard to reverseallowShort — Enables short positions in cost basisDo NOT rely on hardcoded field lists. Use the MCP introspect tool to discover available fields and their types dynamically:
introspect("OrganizationSettingsObjectType") — all readable org settingsintrospect("setOrganizationSettings") — all writable org settings with descriptionsintrospect("PlatformSettingsObjectType") — all readable platform settingsintrospect("setPlatformSettings") — all writable platform settings with descriptionsWhen a user asks "what can I configure?" or you need to verify a field name or enum values, introspect first.
If the user says "show me the settings" without specifics, offer these categories with plain-language explanations:
| Category | What It Controls |
|---|---|
| Cost Basis | How gains/losses are calculated (FIFO, LIFO, etc.), per-wallet vs org-wide, impairment |
| Commit Pipeline | Automatic data processing schedule, priority, stuck detection, sync hours |
| Internal Transfers | How transfers between the org's own wallets are detected and matched |
| Pricing | Where asset prices come from, stablecoin pegging, swap alignment |
| ERP Integration | How data syncs to accounting systems (NetSuite, Xero, QuickBooks) |
| Dashboard & Features | Which UI features are enabled (pivot tables, vesting, payments, multi-entity) |
| Staking | Staking rewards tracking and position management |
| Reconciliation | Cross-org and subsystem reconciliation behavior |
| Reports | Scheduled report timing, format, and content |
| Platform Collection | Which blockchains/exchanges are enabled, their sync boundaries and filters |
query {
admin {
orgName
organizationSettings {
# include only the fields relevant to the user's question
}
}
}
introspect("OrganizationSettingsObjectType") to discover available fields if neededThese fields return objects/lists, not scalars. Always include their sub-fields:
| Field | Sub-fields | What It Is |
|---|---|---|
| peggedStableCoinsToFiat | assetName, currency | Stablecoins treated as equivalent to fiat |
| pricingApiSourcePerAsset | assetName, pricingApiSource | Custom pricing source per asset |
| netsuiteCurrencySymbolToInternalId | currency, internalId | NetSuite currency mapping |
| simpleMatchingStrategies | beforeRange, afterRange | Reconciliation time windows |
| proofOfFunds | organizationName | Proof of funds client config |
The admin query also provides:
orgName — the organization's display namedisabledPlatforms — quick list of platforms with collection fully disabledauth0Connections — available SSO login methodsUses patch semantics — only include the fields you want to change. Everything else stays as-is.
mutation {
setOrganizationSettings(
costBasisStrategy: FIFO
) {
organizationSettings {
costBasisStrategy
}
}
}
Use introspect("setOrganizationSettings") to discover all mutable fields, their types, and descriptions.
Returns only platforms/accounts with explicit overrides. Platforms using all defaults won't appear.
query {
platformSettings(platform: ETHEREUM) {
results {
settingsId
platform
internalAccountId
platformSettings {
commitStrategy
calculateBalanceDiff
minLastSyncedAt
maxToDate
# add fields as needed — use introspect("PlatformSettingsObjectType") for full list
}
}
}
}
All arguments are optional — combine as needed:
| Argument | Type | Use Case |
|---|---|---|
| platform | Platform | Show settings for a specific chain/exchange |
| internalAccountId | Int | Show settings for a specific wallet |
| settingsId | String | Exact match on storage key |
| settingsId_Icontains | String | Partial match (e.g., "ethereum" matches "ethereum_714128") |
platform only → platform-wide + all per-wallet overrides for that platformplatform + internalAccountId → only the per-wallet overrideinternalAccountId only → all platforms for that walletquery { admin { disabledPlatforms } }
Patch semantics — only included fields are merged. Existing values preserved.
mutation {
setPlatformSettings(
platform: ARBITRUM
internalAccountId: 714128 # omit for platform-wide
commitStrategy: FULL
minLastSyncedAt: "2025-01-01T00:00:00+00:00"
) {
settingsId
platformSettings {
commitStrategy
minLastSyncedAt
}
}
}
Use introspect("setPlatformSettings") to discover all available arguments.
platform (required) — target blockchain or exchangeinternalAccountId (optional) — scope to a specific wallet. Omit for platform-wide"2025-01-01T00:00:00+00:00"To enable balance-diff-based activity tracking for specific assets:
mutation {
setPlatformSettings(
platform: ARBITRUM
internalAccountId: 714128
balanceRollupSettings: {
assetIdentifiers: ["native"]
interval: DAILY
}
) {
settingsId
platformSettings {
balanceRollupSettings { assetIdentifiers interval }
}
}
}
assetIdentifiers can be "native" for the chain's native asset, or contract addresses for tokens.
Use setPlatformCollectionStatus (not setPlatformSettings) for simple enable/disable.
mutation {
setPlatformCollectionStatus(
platformCollectionStatuses: [
{ platform: ARBITRUM, enabled: true }
{ platform: POLYGON, enabled: false }
]
) {
success
}
}
enabled: true → platform will be collected in commits (FULL)enabled: false → platform is fully skipped (SKIP_ALL)Supports bulk operations — multiple platforms in one call.
When the user provides a wallet address, look up the internal account ID:
query {
internalAccount(identifier: "0x1887fa9edadeab7562b01cc3f4fa246ace2c3cdd") {
results {
id
name
identifier
parentPlatform
}
}
}
Use the returned id as internalAccountId in platform settings mutations.
Note: 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.
admin { organizationSettings { costBasisStrategy } }setOrganizationSettings(costBasisStrategy: LIFO)admin { disabledPlatforms } — confirm ARBITRUM is in the listsetPlatformCollectionStatus(platformCollectionStatuses: [{platform: ARBITRUM, enabled: true}])internalAccount(identifier: "0x...") → get idplatformSettings(platform: POLYGON, internalAccountId: {id}) → get minLastSyncedAtsetPlatformSettings(platform: POLYGON, internalAccountId: {id}, minLastSyncedAt: "2025-01-01T00:00:00+00:00")internalAccount(identifier: "0x...") → get idplatformSettings(platform: ETHEREUM, internalAccountId: {id})setPlatformSettings(platform: ETHEREUM, internalAccountId: {id}, balanceRollupSettings: {assetIdentifiers: ["native"], interval: DAILY})admin { disabledPlatforms }admin { organizationSettings { pricingApiSource peggedStableCoinsToFiat { assetName currency } pricingApiSourcePerAsset { assetName pricingApiSource } } }| Error | Meaning | Resolution |
|---|---|---|
| 403 / Permission denied | User lacks admin:* permission | Contact org admin to grant access |
| Empty platformSettings results | No custom overrides — platform uses defaults | This is normal; explain that defaults apply |
| "does not exist for organization" | Internal account ID not found in this org | Verify the wallet address and re-resolve |
| Invalid enum value | Wrong value for a setting | Use introspect on the enum type to show valid options |
| DateTime parse error | Wrong format | Must be ISO 8601 with timezone: "2025-01-01T00:00:00+00:00" |
antfu-style design conventions, broadened. UnoCSS-first, class-based semantic tokens with dual light/dark for tooling and devtools UIs, plus design-read, anti-slop, and micro-interaction polish for landing pages and product surfaces. Use when building or refactoring any interface with UnoCSS.
When the user wants to choose between PLG and sales-led, design a sales motion, optimize time-to-first-value, or build a value-before-purchase experience. Also use when the user mentions 'PLG,' 'product-led growth,' 'sales-led,' 'sales motion,' 'free trial,' 'freemium,' 'self-serve,' 'demo-first,' 'time-to-first-value,' 'TTFV,' or 'agent-led sales.' This skill covers sales motion selection, value delivery design, and go-to-market motion architecture. Do NOT use for technical implementation, code review, or software architecture.
**WORKFLOW SKILL** — Migrate an Azure resource group from legacy to hybrid versioning mode in ASO. USE FOR: moving a group (e.g., appconfiguration, cache, network) from VersionMigrationModeLegacy to VersionMigrationModeHybrid in the code generator, updating samples, renaming CRUD tests, and re-recording sample tests. DO NOT USE FOR: adding new resources (use new-resource.instructions.md), general debugging, or code review.
When the user wants help with public relations, earned media, press coverage, journalist outreach, or media strategy (not pull requests). Also use when the user mentions 'PR,' 'public relations,' 'press,' 'press release,' 'press coverage,' 'media outreach,' 'pitch a journalist,' 'get...
Rewrites commit messages so they sound like a careful human engineer wrote them. Strips AI/marketing slop ("comprehensive solution", "robust implementation", "leverage", "enhance", "seamlessly", "This commit..."). Keeps Conventional Commits format. Subject ≤72 chars (aim ≤50),...
Umbrella workflow for 68 public skills: Full Send, copy, design, code review, SEO, launch packaging, MCP QA, iOS and Android app shipping, and creator workflows. Loads the full public skill pack.
Conventional commit type keywords for PR titles and commit messages. Use when determining the change type for commits or PRs. Triggered by "what type", "label", "change type", "conventional commit", "t: label".
Evaluate and improve interface usability using heuristic analysis. Use when the user mentions "usability audit", "UX review", "users are confused", "heuristic evaluation", "form usability", or "navigation problems". Covers Nielsen''s 10 heuristics, severity ratings, and information architecture. For visual design fixes, see refactoring-ui. For conversion-focused audits, see cro-methodology.
Take anthropics/tres-settings-management from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.