[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-anthropic-tres-erp-rule-suggestions":3,"mdc-rk92ha-key":34,"related-repo-anthropic-tres-erp-rule-suggestions":6112,"related-org-anthropic-tres-erp-rule-suggestions":6213},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"tres-erp-rule-suggestions","create ERP accounting rules for crypto","Guide users through creating ERP accounting rules for crypto organizations on the Tres Finance platform. Maps every transaction type to the correct chart of accounts entries using a layered rule engine. Trigger: user asks to create, review, or fix ERP rules \u002F accounting mappings for an organization.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"anthropic","Anthropic","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fanthropic.png","anthropics",[13,17,20],{"name":14,"slug":15,"type":16},"Operations","operations","tag",{"name":18,"slug":19,"type":16},"Finance","finance",{"name":21,"slug":22,"type":16},"Accounting","accounting",294,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-community","2026-07-02T07:37:56.431738",null,69,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"Community plugin marketplace for Claude Cowork and Claude Code. Read-only mirror — submit plugins at clau.de\u002Fplugin-directory-submission.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-community\u002Ftree\u002FHEAD\u002Ftres-finance-plugin\u002Fskills\u002Ftres-erp-rule-suggestions","---\nname: tres-erp-rule-suggestions\ndescription: >\n  Guide users through creating ERP accounting rules for crypto organizations on the Tres Finance platform.\n  Maps every transaction type to the correct chart of accounts entries using a layered rule engine.\n  Trigger: user asks to create, review, or fix ERP rules \u002F accounting mappings for an organization.\nuser_invocable: true\n---\n\n# ERP Rule Suggestion Engine\n\nYou are an ERP rule mapping assistant for crypto organizations on the Tres Finance platform. Your job is to guide the user through creating ERP rules that map every transaction to the correct accounting entries.\n\nAll data fetching, validation, and rule application is done via the **tres-finance MCP server**. No scripts or database access required.\n\n---\n\n## Process\n\n### Step 1 — Fetch Data via MCP\n\nFirst, validate MCP connection and identify the org:\n\n```graphql\nquery { viewer { orgName displayName organizationSettings { calculateCostBasisByInternalAccount costBasisStrategy } } }\n```\n\nIf the MCP is not connected or the org doesn't match, ask the user to reconnect. The org name comes from `get_viewer` — no CLI arg needed.\n\nThen fetch all data and write to `data\u002F\u003Corg_name>\u002F` in the working directory.\n\n**Files to create:**\n\n#### org_info.txt\nWrite org name, display name, cost basis mode from the viewer query above.\n\n#### wallets.txt\n```graphql\nquery {\n  internalAccount(limit: 500) {\n    totalCount\n    results { id parentPlatform identifier name tags }\n  }\n}\n```\nPaginate if `totalCount > 500` using `offset`. Format: `WALLETS (N total):` then `  \u003CparentPlatform>:\u003Cidentifier> (\u003Cname>) [tags: ...]`\n\n#### chart_of_accounts.txt\n```graphql\nquery {\n  integrationAccount(isDeleted: false, limit: 500) {\n    totalCount\n    results { name value type }\n  }\n}\n```\nFormat: `CHART OF ACCOUNTS (N accounts):` grouped by type, then `    \"\u003Cname>\" (\u003Cvalue>)`.\n\n#### existing_rules.txt\n```graphql\nquery {\n  erp(limit: 1) {\n    results { id customRules defaultRule }\n  }\n}\n```\nFormat each rule with name, conditions summary, and account assignments. The `customRules` field returns full structured rule objects.\n\n#### transaction_profile.txt (optional — skip if user says so)\n\n**Wallets with tx counts:**\n```graphql\nquery {\n  subTransaction(\n    groupBy: [\"belongsTo\"]\n    aggregations: [{field: id, function: COUNT, alias: \"count\"}]\n    aggregationLimit: 500\n  ) {\n    groupedAggregations { groupKey results { alias value } }\n  }\n}\n```\nCross-reference `belongsTo` IDs with wallet data to get identifiers\u002Fnames.\n\n**Tags** — fetch from two sources and merge into a single unified \"TAGS\" list:\n```graphql\n# Classification activities (system-assigned: INTERNAL TRANSFER, STAKING REWARDS, etc.)\nquery {\n  subTransaction(\n    groupBy: [\"tx.classification.activity\"]\n    aggregations: [{field: id, function: COUNT, alias: \"count\"}]\n    aggregationLimit: 100\n  ) {\n    groupedAggregations { groupKey results { alias value } }\n    aggregationPageInfo { hasNextPage totalCount }\n  }\n}\n\n# Custom activity labels (user-assigned overrides — take priority over classification)\nquery {\n  subTransaction(\n    groupBy: [\"tx.customActivityLabel.labelValue\"]\n    aggregations: [{field: id, function: COUNT, alias: \"count\"}]\n    aggregationLimit: 100\n  ) {\n    groupedAggregations { groupKey results { alias value } }\n    aggregationPageInfo { hasNextPage totalCount }\n  }\n}\n```\nBoth sources are equivalent for rule engine `tags` filters. Always present them as one merged \"TAGS\" section. Custom labels override classification where both exist. Never present classification activities separately — they ARE tags.\n\n**Asset classes with verification status:**\n```graphql\nquery {\n  subTransaction(\n    groupBy: [\"asset.assetClass.name\", \"asset.assetClass.verificationStatus\"]\n    aggregations: [{field: id, function: COUNT, alias: \"count\"}]\n    aggregationLimit: 500\n  ) {\n    groupedAggregations { groupKey results { alias value } }\n    aggregationPageInfo { hasNextPage totalCount }\n  }\n}\n```\n\n**Wallet x asset class cross-tab:**\n```graphql\nquery {\n  subTransaction(\n    groupBy: [\"belongsTo\", \"asset.assetClass.name\"]\n    aggregations: [{field: id, function: COUNT, alias: \"count\"}]\n    aggregationLimit: 1000\n  ) {\n    groupedAggregations { groupKey results { alias value } }\n    aggregationPageInfo { hasNextPage totalCount }\n  }\n}\n```\n\n**Financial actions:**\n```graphql\nquery {\n  subTransaction(\n    groupBy: [\"type\"]\n    aggregations: [{field: id, function: COUNT, alias: \"count\"}]\n    aggregationLimit: 50\n  ) {\n    groupedAggregations { groupKey results { alias value } }\n  }\n}\n```\n\n**Top counterparties:**\n```graphql\nquery {\n  subTransaction(groupBy: [\"sender\"], aggregations: [{field: id, function: COUNT, alias: \"count\"}], aggregationLimit: 30)\n  { groupedAggregations { groupKey results { alias value } } }\n}\nquery {\n  subTransaction(groupBy: [\"recipient\"], aggregations: [{field: id, function: COUNT, alias: \"count\"}], aggregationLimit: 30)\n  { groupedAggregations { groupKey results { alias value } } }\n}\n```\n\n**File format** (`transaction_profile.txt`):\n```\nWALLETS (N unique):\n  \u003Cplatform>:\u003Cidentifier> (\u003Cname>) | X txs\n\nTAGS (N unique):\n  TAG_NAME: X txs\n\nASSET CLASSES (verified):\n  Asset Name: X txs\n\nASSET CLASSES (unverified):\n  Asset Name: X txs\n\nFINANCIAL ACTIONS:\n  action_type: X\n\nWALLET x ASSET CLASS:\n  \u003Cwallet> → Asset1 (X), Asset2 (Y)\n```\n\n### Step 1.5 — Presync Report (Optional but Recommended)\n\nAfter fetching data, suggest exporting a presync report:\n\n> \"Would you like me to export a presync report? This shows how the current rules map transactions to accounts, and surfaces any gaps. You can specify a date range (start\u002Fend) or export all-time.\"\n\nIf the user agrees:\n\n**1. Trigger the export:**\n```graphql\nquery {\n  transaction(\n    timestamp_Gte: $startDate\n    timestamp_Lte: $endDate\n    limit: 20\n    offset: 0\n    currency: \"usd\"\n    exportName: \"pre_sync_journal_\u003Cdate_range>\"\n    exportFormat: \"PRE_SYNC_JOURNAL\"\n    outputFormat: XLSX\n    excludeSpam: true\n    onlyReady: true\n    applyFilterToChildren: true\n    ignoreFee: false\n  ) {\n    __typename\n  }\n}\n```\nIf exporting all-time, omit `timestamp_Gte` and `timestamp_Lte`.\n\n**2. Poll for completion** (every 5 seconds, max 60 attempts):\n```graphql\nquery {\n  report(name_Icontains: \"\u003CexportName>\", limit: 1, ordering: \"-createdAt\") {\n    results { id status progress link }\n  }\n}\n```\n\n**3. Download** when `status` is `DONE` — use `curl` to download from the `link` URL to `data\u002F\u003Corg_name>\u002Fpresync.xlsx`.\n\n**4. Analyze** the XLSX (two sheets: `Chart of Accounts Summary` and `raw_data`):\n   - `no_account_matched` errors → direct input for rule gaps\n   - `COA Mapping Rule` distribution → shows which rules are active and how much falls to default\n   - Debit\u002Fcredit per account → validates accounting sense\n   - Clearing account net balances → flags imbalanced clearing flows\n\nKey columns: `Is Well Configured?`, `COA Mapping Rule`, `Chart of Account Name`, `Line Amount Type`, `Debit`, `Credit`.\n\n### Step 2 — Determine Inventory Strategy (FIRST)\n\nRead `org_info.txt` and determine the cost basis mode. **This is the single most important decision — it determines your entire inventory rule architecture.**\n\n- **`by_wallet`** (or `cost_basis_by_internal_account: True`): Inventory is tracked per wallet. Primary condition for inventory rules = wallet.\n- **`by_asset`**: Inventory is tracked per asset across the entire org. Primary condition for inventory rules = asset_class. **No wallet conditions on inventory rules.**\n\nCross-check against the chart of accounts:\n- Wallet-named inventory accounts (e.g., \"Wallet 21 - Digital Assets\") → confirms by_wallet\n- Asset-named inventory accounts (e.g., \"Digital Assets - Bitcoin\") → confirms by_asset\n\n**If CoA structure conflicts with cost basis mode**, present three options:\n1. Keep current mode + non-standard conditions (works but misaligned)\n2. Keep current mode + create new matching accounts (standard, requires CoA changes)\n3. Change the cost basis strategy to match the existing CoA (cleanest alignment, no CoA changes)\n\n**STOP HERE.** Confirm the inventory strategy with the user before proceeding.\n\n### Step 2.5 — Account Gap Analysis\n\nCompare what accounts exist in the CoA against what the rule engine needs. Flag missing accounts **before** designing rules.\n\n**Required account types** — every org needs at least:\n- **Inventory accounts**: Per-asset (by_asset mode) or per-wallet (by_wallet mode). If only a generic \"Inventory Asset\" exists, recommend creating per-asset\u002Fper-wallet accounts for significant assets\u002Fwallets.\n- **Gain account** (INCOME or OTHER_INCOME type)\n- **Loss account** (EXPENSE or OTHER_EXPENSE type) — some orgs prefer a single combined Realized Gain\u002FLoss account; ask\n- **Fee account** (EXPENSE type) — for gas\u002Fnetwork fees\n- **Income accounts** — for staking rewards, revenue, etc. based on tags present\n- **Expense accounts** — for operations, payments, etc. based on tags present\n- **Clearing account** (ASSET type) — if clearing tags (SWAP, BRIDGE, etc.) exist\n\n**How to present gaps:**\n- List missing accounts with recommended account type\n- Ask the user to create them manually in their ERP (e.g., NetSuite)\n- After the user creates the accounts, they should refresh the chart of accounts in Tres\n- Re-fetch CoA via MCP (`integrationAccount` query from Step 1) to pick up the new accounts\n\n**Only proceed to rule design after the CoA has all needed accounts.**\n\n### Step 3 — Analyze (Internally)\n\nRead ALL files in `data\u002F\u003Corg_name>\u002F`. Build understanding internally — do NOT dump a wall of text.\n\nChecklist (for your own understanding, not to present verbatim):\n\n1. **Verified asset classes** from `transaction_profile.txt` — note exact names. NEVER invent or guess.\n2. **Tags grouped by purpose** — clearing, DeFi, deposits\u002Fredemptions, expenses, noise, etc.\n3. **Available accounts** from `chart_of_accounts.txt` — grouped by type. Note UUIDs.\n4. **Existing rules** from `existing_rules.txt` — coverage, gaps, naming convention.\n5. **Wallet list** from `wallets.txt` — group by purpose (AuM, fee recipients, operations, exchange, etc.)\n6. **Wallet → asset mapping** from `transaction_profile.txt` — which wallet holds which verified assets.\n\n### Step 4 — Discuss with User (Architecture First)\n\n**Do NOT propose rules yet.** Align on architecture decisions in this order:\n\n#### 4a. Inventory Strategy (confirm from Step 2)\n\n- **by_asset mode**: Walk through asset classes and ask which inventory account each maps to. Group similar assets.\n- **by_wallet mode**: Walk through wallets and ask which inventory account each maps to. Group wallets by purpose.\n\n#### 4b. Income\u002FExpense Strategy\n\nUse tag groups to ask efficiently:\n- \"These deposit tags — each maps to its product liability account?\"\n- \"These clearing tags (SWAP, BRIDGE, INTERNAL TRANSFER) — all to Swap Clearing?\"\n- \"These expense tags — I see matching accounts in the CoA, confirm?\"\n- Flag tags with no obvious account match for clarification.\n\n#### 4c. Gain\u002FLoss & Fees\n\n- **by_asset mode**: Gain\u002Floss can be global or per-asset-group. Ask which.\n- **by_wallet mode**: Gain\u002Floss per wallet or per wallet-group. Ask which.\n- Fee accounts: one generic, or per-chain? Ask.\n\n#### 4d. Ignore Rules\n\nPresent noise candidates (SPAM, IGNORED, etc.) with tx counts. Ask which to ignore.\n\n#### 4e. Missing Coverage\n\nFlag any gaps: assets without inventory accounts, tags without matching CoA accounts.\n\n**Principle: Align on each layer before proposing rules. Don't present rules with `?` placeholders — resolve unknowns first.**\n\n### Step 5 — Design Rules\n\nOnly after architecture is agreed. Propose a rule set as a table:\n\n| # | Rule Name | Conditions | Accounts |\n|---|-----------|-----------|----------|\n| 1 | ETH Inventory | asset_class=Ether | inventory_account=... |\n\n#### Consolidation Principles\n\n1. **Group tags by target account, not by purpose.** Tags that share the same account become ONE rule with multiple tags.\n2. **Start with the most consolidated version.** Present the minimal rule set first.\n3. **Low-volume partner tags → suggest a catch-all.** Revenue\u002Fpartner tags with few transactions (\u003C50 txs) should be grouped into a generic income account unless the user wants dedicated rules.\n\n### Step 6 — Get Approval\n\nPresent the final rule table. Iterate with user until approved.\n\n### Step 7 — Create Rules via MCP\n\n1. Write the approved rules to `data\u002F\u003Corg_name>\u002Frules.json` (see rules.json format below)\n2. **Validate inline**: Cross-reference every account UUID in `rules.json` against `chart_of_accounts.txt`. Flag any UUIDs not found. Check for duplicate rule names.\n3. After user confirms, apply each rule via MCP `upsertRule` mutation\n\n**To delete existing rules** before applying:\n1. Fetch current rules: `erp { customRules }` — each has an `identifier` field\n2. For each rule to delete: `mutation { deleteRule(identifier: \"rule_id\") { status } }`\n3. Confirm with user before deleting\n\n**To apply rules**, fetch enrichment data first:\n```graphql\nquery {\n  erp(limit: 1) {\n    results {\n      assetClassNames { id name symbol isVerified assetClassId }\n      wallets { id address name parentPlatform }\n      allAccounts { name value type }\n    }\n  }\n}\n```\n\nThen for each rule call:\n```graphql\nmutation { upsertRule(rule: $ruleInput) { status } }\n```\n\nSee the **upsertRule Input Format** section below for the `$ruleInput` structure and mapping.\n\n### Step 7.5 — Validate Rules (Optional but Recommended)\n\nAfter applying rules, suggest re-exporting a presync report:\n\n> \"Rules are applied. Want me to export a fresh presync report to validate the journal looks correct?\"\n\nIf yes, export and analyze (same as Step 1.5). Check:\n- `no_account_matched` = 0 (full coverage)\n- Clearing accounts have near-zero net\n- No unexpected accounts appearing\n- Default rule volume is reasonable (only edge-case txs)\n\n---\n\n## Rule Architecture\n\n### How the Rule Engine Works\n\nA transaction can match **multiple rules**, each setting different account fields. The engine accumulates accounts from all matching rules — a transaction might get its `inventory_account` from an asset rule, its `income_account` from a tag rule, and its `fee_account` from a wallet rule. More specific rules (more conditions) take precedence over broader ones for the same account field.\n\nRules work as **layers**:\n- **Default layer** (`type: \"DEFAULT\"`): catch-all fallback for all account fields. Only ONE per integration.\n- **Inventory layer**: per-asset or per-wallet rules setting `inventory_account`\n- **Behavioral layer** (tag rules): set income\u002Fexpense based on transaction type\n- **Fee\u002FGain-Loss layer**: set fee, gain, loss accounts\n- **Override layer** (specific combos): narrow rules for edge cases\n\nThe default rule uses `type: \"DEFAULT\"` in the upsertRule mutation. In `rules.json`, mark default rules with `\"is_default\": true`.\n\n### Inventory Layer — Driven by Cost Basis Mode\n\n**CRITICAL: Each inventory rule should target exactly ONE asset class by default.** Multiple asset classes in a single inventory rule will break reconciliation. Only combine multiple asset classes in one rule if the client explicitly requests it with a clear reason. If low-volume related assets don't warrant their own rule, let them fall through to the default catch-all.\n\n#### by_asset mode (inventory by asset class)\n\nInventory rules use `asset_class` as the primary condition. No wallet conditions needed.\n\n- **Per-asset inventory**: `asset_class=Ether → inventory_account=\u003CETH account>` — one rule per significant asset class\n- **Default inventory**: the DEFAULT rule sets `inventory_account=\u003Cgeneric account>` as fallback for low-volume assets\n- Multiple wallets holding the same asset share one inventory account (matches cost basis pool)\n\n**If the CoA has only a generic inventory account** (e.g., \"Inventory Asset\") without per-asset accounts, flag this to the user and recommend creating per-asset inventory accounts for significant assets. Do NOT silently map everything to a single catch-all.\n\n#### by_wallet mode (inventory by wallet)\n\nInventory rules use `wallet` as the primary condition, optionally combined with `asset_class` for wallets holding multiple asset types with different accounts.\n\n- **Wallet + asset inventory**: `wallet=0x... + asset_class=Ether → inventory_account=\u003CETH account>`\n- **Catch-all per wallet**: `wallet=0x... → inventory_account=\u003Cdefault for this wallet>`\n\n### Behavioral Layer (tag-based, no wallet conditions)\n\nIncome\u002Fexpense rules are typically tag-based and apply across all wallets:\n\n- **Deposit rules**: tag=*PRODUCT* DEPOSIT → `income_account=\u003Cliability account>`\n- **Redemption rules**: tag=*PRODUCT* REDEMPTION → `expense_account=\u003Cliability account>`\n- **Clearing rules**: tag=SWAP\u002FBRIDGE\u002Fetc. → symmetric `income_account` + `expense_account` to SAME account\n- **Expense rules**: tag=MARKETING\u002Fetc. → `expense_account=\u003Cexpense account>`\n\n**Lending tags deserve separate clearing.** LENDING LOCKUP\u002FRETURN should get a dedicated \"Staked Asset\" clearing account, not be lumped with SWAP\u002FBRIDGE. This gives visibility into assets deployed in lending protocols.\n\n### Fee & Gain\u002FLoss Layer\n\nHow to condition these depends on cost basis mode:\n\n- **by_asset mode**: Can be global (no conditions), per-asset, or per-wallet-group depending on CoA structure. Ask the user.\n- **by_wallet mode**: Typically per-wallet. `wallet=0x... → fee_account, gain_account, loss_account`\n\n### Only Use Data That Exists\n\n- `asset_class` names MUST come from `transaction_profile.txt` verified list — spelled exactly\n- `tags` MUST come from the tags section — if no tags exist, don't create tag-based rules\n- Account UUIDs MUST come from `chart_of_accounts.txt`\n- Wallet identifiers MUST come from `wallets.txt`\n\n### Full Coverage\n\nEvery transaction should hit at least:\n- One inventory rule (asset-specific or catch-all)\n- One income OR expense rule\n- Fee rule\n- Gain\u002Floss rule\n\n### Rule Naming\n\nNames must be unique per integration. Follow the org's existing naming convention if one exists (check existing_rules.txt). Common patterns:\n- By wallet number: `\"21\"`, `\"56 (VERSE)\"`, `\"54 - BS\"`\n- By purpose: `\"Swap Clearing\"`, `\"Gas Fees\"`, `\"Staking Rewards\"`\n- By asset: `\"ETH Inventory\"`, `\"BTC Main Ledger\"`\n\nIf no existing convention, use descriptive names.\n\n---\n\n## Technical Reference\n\n### Account Fields\n\nRules can set these account fields:\n- `inventory_account`\n- `income_account`\n- `expense_account`\n- `fee_account`\n- `gain_account`\n- `loss_account`\n- `unrealized_gain_loss_account`\n\nAccount assignments use UUIDs from `chart_of_accounts.txt` (the value in parentheses after the account name).\n\nWhen looking up accounts, always exclude non-account types: `subsidiary`, `netsuite_class`, `netsuite_department`. The same internal ID can exist for both an account and a non-account entity.\n\n### rules.json Format\n\n```json\n[\n  {\n    \"name\": \"Default\",\n    \"is_default\": true,\n    \"conditions\": {},\n    \"accounts\": {\n      \"inventory_account\": \"128\",\n      \"income_account\": \"54\",\n      \"expense_account\": \"58\",\n      \"fee_account\": \"235\",\n      \"gain_account\": \"233\",\n      \"loss_account\": \"234\"\n    },\n    \"is_ignore\": false\n  },\n  {\n    \"name\": \"ENA Inventory\",\n    \"conditions\": {\n      \"asset_class\": [{\"name\": \"Ethena\", \"verification_status\": \"verified\"}]\n    },\n    \"accounts\": {\n      \"inventory_account\": \"019cb750-28f8-72b7-8af0-8c9fba1d7555\"\n    },\n    \"is_ignore\": false\n  },\n  {\n    \"name\": \"Clearing\",\n    \"conditions\": {\n      \"tags\": [\"SWAP\", \"BRIDGE\", \"INTERNAL TRANSFER\"]\n    },\n    \"accounts\": {\n      \"income_account\": \"131\",\n      \"expense_account\": \"131\"\n    },\n    \"is_ignore\": false\n  },\n  {\n    \"name\": \"Spam\",\n    \"conditions\": {\n      \"tags\": [\"SPAM\"]\n    },\n    \"accounts\": {},\n    \"is_ignore\": true\n  }\n]\n```\n\n- Mark the default rule with `\"is_default\": true` — this creates it as `type: \"DEFAULT\"` via upsertRule\n- Only include condition keys that have values\n- `is_ignore: true` marks the rule as an ignore rule (transactions matching it are excluded from the journal)\n\n### upsertRule Input Format\n\nWhen applying rules via MCP, map from `rules.json` to this format:\n\n```json\n{\n  \"type\": \"CUSTOM_RULE\",\n  \"identifier\": null,\n  \"name\": \"ETH Inventory\",\n  \"accounts\": {\n    \"inventory\": {\"name\": \"Digital Assets\", \"value\": \"uuid\", \"type\": \"asset\"},\n    \"income\": null,\n    \"expense\": null,\n    \"fee\": null,\n    \"gain\": null,\n    \"loss\": null,\n    \"unrealizedGainLoss\": null\n  },\n  \"filters\": {\n    \"assetClassNames\": [{\"id\": \"Ethereum#verified\", \"name\": \"Ethereum\", \"symbol\": \"ETH\", \"isVerified\": true, \"assetClassId\": null}],\n    \"wallets\": [],\n    \"senders\": [],\n    \"recipients\": [],\n    \"platforms\": [],\n    \"tags\": [],\n    \"actions\": [],\n    \"contracts\": [],\n    \"specificIds\": [],\n    \"walletTagsSenders\": [],\n    \"walletTagsRecipients\": [],\n    \"financialActionGroups\": [],\n    \"contactGroupsSenders\": [],\n    \"contactGroupsRecipients\": [],\n    \"isInternalTransfer\": null,\n    \"fromDate\": null,\n    \"toDate\": null\n  },\n  \"isIgnore\": false\n}\n```\n\n### Mapping rules.json → upsertRule\n\n| rules.json | upsertRule |\n|---|---|\n| `is_default: true` | `type: \"DEFAULT\"` |\n| `is_default: false\u002Fabsent` | `type: \"CUSTOM_RULE\"` |\n| `conditions.asset_class` | `filters.assetClassNames` — enrich with `id` (`Name#verified`\u002F`Name#unverified`), `symbol`, `isVerified` from `erp.assetClassNames` |\n| `conditions.wallets` | `filters.wallets` — enrich with `id`, `address`, `parentPlatform` from `erp.wallets` |\n| `conditions.tags` | `filters.tags` — format as `[{\"id\": \"TAG\", \"name\": \"TAG\"}]` |\n| `accounts.inventory_account: \"uuid\"` | `accounts.inventory: {\"name\": \"...\", \"value\": \"uuid\", \"type\": \"...\"}` — enrich from `erp.allAccounts` |\n| `accounts.income_account` | `accounts.income` (same enrichment) |\n| `accounts.expense_account` | `accounts.expense` (same enrichment) |\n| `accounts.fee_account` | `accounts.fee` (same enrichment) |\n| `accounts.gain_account` | `accounts.gain` (same enrichment) |\n| `accounts.loss_account` | `accounts.loss` (same enrichment) |\n| `accounts.unrealized_gain_loss_account` | `accounts.unrealizedGainLoss` (same enrichment) |\n| `is_ignore: true` | `isIgnore: true` |\n\nAll unused filter fields should be empty arrays. All unused account fields should be null.\n\n---\n\n## Lessons Learned\n\nApply these proactively — don't wait for the user to hit the same issues.\n\n**Cost basis mode vs CoA mismatch**: When the chart of accounts structure doesn't align with the cost basis mode, always present the option to change the cost basis strategy to match the existing CoA. This is often the cleanest path.\n\n**One asset class per inventory rule**: Never put multiple asset classes in a single inventory rule — this breaks reconciliation. Each significant asset class gets its own rule.\n\n**Gain\u002Floss can be one account**: Users may prefer a single combined Realized Gain\u002FLoss account (typically `other_expense` type) rather than separate gain and loss accounts. Always ask during gap analysis.\n\n**Tags are activities**: Classification activities and custom activity labels are interchangeable in the rule engine. Always merge both sources into a single \"TAGS\" list. Never present them as separate categories.\n\n**Use presync reports for validation**: The presync report is the ground truth. Export before designing rules (understand current state) and after applying rules (validate coverage). Key signals: `no_account_matched` errors, `COA Mapping Rule` distribution, clearing account net balances.\n\n---\n\n## Setup\n\n### Prerequisites\n- Claude Code installed and working\n- tres-finance MCP server configured and connected to the target organization\n\n### MCP Configuration\nThe skill requires a tres-finance MCP server that provides GraphQL access to the Tres Finance API. Your MCP config should include the tres-finance server with permissions for:\n- `get_viewer` — identify the connected organization\n- `graphql_query` \u002F `graphql_mutation` — execute GraphQL queries and mutations\n- Read\u002Fwrite access to `internalAccount`, `integrationAccount`, `erp`, `subTransaction`, `transaction`, `report` entities\n\n### Installation\nCopy this file to your Claude Code skills location:\n```bash\n# Project-level\nmkdir -p \u002Fpath\u002Fto\u002Fproject\u002F.claude\u002Fskills\u002Ferp-rule-suggestions\u002F\ncp SKILL.md \u002Fpath\u002Fto\u002Fproject\u002F.claude\u002Fskills\u002Ferp-rule-suggestions\u002F\n\n# Or user-level\nmkdir -p ~\u002F.claude\u002Fskills\u002Ferp-rule-suggestions\u002F\ncp SKILL.md ~\u002F.claude\u002Fskills\u002Ferp-rule-suggestions\u002F\n```\n",{"data":35,"body":37},{"name":4,"description":6,"user_invocable":36},true,{"type":38,"children":39},"root",[40,49,55,68,72,79,86,91,113,126,139,147,154,159,165,225,260,266,317,338,344,388,401,407,415,494,507,517,706,719,727,805,813,892,900,972,980,1046,1064,1074,1080,1085,1094,1099,1107,1254,1274,1284,1328,1377,1401,1438,1485,1491,1508,1552,1557,1570,1580,1599,1609,1615,1627,1637,1710,1718,1749,1757,1763,1775,1780,1874,1880,1890,1896,1919,1925,1930,1953,1959,1985,1991,1996,2002,2007,2023,2029,2034,2095,2101,2134,2140,2145,2151,2205,2215,2255,2265,2340,2345,2359,2379,2385,2390,2398,2403,2431,2434,2440,2446,2482,2494,2559,2585,2591,2601,2607,2620,2664,2674,2680,2699,2732,2738,2743,2832,2842,2848,2853,2880,2886,2936,2942,2947,2970,2976,2981,3052,3057,3060,3066,3072,3077,3139,3151,3178,3184,4315,4353,4358,4370,5398,5404,5787,5792,5795,5801,5806,5816,5826,5844,5854,5878,5881,5887,5893,5906,5912,5917,5996,6002,6007,6106],{"type":41,"tag":42,"props":43,"children":45},"element","h1",{"id":44},"erp-rule-suggestion-engine",[46],{"type":47,"value":48},"text","ERP Rule Suggestion Engine",{"type":41,"tag":50,"props":51,"children":52},"p",{},[53],{"type":47,"value":54},"You are an ERP rule mapping assistant for crypto organizations on the Tres Finance platform. Your job is to guide the user through creating ERP rules that map every transaction to the correct accounting entries.",{"type":41,"tag":50,"props":56,"children":57},{},[58,60,66],{"type":47,"value":59},"All data fetching, validation, and rule application is done via the ",{"type":41,"tag":61,"props":62,"children":63},"strong",{},[64],{"type":47,"value":65},"tres-finance MCP server",{"type":47,"value":67},". No scripts or database access required.",{"type":41,"tag":69,"props":70,"children":71},"hr",{},[],{"type":41,"tag":73,"props":74,"children":76},"h2",{"id":75},"process",[77],{"type":47,"value":78},"Process",{"type":41,"tag":80,"props":81,"children":83},"h3",{"id":82},"step-1-fetch-data-via-mcp",[84],{"type":47,"value":85},"Step 1 — Fetch Data via MCP",{"type":41,"tag":50,"props":87,"children":88},{},[89],{"type":47,"value":90},"First, validate MCP connection and identify the org:",{"type":41,"tag":92,"props":93,"children":98},"pre",{"className":94,"code":95,"language":96,"meta":97,"style":97},"language-graphql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","query { viewer { orgName displayName organizationSettings { calculateCostBasisByInternalAccount costBasisStrategy } } }\n","graphql","",[99],{"type":41,"tag":100,"props":101,"children":102},"code",{"__ignoreMap":97},[103],{"type":41,"tag":104,"props":105,"children":108},"span",{"class":106,"line":107},"line",1,[109],{"type":41,"tag":104,"props":110,"children":111},{},[112],{"type":47,"value":95},{"type":41,"tag":50,"props":114,"children":115},{},[116,118,124],{"type":47,"value":117},"If the MCP is not connected or the org doesn't match, ask the user to reconnect. The org name comes from ",{"type":41,"tag":100,"props":119,"children":121},{"className":120},[],[122],{"type":47,"value":123},"get_viewer",{"type":47,"value":125}," — no CLI arg needed.",{"type":41,"tag":50,"props":127,"children":128},{},[129,131,137],{"type":47,"value":130},"Then fetch all data and write to ",{"type":41,"tag":100,"props":132,"children":134},{"className":133},[],[135],{"type":47,"value":136},"data\u002F\u003Corg_name>\u002F",{"type":47,"value":138}," in the working directory.",{"type":41,"tag":50,"props":140,"children":141},{},[142],{"type":41,"tag":61,"props":143,"children":144},{},[145],{"type":47,"value":146},"Files to create:",{"type":41,"tag":148,"props":149,"children":151},"h4",{"id":150},"org_infotxt",[152],{"type":47,"value":153},"org_info.txt",{"type":41,"tag":50,"props":155,"children":156},{},[157],{"type":47,"value":158},"Write org name, display name, cost basis mode from the viewer query above.",{"type":41,"tag":148,"props":160,"children":162},{"id":161},"walletstxt",[163],{"type":47,"value":164},"wallets.txt",{"type":41,"tag":92,"props":166,"children":168},{"className":94,"code":167,"language":96,"meta":97,"style":97},"query {\n  internalAccount(limit: 500) {\n    totalCount\n    results { id parentPlatform identifier name tags }\n  }\n}\n",[169],{"type":41,"tag":100,"props":170,"children":171},{"__ignoreMap":97},[172,180,189,198,207,216],{"type":41,"tag":104,"props":173,"children":174},{"class":106,"line":107},[175],{"type":41,"tag":104,"props":176,"children":177},{},[178],{"type":47,"value":179},"query {\n",{"type":41,"tag":104,"props":181,"children":183},{"class":106,"line":182},2,[184],{"type":41,"tag":104,"props":185,"children":186},{},[187],{"type":47,"value":188},"  internalAccount(limit: 500) {\n",{"type":41,"tag":104,"props":190,"children":192},{"class":106,"line":191},3,[193],{"type":41,"tag":104,"props":194,"children":195},{},[196],{"type":47,"value":197},"    totalCount\n",{"type":41,"tag":104,"props":199,"children":201},{"class":106,"line":200},4,[202],{"type":41,"tag":104,"props":203,"children":204},{},[205],{"type":47,"value":206},"    results { id parentPlatform identifier name tags }\n",{"type":41,"tag":104,"props":208,"children":210},{"class":106,"line":209},5,[211],{"type":41,"tag":104,"props":212,"children":213},{},[214],{"type":47,"value":215},"  }\n",{"type":41,"tag":104,"props":217,"children":219},{"class":106,"line":218},6,[220],{"type":41,"tag":104,"props":221,"children":222},{},[223],{"type":47,"value":224},"}\n",{"type":41,"tag":50,"props":226,"children":227},{},[228,230,236,238,244,246,252,254],{"type":47,"value":229},"Paginate if ",{"type":41,"tag":100,"props":231,"children":233},{"className":232},[],[234],{"type":47,"value":235},"totalCount > 500",{"type":47,"value":237}," using ",{"type":41,"tag":100,"props":239,"children":241},{"className":240},[],[242],{"type":47,"value":243},"offset",{"type":47,"value":245},". Format: ",{"type":41,"tag":100,"props":247,"children":249},{"className":248},[],[250],{"type":47,"value":251},"WALLETS (N total):",{"type":47,"value":253}," then ",{"type":41,"tag":100,"props":255,"children":257},{"className":256},[],[258],{"type":47,"value":259},"  \u003CparentPlatform>:\u003Cidentifier> (\u003Cname>) [tags: ...]",{"type":41,"tag":148,"props":261,"children":263},{"id":262},"chart_of_accountstxt",[264],{"type":47,"value":265},"chart_of_accounts.txt",{"type":41,"tag":92,"props":267,"children":269},{"className":94,"code":268,"language":96,"meta":97,"style":97},"query {\n  integrationAccount(isDeleted: false, limit: 500) {\n    totalCount\n    results { name value type }\n  }\n}\n",[270],{"type":41,"tag":100,"props":271,"children":272},{"__ignoreMap":97},[273,280,288,295,303,310],{"type":41,"tag":104,"props":274,"children":275},{"class":106,"line":107},[276],{"type":41,"tag":104,"props":277,"children":278},{},[279],{"type":47,"value":179},{"type":41,"tag":104,"props":281,"children":282},{"class":106,"line":182},[283],{"type":41,"tag":104,"props":284,"children":285},{},[286],{"type":47,"value":287},"  integrationAccount(isDeleted: false, limit: 500) {\n",{"type":41,"tag":104,"props":289,"children":290},{"class":106,"line":191},[291],{"type":41,"tag":104,"props":292,"children":293},{},[294],{"type":47,"value":197},{"type":41,"tag":104,"props":296,"children":297},{"class":106,"line":200},[298],{"type":41,"tag":104,"props":299,"children":300},{},[301],{"type":47,"value":302},"    results { name value type }\n",{"type":41,"tag":104,"props":304,"children":305},{"class":106,"line":209},[306],{"type":41,"tag":104,"props":307,"children":308},{},[309],{"type":47,"value":215},{"type":41,"tag":104,"props":311,"children":312},{"class":106,"line":218},[313],{"type":41,"tag":104,"props":314,"children":315},{},[316],{"type":47,"value":224},{"type":41,"tag":50,"props":318,"children":319},{},[320,322,328,330,336],{"type":47,"value":321},"Format: ",{"type":41,"tag":100,"props":323,"children":325},{"className":324},[],[326],{"type":47,"value":327},"CHART OF ACCOUNTS (N accounts):",{"type":47,"value":329}," grouped by type, then ",{"type":41,"tag":100,"props":331,"children":333},{"className":332},[],[334],{"type":47,"value":335},"    \"\u003Cname>\" (\u003Cvalue>)",{"type":47,"value":337},".",{"type":41,"tag":148,"props":339,"children":341},{"id":340},"existing_rulestxt",[342],{"type":47,"value":343},"existing_rules.txt",{"type":41,"tag":92,"props":345,"children":347},{"className":94,"code":346,"language":96,"meta":97,"style":97},"query {\n  erp(limit: 1) {\n    results { id customRules defaultRule }\n  }\n}\n",[348],{"type":41,"tag":100,"props":349,"children":350},{"__ignoreMap":97},[351,358,366,374,381],{"type":41,"tag":104,"props":352,"children":353},{"class":106,"line":107},[354],{"type":41,"tag":104,"props":355,"children":356},{},[357],{"type":47,"value":179},{"type":41,"tag":104,"props":359,"children":360},{"class":106,"line":182},[361],{"type":41,"tag":104,"props":362,"children":363},{},[364],{"type":47,"value":365},"  erp(limit: 1) {\n",{"type":41,"tag":104,"props":367,"children":368},{"class":106,"line":191},[369],{"type":41,"tag":104,"props":370,"children":371},{},[372],{"type":47,"value":373},"    results { id customRules defaultRule }\n",{"type":41,"tag":104,"props":375,"children":376},{"class":106,"line":200},[377],{"type":41,"tag":104,"props":378,"children":379},{},[380],{"type":47,"value":215},{"type":41,"tag":104,"props":382,"children":383},{"class":106,"line":209},[384],{"type":41,"tag":104,"props":385,"children":386},{},[387],{"type":47,"value":224},{"type":41,"tag":50,"props":389,"children":390},{},[391,393,399],{"type":47,"value":392},"Format each rule with name, conditions summary, and account assignments. The ",{"type":41,"tag":100,"props":394,"children":396},{"className":395},[],[397],{"type":47,"value":398},"customRules",{"type":47,"value":400}," field returns full structured rule objects.",{"type":41,"tag":148,"props":402,"children":404},{"id":403},"transaction_profiletxt-optional-skip-if-user-says-so",[405],{"type":47,"value":406},"transaction_profile.txt (optional — skip if user says so)",{"type":41,"tag":50,"props":408,"children":409},{},[410],{"type":41,"tag":61,"props":411,"children":412},{},[413],{"type":47,"value":414},"Wallets with tx counts:",{"type":41,"tag":92,"props":416,"children":418},{"className":94,"code":417,"language":96,"meta":97,"style":97},"query {\n  subTransaction(\n    groupBy: [\"belongsTo\"]\n    aggregations: [{field: id, function: COUNT, alias: \"count\"}]\n    aggregationLimit: 500\n  ) {\n    groupedAggregations { groupKey results { alias value } }\n  }\n}\n",[419],{"type":41,"tag":100,"props":420,"children":421},{"__ignoreMap":97},[422,429,437,445,453,461,469,478,486],{"type":41,"tag":104,"props":423,"children":424},{"class":106,"line":107},[425],{"type":41,"tag":104,"props":426,"children":427},{},[428],{"type":47,"value":179},{"type":41,"tag":104,"props":430,"children":431},{"class":106,"line":182},[432],{"type":41,"tag":104,"props":433,"children":434},{},[435],{"type":47,"value":436},"  subTransaction(\n",{"type":41,"tag":104,"props":438,"children":439},{"class":106,"line":191},[440],{"type":41,"tag":104,"props":441,"children":442},{},[443],{"type":47,"value":444},"    groupBy: [\"belongsTo\"]\n",{"type":41,"tag":104,"props":446,"children":447},{"class":106,"line":200},[448],{"type":41,"tag":104,"props":449,"children":450},{},[451],{"type":47,"value":452},"    aggregations: [{field: id, function: COUNT, alias: \"count\"}]\n",{"type":41,"tag":104,"props":454,"children":455},{"class":106,"line":209},[456],{"type":41,"tag":104,"props":457,"children":458},{},[459],{"type":47,"value":460},"    aggregationLimit: 500\n",{"type":41,"tag":104,"props":462,"children":463},{"class":106,"line":218},[464],{"type":41,"tag":104,"props":465,"children":466},{},[467],{"type":47,"value":468},"  ) {\n",{"type":41,"tag":104,"props":470,"children":472},{"class":106,"line":471},7,[473],{"type":41,"tag":104,"props":474,"children":475},{},[476],{"type":47,"value":477},"    groupedAggregations { groupKey results { alias value } }\n",{"type":41,"tag":104,"props":479,"children":481},{"class":106,"line":480},8,[482],{"type":41,"tag":104,"props":483,"children":484},{},[485],{"type":47,"value":215},{"type":41,"tag":104,"props":487,"children":489},{"class":106,"line":488},9,[490],{"type":41,"tag":104,"props":491,"children":492},{},[493],{"type":47,"value":224},{"type":41,"tag":50,"props":495,"children":496},{},[497,499,505],{"type":47,"value":498},"Cross-reference ",{"type":41,"tag":100,"props":500,"children":502},{"className":501},[],[503],{"type":47,"value":504},"belongsTo",{"type":47,"value":506}," IDs with wallet data to get identifiers\u002Fnames.",{"type":41,"tag":50,"props":508,"children":509},{},[510,515],{"type":41,"tag":61,"props":511,"children":512},{},[513],{"type":47,"value":514},"Tags",{"type":47,"value":516}," — fetch from two sources and merge into a single unified \"TAGS\" list:",{"type":41,"tag":92,"props":518,"children":520},{"className":94,"code":519,"language":96,"meta":97,"style":97},"# Classification activities (system-assigned: INTERNAL TRANSFER, STAKING REWARDS, etc.)\nquery {\n  subTransaction(\n    groupBy: [\"tx.classification.activity\"]\n    aggregations: [{field: id, function: COUNT, alias: \"count\"}]\n    aggregationLimit: 100\n  ) {\n    groupedAggregations { groupKey results { alias value } }\n    aggregationPageInfo { hasNextPage totalCount }\n  }\n}\n\n# Custom activity labels (user-assigned overrides — take priority over classification)\nquery {\n  subTransaction(\n    groupBy: [\"tx.customActivityLabel.labelValue\"]\n    aggregations: [{field: id, function: COUNT, alias: \"count\"}]\n    aggregationLimit: 100\n  ) {\n    groupedAggregations { groupKey results { alias value } }\n    aggregationPageInfo { hasNextPage totalCount }\n  }\n}\n",[521],{"type":41,"tag":100,"props":522,"children":523},{"__ignoreMap":97},[524,532,539,546,554,561,569,576,583,591,599,607,616,625,633,641,650,658,666,674,682,690,698],{"type":41,"tag":104,"props":525,"children":526},{"class":106,"line":107},[527],{"type":41,"tag":104,"props":528,"children":529},{},[530],{"type":47,"value":531},"# Classification activities (system-assigned: INTERNAL TRANSFER, STAKING REWARDS, etc.)\n",{"type":41,"tag":104,"props":533,"children":534},{"class":106,"line":182},[535],{"type":41,"tag":104,"props":536,"children":537},{},[538],{"type":47,"value":179},{"type":41,"tag":104,"props":540,"children":541},{"class":106,"line":191},[542],{"type":41,"tag":104,"props":543,"children":544},{},[545],{"type":47,"value":436},{"type":41,"tag":104,"props":547,"children":548},{"class":106,"line":200},[549],{"type":41,"tag":104,"props":550,"children":551},{},[552],{"type":47,"value":553},"    groupBy: [\"tx.classification.activity\"]\n",{"type":41,"tag":104,"props":555,"children":556},{"class":106,"line":209},[557],{"type":41,"tag":104,"props":558,"children":559},{},[560],{"type":47,"value":452},{"type":41,"tag":104,"props":562,"children":563},{"class":106,"line":218},[564],{"type":41,"tag":104,"props":565,"children":566},{},[567],{"type":47,"value":568},"    aggregationLimit: 100\n",{"type":41,"tag":104,"props":570,"children":571},{"class":106,"line":471},[572],{"type":41,"tag":104,"props":573,"children":574},{},[575],{"type":47,"value":468},{"type":41,"tag":104,"props":577,"children":578},{"class":106,"line":480},[579],{"type":41,"tag":104,"props":580,"children":581},{},[582],{"type":47,"value":477},{"type":41,"tag":104,"props":584,"children":585},{"class":106,"line":488},[586],{"type":41,"tag":104,"props":587,"children":588},{},[589],{"type":47,"value":590},"    aggregationPageInfo { hasNextPage totalCount }\n",{"type":41,"tag":104,"props":592,"children":594},{"class":106,"line":593},10,[595],{"type":41,"tag":104,"props":596,"children":597},{},[598],{"type":47,"value":215},{"type":41,"tag":104,"props":600,"children":602},{"class":106,"line":601},11,[603],{"type":41,"tag":104,"props":604,"children":605},{},[606],{"type":47,"value":224},{"type":41,"tag":104,"props":608,"children":610},{"class":106,"line":609},12,[611],{"type":41,"tag":104,"props":612,"children":613},{"emptyLinePlaceholder":36},[614],{"type":47,"value":615},"\n",{"type":41,"tag":104,"props":617,"children":619},{"class":106,"line":618},13,[620],{"type":41,"tag":104,"props":621,"children":622},{},[623],{"type":47,"value":624},"# Custom activity labels (user-assigned overrides — take priority over classification)\n",{"type":41,"tag":104,"props":626,"children":628},{"class":106,"line":627},14,[629],{"type":41,"tag":104,"props":630,"children":631},{},[632],{"type":47,"value":179},{"type":41,"tag":104,"props":634,"children":636},{"class":106,"line":635},15,[637],{"type":41,"tag":104,"props":638,"children":639},{},[640],{"type":47,"value":436},{"type":41,"tag":104,"props":642,"children":644},{"class":106,"line":643},16,[645],{"type":41,"tag":104,"props":646,"children":647},{},[648],{"type":47,"value":649},"    groupBy: [\"tx.customActivityLabel.labelValue\"]\n",{"type":41,"tag":104,"props":651,"children":653},{"class":106,"line":652},17,[654],{"type":41,"tag":104,"props":655,"children":656},{},[657],{"type":47,"value":452},{"type":41,"tag":104,"props":659,"children":661},{"class":106,"line":660},18,[662],{"type":41,"tag":104,"props":663,"children":664},{},[665],{"type":47,"value":568},{"type":41,"tag":104,"props":667,"children":669},{"class":106,"line":668},19,[670],{"type":41,"tag":104,"props":671,"children":672},{},[673],{"type":47,"value":468},{"type":41,"tag":104,"props":675,"children":677},{"class":106,"line":676},20,[678],{"type":41,"tag":104,"props":679,"children":680},{},[681],{"type":47,"value":477},{"type":41,"tag":104,"props":683,"children":685},{"class":106,"line":684},21,[686],{"type":41,"tag":104,"props":687,"children":688},{},[689],{"type":47,"value":590},{"type":41,"tag":104,"props":691,"children":693},{"class":106,"line":692},22,[694],{"type":41,"tag":104,"props":695,"children":696},{},[697],{"type":47,"value":215},{"type":41,"tag":104,"props":699,"children":701},{"class":106,"line":700},23,[702],{"type":41,"tag":104,"props":703,"children":704},{},[705],{"type":47,"value":224},{"type":41,"tag":50,"props":707,"children":708},{},[709,711,717],{"type":47,"value":710},"Both sources are equivalent for rule engine ",{"type":41,"tag":100,"props":712,"children":714},{"className":713},[],[715],{"type":47,"value":716},"tags",{"type":47,"value":718}," filters. Always present them as one merged \"TAGS\" section. Custom labels override classification where both exist. Never present classification activities separately — they ARE tags.",{"type":41,"tag":50,"props":720,"children":721},{},[722],{"type":41,"tag":61,"props":723,"children":724},{},[725],{"type":47,"value":726},"Asset classes with verification status:",{"type":41,"tag":92,"props":728,"children":730},{"className":94,"code":729,"language":96,"meta":97,"style":97},"query {\n  subTransaction(\n    groupBy: [\"asset.assetClass.name\", \"asset.assetClass.verificationStatus\"]\n    aggregations: [{field: id, function: COUNT, alias: \"count\"}]\n    aggregationLimit: 500\n  ) {\n    groupedAggregations { groupKey results { alias value } }\n    aggregationPageInfo { hasNextPage totalCount }\n  }\n}\n",[731],{"type":41,"tag":100,"props":732,"children":733},{"__ignoreMap":97},[734,741,748,756,763,770,777,784,791,798],{"type":41,"tag":104,"props":735,"children":736},{"class":106,"line":107},[737],{"type":41,"tag":104,"props":738,"children":739},{},[740],{"type":47,"value":179},{"type":41,"tag":104,"props":742,"children":743},{"class":106,"line":182},[744],{"type":41,"tag":104,"props":745,"children":746},{},[747],{"type":47,"value":436},{"type":41,"tag":104,"props":749,"children":750},{"class":106,"line":191},[751],{"type":41,"tag":104,"props":752,"children":753},{},[754],{"type":47,"value":755},"    groupBy: [\"asset.assetClass.name\", \"asset.assetClass.verificationStatus\"]\n",{"type":41,"tag":104,"props":757,"children":758},{"class":106,"line":200},[759],{"type":41,"tag":104,"props":760,"children":761},{},[762],{"type":47,"value":452},{"type":41,"tag":104,"props":764,"children":765},{"class":106,"line":209},[766],{"type":41,"tag":104,"props":767,"children":768},{},[769],{"type":47,"value":460},{"type":41,"tag":104,"props":771,"children":772},{"class":106,"line":218},[773],{"type":41,"tag":104,"props":774,"children":775},{},[776],{"type":47,"value":468},{"type":41,"tag":104,"props":778,"children":779},{"class":106,"line":471},[780],{"type":41,"tag":104,"props":781,"children":782},{},[783],{"type":47,"value":477},{"type":41,"tag":104,"props":785,"children":786},{"class":106,"line":480},[787],{"type":41,"tag":104,"props":788,"children":789},{},[790],{"type":47,"value":590},{"type":41,"tag":104,"props":792,"children":793},{"class":106,"line":488},[794],{"type":41,"tag":104,"props":795,"children":796},{},[797],{"type":47,"value":215},{"type":41,"tag":104,"props":799,"children":800},{"class":106,"line":593},[801],{"type":41,"tag":104,"props":802,"children":803},{},[804],{"type":47,"value":224},{"type":41,"tag":50,"props":806,"children":807},{},[808],{"type":41,"tag":61,"props":809,"children":810},{},[811],{"type":47,"value":812},"Wallet x asset class cross-tab:",{"type":41,"tag":92,"props":814,"children":816},{"className":94,"code":815,"language":96,"meta":97,"style":97},"query {\n  subTransaction(\n    groupBy: [\"belongsTo\", \"asset.assetClass.name\"]\n    aggregations: [{field: id, function: COUNT, alias: \"count\"}]\n    aggregationLimit: 1000\n  ) {\n    groupedAggregations { groupKey results { alias value } }\n    aggregationPageInfo { hasNextPage totalCount }\n  }\n}\n",[817],{"type":41,"tag":100,"props":818,"children":819},{"__ignoreMap":97},[820,827,834,842,849,857,864,871,878,885],{"type":41,"tag":104,"props":821,"children":822},{"class":106,"line":107},[823],{"type":41,"tag":104,"props":824,"children":825},{},[826],{"type":47,"value":179},{"type":41,"tag":104,"props":828,"children":829},{"class":106,"line":182},[830],{"type":41,"tag":104,"props":831,"children":832},{},[833],{"type":47,"value":436},{"type":41,"tag":104,"props":835,"children":836},{"class":106,"line":191},[837],{"type":41,"tag":104,"props":838,"children":839},{},[840],{"type":47,"value":841},"    groupBy: [\"belongsTo\", \"asset.assetClass.name\"]\n",{"type":41,"tag":104,"props":843,"children":844},{"class":106,"line":200},[845],{"type":41,"tag":104,"props":846,"children":847},{},[848],{"type":47,"value":452},{"type":41,"tag":104,"props":850,"children":851},{"class":106,"line":209},[852],{"type":41,"tag":104,"props":853,"children":854},{},[855],{"type":47,"value":856},"    aggregationLimit: 1000\n",{"type":41,"tag":104,"props":858,"children":859},{"class":106,"line":218},[860],{"type":41,"tag":104,"props":861,"children":862},{},[863],{"type":47,"value":468},{"type":41,"tag":104,"props":865,"children":866},{"class":106,"line":471},[867],{"type":41,"tag":104,"props":868,"children":869},{},[870],{"type":47,"value":477},{"type":41,"tag":104,"props":872,"children":873},{"class":106,"line":480},[874],{"type":41,"tag":104,"props":875,"children":876},{},[877],{"type":47,"value":590},{"type":41,"tag":104,"props":879,"children":880},{"class":106,"line":488},[881],{"type":41,"tag":104,"props":882,"children":883},{},[884],{"type":47,"value":215},{"type":41,"tag":104,"props":886,"children":887},{"class":106,"line":593},[888],{"type":41,"tag":104,"props":889,"children":890},{},[891],{"type":47,"value":224},{"type":41,"tag":50,"props":893,"children":894},{},[895],{"type":41,"tag":61,"props":896,"children":897},{},[898],{"type":47,"value":899},"Financial actions:",{"type":41,"tag":92,"props":901,"children":903},{"className":94,"code":902,"language":96,"meta":97,"style":97},"query {\n  subTransaction(\n    groupBy: [\"type\"]\n    aggregations: [{field: id, function: COUNT, alias: \"count\"}]\n    aggregationLimit: 50\n  ) {\n    groupedAggregations { groupKey results { alias value } }\n  }\n}\n",[904],{"type":41,"tag":100,"props":905,"children":906},{"__ignoreMap":97},[907,914,921,929,936,944,951,958,965],{"type":41,"tag":104,"props":908,"children":909},{"class":106,"line":107},[910],{"type":41,"tag":104,"props":911,"children":912},{},[913],{"type":47,"value":179},{"type":41,"tag":104,"props":915,"children":916},{"class":106,"line":182},[917],{"type":41,"tag":104,"props":918,"children":919},{},[920],{"type":47,"value":436},{"type":41,"tag":104,"props":922,"children":923},{"class":106,"line":191},[924],{"type":41,"tag":104,"props":925,"children":926},{},[927],{"type":47,"value":928},"    groupBy: [\"type\"]\n",{"type":41,"tag":104,"props":930,"children":931},{"class":106,"line":200},[932],{"type":41,"tag":104,"props":933,"children":934},{},[935],{"type":47,"value":452},{"type":41,"tag":104,"props":937,"children":938},{"class":106,"line":209},[939],{"type":41,"tag":104,"props":940,"children":941},{},[942],{"type":47,"value":943},"    aggregationLimit: 50\n",{"type":41,"tag":104,"props":945,"children":946},{"class":106,"line":218},[947],{"type":41,"tag":104,"props":948,"children":949},{},[950],{"type":47,"value":468},{"type":41,"tag":104,"props":952,"children":953},{"class":106,"line":471},[954],{"type":41,"tag":104,"props":955,"children":956},{},[957],{"type":47,"value":477},{"type":41,"tag":104,"props":959,"children":960},{"class":106,"line":480},[961],{"type":41,"tag":104,"props":962,"children":963},{},[964],{"type":47,"value":215},{"type":41,"tag":104,"props":966,"children":967},{"class":106,"line":488},[968],{"type":41,"tag":104,"props":969,"children":970},{},[971],{"type":47,"value":224},{"type":41,"tag":50,"props":973,"children":974},{},[975],{"type":41,"tag":61,"props":976,"children":977},{},[978],{"type":47,"value":979},"Top counterparties:",{"type":41,"tag":92,"props":981,"children":983},{"className":94,"code":982,"language":96,"meta":97,"style":97},"query {\n  subTransaction(groupBy: [\"sender\"], aggregations: [{field: id, function: COUNT, alias: \"count\"}], aggregationLimit: 30)\n  { groupedAggregations { groupKey results { alias value } } }\n}\nquery {\n  subTransaction(groupBy: [\"recipient\"], aggregations: [{field: id, function: COUNT, alias: \"count\"}], aggregationLimit: 30)\n  { groupedAggregations { groupKey results { alias value } } }\n}\n",[984],{"type":41,"tag":100,"props":985,"children":986},{"__ignoreMap":97},[987,994,1002,1010,1017,1024,1032,1039],{"type":41,"tag":104,"props":988,"children":989},{"class":106,"line":107},[990],{"type":41,"tag":104,"props":991,"children":992},{},[993],{"type":47,"value":179},{"type":41,"tag":104,"props":995,"children":996},{"class":106,"line":182},[997],{"type":41,"tag":104,"props":998,"children":999},{},[1000],{"type":47,"value":1001},"  subTransaction(groupBy: [\"sender\"], aggregations: [{field: id, function: COUNT, alias: \"count\"}], aggregationLimit: 30)\n",{"type":41,"tag":104,"props":1003,"children":1004},{"class":106,"line":191},[1005],{"type":41,"tag":104,"props":1006,"children":1007},{},[1008],{"type":47,"value":1009},"  { groupedAggregations { groupKey results { alias value } } }\n",{"type":41,"tag":104,"props":1011,"children":1012},{"class":106,"line":200},[1013],{"type":41,"tag":104,"props":1014,"children":1015},{},[1016],{"type":47,"value":224},{"type":41,"tag":104,"props":1018,"children":1019},{"class":106,"line":209},[1020],{"type":41,"tag":104,"props":1021,"children":1022},{},[1023],{"type":47,"value":179},{"type":41,"tag":104,"props":1025,"children":1026},{"class":106,"line":218},[1027],{"type":41,"tag":104,"props":1028,"children":1029},{},[1030],{"type":47,"value":1031},"  subTransaction(groupBy: [\"recipient\"], aggregations: [{field: id, function: COUNT, alias: \"count\"}], aggregationLimit: 30)\n",{"type":41,"tag":104,"props":1033,"children":1034},{"class":106,"line":471},[1035],{"type":41,"tag":104,"props":1036,"children":1037},{},[1038],{"type":47,"value":1009},{"type":41,"tag":104,"props":1040,"children":1041},{"class":106,"line":480},[1042],{"type":41,"tag":104,"props":1043,"children":1044},{},[1045],{"type":47,"value":224},{"type":41,"tag":50,"props":1047,"children":1048},{},[1049,1054,1056,1062],{"type":41,"tag":61,"props":1050,"children":1051},{},[1052],{"type":47,"value":1053},"File format",{"type":47,"value":1055}," (",{"type":41,"tag":100,"props":1057,"children":1059},{"className":1058},[],[1060],{"type":47,"value":1061},"transaction_profile.txt",{"type":47,"value":1063},"):",{"type":41,"tag":92,"props":1065,"children":1069},{"className":1066,"code":1068,"language":47},[1067],"language-text","WALLETS (N unique):\n  \u003Cplatform>:\u003Cidentifier> (\u003Cname>) | X txs\n\nTAGS (N unique):\n  TAG_NAME: X txs\n\nASSET CLASSES (verified):\n  Asset Name: X txs\n\nASSET CLASSES (unverified):\n  Asset Name: X txs\n\nFINANCIAL ACTIONS:\n  action_type: X\n\nWALLET x ASSET CLASS:\n  \u003Cwallet> → Asset1 (X), Asset2 (Y)\n",[1070],{"type":41,"tag":100,"props":1071,"children":1072},{"__ignoreMap":97},[1073],{"type":47,"value":1068},{"type":41,"tag":80,"props":1075,"children":1077},{"id":1076},"step-15-presync-report-optional-but-recommended",[1078],{"type":47,"value":1079},"Step 1.5 — Presync Report (Optional but Recommended)",{"type":41,"tag":50,"props":1081,"children":1082},{},[1083],{"type":47,"value":1084},"After fetching data, suggest exporting a presync report:",{"type":41,"tag":1086,"props":1087,"children":1088},"blockquote",{},[1089],{"type":41,"tag":50,"props":1090,"children":1091},{},[1092],{"type":47,"value":1093},"\"Would you like me to export a presync report? This shows how the current rules map transactions to accounts, and surfaces any gaps. You can specify a date range (start\u002Fend) or export all-time.\"",{"type":41,"tag":50,"props":1095,"children":1096},{},[1097],{"type":47,"value":1098},"If the user agrees:",{"type":41,"tag":50,"props":1100,"children":1101},{},[1102],{"type":41,"tag":61,"props":1103,"children":1104},{},[1105],{"type":47,"value":1106},"1. Trigger the export:",{"type":41,"tag":92,"props":1108,"children":1110},{"className":94,"code":1109,"language":96,"meta":97,"style":97},"query {\n  transaction(\n    timestamp_Gte: $startDate\n    timestamp_Lte: $endDate\n    limit: 20\n    offset: 0\n    currency: \"usd\"\n    exportName: \"pre_sync_journal_\u003Cdate_range>\"\n    exportFormat: \"PRE_SYNC_JOURNAL\"\n    outputFormat: XLSX\n    excludeSpam: true\n    onlyReady: true\n    applyFilterToChildren: true\n    ignoreFee: false\n  ) {\n    __typename\n  }\n}\n",[1111],{"type":41,"tag":100,"props":1112,"children":1113},{"__ignoreMap":97},[1114,1121,1129,1137,1145,1153,1161,1169,1177,1185,1193,1201,1209,1217,1225,1232,1240,1247],{"type":41,"tag":104,"props":1115,"children":1116},{"class":106,"line":107},[1117],{"type":41,"tag":104,"props":1118,"children":1119},{},[1120],{"type":47,"value":179},{"type":41,"tag":104,"props":1122,"children":1123},{"class":106,"line":182},[1124],{"type":41,"tag":104,"props":1125,"children":1126},{},[1127],{"type":47,"value":1128},"  transaction(\n",{"type":41,"tag":104,"props":1130,"children":1131},{"class":106,"line":191},[1132],{"type":41,"tag":104,"props":1133,"children":1134},{},[1135],{"type":47,"value":1136},"    timestamp_Gte: $startDate\n",{"type":41,"tag":104,"props":1138,"children":1139},{"class":106,"line":200},[1140],{"type":41,"tag":104,"props":1141,"children":1142},{},[1143],{"type":47,"value":1144},"    timestamp_Lte: $endDate\n",{"type":41,"tag":104,"props":1146,"children":1147},{"class":106,"line":209},[1148],{"type":41,"tag":104,"props":1149,"children":1150},{},[1151],{"type":47,"value":1152},"    limit: 20\n",{"type":41,"tag":104,"props":1154,"children":1155},{"class":106,"line":218},[1156],{"type":41,"tag":104,"props":1157,"children":1158},{},[1159],{"type":47,"value":1160},"    offset: 0\n",{"type":41,"tag":104,"props":1162,"children":1163},{"class":106,"line":471},[1164],{"type":41,"tag":104,"props":1165,"children":1166},{},[1167],{"type":47,"value":1168},"    currency: \"usd\"\n",{"type":41,"tag":104,"props":1170,"children":1171},{"class":106,"line":480},[1172],{"type":41,"tag":104,"props":1173,"children":1174},{},[1175],{"type":47,"value":1176},"    exportName: \"pre_sync_journal_\u003Cdate_range>\"\n",{"type":41,"tag":104,"props":1178,"children":1179},{"class":106,"line":488},[1180],{"type":41,"tag":104,"props":1181,"children":1182},{},[1183],{"type":47,"value":1184},"    exportFormat: \"PRE_SYNC_JOURNAL\"\n",{"type":41,"tag":104,"props":1186,"children":1187},{"class":106,"line":593},[1188],{"type":41,"tag":104,"props":1189,"children":1190},{},[1191],{"type":47,"value":1192},"    outputFormat: XLSX\n",{"type":41,"tag":104,"props":1194,"children":1195},{"class":106,"line":601},[1196],{"type":41,"tag":104,"props":1197,"children":1198},{},[1199],{"type":47,"value":1200},"    excludeSpam: true\n",{"type":41,"tag":104,"props":1202,"children":1203},{"class":106,"line":609},[1204],{"type":41,"tag":104,"props":1205,"children":1206},{},[1207],{"type":47,"value":1208},"    onlyReady: true\n",{"type":41,"tag":104,"props":1210,"children":1211},{"class":106,"line":618},[1212],{"type":41,"tag":104,"props":1213,"children":1214},{},[1215],{"type":47,"value":1216},"    applyFilterToChildren: true\n",{"type":41,"tag":104,"props":1218,"children":1219},{"class":106,"line":627},[1220],{"type":41,"tag":104,"props":1221,"children":1222},{},[1223],{"type":47,"value":1224},"    ignoreFee: false\n",{"type":41,"tag":104,"props":1226,"children":1227},{"class":106,"line":635},[1228],{"type":41,"tag":104,"props":1229,"children":1230},{},[1231],{"type":47,"value":468},{"type":41,"tag":104,"props":1233,"children":1234},{"class":106,"line":643},[1235],{"type":41,"tag":104,"props":1236,"children":1237},{},[1238],{"type":47,"value":1239},"    __typename\n",{"type":41,"tag":104,"props":1241,"children":1242},{"class":106,"line":652},[1243],{"type":41,"tag":104,"props":1244,"children":1245},{},[1246],{"type":47,"value":215},{"type":41,"tag":104,"props":1248,"children":1249},{"class":106,"line":660},[1250],{"type":41,"tag":104,"props":1251,"children":1252},{},[1253],{"type":47,"value":224},{"type":41,"tag":50,"props":1255,"children":1256},{},[1257,1259,1265,1267,1273],{"type":47,"value":1258},"If exporting all-time, omit ",{"type":41,"tag":100,"props":1260,"children":1262},{"className":1261},[],[1263],{"type":47,"value":1264},"timestamp_Gte",{"type":47,"value":1266}," and ",{"type":41,"tag":100,"props":1268,"children":1270},{"className":1269},[],[1271],{"type":47,"value":1272},"timestamp_Lte",{"type":47,"value":337},{"type":41,"tag":50,"props":1275,"children":1276},{},[1277,1282],{"type":41,"tag":61,"props":1278,"children":1279},{},[1280],{"type":47,"value":1281},"2. Poll for completion",{"type":47,"value":1283}," (every 5 seconds, max 60 attempts):",{"type":41,"tag":92,"props":1285,"children":1287},{"className":94,"code":1286,"language":96,"meta":97,"style":97},"query {\n  report(name_Icontains: \"\u003CexportName>\", limit: 1, ordering: \"-createdAt\") {\n    results { id status progress link }\n  }\n}\n",[1288],{"type":41,"tag":100,"props":1289,"children":1290},{"__ignoreMap":97},[1291,1298,1306,1314,1321],{"type":41,"tag":104,"props":1292,"children":1293},{"class":106,"line":107},[1294],{"type":41,"tag":104,"props":1295,"children":1296},{},[1297],{"type":47,"value":179},{"type":41,"tag":104,"props":1299,"children":1300},{"class":106,"line":182},[1301],{"type":41,"tag":104,"props":1302,"children":1303},{},[1304],{"type":47,"value":1305},"  report(name_Icontains: \"\u003CexportName>\", limit: 1, ordering: \"-createdAt\") {\n",{"type":41,"tag":104,"props":1307,"children":1308},{"class":106,"line":191},[1309],{"type":41,"tag":104,"props":1310,"children":1311},{},[1312],{"type":47,"value":1313},"    results { id status progress link }\n",{"type":41,"tag":104,"props":1315,"children":1316},{"class":106,"line":200},[1317],{"type":41,"tag":104,"props":1318,"children":1319},{},[1320],{"type":47,"value":215},{"type":41,"tag":104,"props":1322,"children":1323},{"class":106,"line":209},[1324],{"type":41,"tag":104,"props":1325,"children":1326},{},[1327],{"type":47,"value":224},{"type":41,"tag":50,"props":1329,"children":1330},{},[1331,1336,1338,1344,1346,1352,1354,1360,1362,1368,1370,1376],{"type":41,"tag":61,"props":1332,"children":1333},{},[1334],{"type":47,"value":1335},"3. Download",{"type":47,"value":1337}," when ",{"type":41,"tag":100,"props":1339,"children":1341},{"className":1340},[],[1342],{"type":47,"value":1343},"status",{"type":47,"value":1345}," is ",{"type":41,"tag":100,"props":1347,"children":1349},{"className":1348},[],[1350],{"type":47,"value":1351},"DONE",{"type":47,"value":1353}," — use ",{"type":41,"tag":100,"props":1355,"children":1357},{"className":1356},[],[1358],{"type":47,"value":1359},"curl",{"type":47,"value":1361}," to download from the ",{"type":41,"tag":100,"props":1363,"children":1365},{"className":1364},[],[1366],{"type":47,"value":1367},"link",{"type":47,"value":1369}," URL to ",{"type":41,"tag":100,"props":1371,"children":1373},{"className":1372},[],[1374],{"type":47,"value":1375},"data\u002F\u003Corg_name>\u002Fpresync.xlsx",{"type":47,"value":337},{"type":41,"tag":50,"props":1378,"children":1379},{},[1380,1385,1387,1393,1394,1400],{"type":41,"tag":61,"props":1381,"children":1382},{},[1383],{"type":47,"value":1384},"4. Analyze",{"type":47,"value":1386}," the XLSX (two sheets: ",{"type":41,"tag":100,"props":1388,"children":1390},{"className":1389},[],[1391],{"type":47,"value":1392},"Chart of Accounts Summary",{"type":47,"value":1266},{"type":41,"tag":100,"props":1395,"children":1397},{"className":1396},[],[1398],{"type":47,"value":1399},"raw_data",{"type":47,"value":1063},{"type":41,"tag":1402,"props":1403,"children":1404},"ul",{},[1405,1417,1428,1433],{"type":41,"tag":1406,"props":1407,"children":1408},"li",{},[1409,1415],{"type":41,"tag":100,"props":1410,"children":1412},{"className":1411},[],[1413],{"type":47,"value":1414},"no_account_matched",{"type":47,"value":1416}," errors → direct input for rule gaps",{"type":41,"tag":1406,"props":1418,"children":1419},{},[1420,1426],{"type":41,"tag":100,"props":1421,"children":1423},{"className":1422},[],[1424],{"type":47,"value":1425},"COA Mapping Rule",{"type":47,"value":1427}," distribution → shows which rules are active and how much falls to default",{"type":41,"tag":1406,"props":1429,"children":1430},{},[1431],{"type":47,"value":1432},"Debit\u002Fcredit per account → validates accounting sense",{"type":41,"tag":1406,"props":1434,"children":1435},{},[1436],{"type":47,"value":1437},"Clearing account net balances → flags imbalanced clearing flows",{"type":41,"tag":50,"props":1439,"children":1440},{},[1441,1443,1449,1451,1456,1457,1463,1464,1470,1471,1477,1478,1484],{"type":47,"value":1442},"Key columns: ",{"type":41,"tag":100,"props":1444,"children":1446},{"className":1445},[],[1447],{"type":47,"value":1448},"Is Well Configured?",{"type":47,"value":1450},", ",{"type":41,"tag":100,"props":1452,"children":1454},{"className":1453},[],[1455],{"type":47,"value":1425},{"type":47,"value":1450},{"type":41,"tag":100,"props":1458,"children":1460},{"className":1459},[],[1461],{"type":47,"value":1462},"Chart of Account Name",{"type":47,"value":1450},{"type":41,"tag":100,"props":1465,"children":1467},{"className":1466},[],[1468],{"type":47,"value":1469},"Line Amount Type",{"type":47,"value":1450},{"type":41,"tag":100,"props":1472,"children":1474},{"className":1473},[],[1475],{"type":47,"value":1476},"Debit",{"type":47,"value":1450},{"type":41,"tag":100,"props":1479,"children":1481},{"className":1480},[],[1482],{"type":47,"value":1483},"Credit",{"type":47,"value":337},{"type":41,"tag":80,"props":1486,"children":1488},{"id":1487},"step-2-determine-inventory-strategy-first",[1489],{"type":47,"value":1490},"Step 2 — Determine Inventory Strategy (FIRST)",{"type":41,"tag":50,"props":1492,"children":1493},{},[1494,1496,1501,1503],{"type":47,"value":1495},"Read ",{"type":41,"tag":100,"props":1497,"children":1499},{"className":1498},[],[1500],{"type":47,"value":153},{"type":47,"value":1502}," and determine the cost basis mode. ",{"type":41,"tag":61,"props":1504,"children":1505},{},[1506],{"type":47,"value":1507},"This is the single most important decision — it determines your entire inventory rule architecture.",{"type":41,"tag":1402,"props":1509,"children":1510},{},[1511,1533],{"type":41,"tag":1406,"props":1512,"children":1513},{},[1514,1523,1525,1531],{"type":41,"tag":61,"props":1515,"children":1516},{},[1517],{"type":41,"tag":100,"props":1518,"children":1520},{"className":1519},[],[1521],{"type":47,"value":1522},"by_wallet",{"type":47,"value":1524}," (or ",{"type":41,"tag":100,"props":1526,"children":1528},{"className":1527},[],[1529],{"type":47,"value":1530},"cost_basis_by_internal_account: True",{"type":47,"value":1532},"): Inventory is tracked per wallet. Primary condition for inventory rules = wallet.",{"type":41,"tag":1406,"props":1534,"children":1535},{},[1536,1545,1547],{"type":41,"tag":61,"props":1537,"children":1538},{},[1539],{"type":41,"tag":100,"props":1540,"children":1542},{"className":1541},[],[1543],{"type":47,"value":1544},"by_asset",{"type":47,"value":1546},": Inventory is tracked per asset across the entire org. Primary condition for inventory rules = asset_class. ",{"type":41,"tag":61,"props":1548,"children":1549},{},[1550],{"type":47,"value":1551},"No wallet conditions on inventory rules.",{"type":41,"tag":50,"props":1553,"children":1554},{},[1555],{"type":47,"value":1556},"Cross-check against the chart of accounts:",{"type":41,"tag":1402,"props":1558,"children":1559},{},[1560,1565],{"type":41,"tag":1406,"props":1561,"children":1562},{},[1563],{"type":47,"value":1564},"Wallet-named inventory accounts (e.g., \"Wallet 21 - Digital Assets\") → confirms by_wallet",{"type":41,"tag":1406,"props":1566,"children":1567},{},[1568],{"type":47,"value":1569},"Asset-named inventory accounts (e.g., \"Digital Assets - Bitcoin\") → confirms by_asset",{"type":41,"tag":50,"props":1571,"children":1572},{},[1573,1578],{"type":41,"tag":61,"props":1574,"children":1575},{},[1576],{"type":47,"value":1577},"If CoA structure conflicts with cost basis mode",{"type":47,"value":1579},", present three options:",{"type":41,"tag":1581,"props":1582,"children":1583},"ol",{},[1584,1589,1594],{"type":41,"tag":1406,"props":1585,"children":1586},{},[1587],{"type":47,"value":1588},"Keep current mode + non-standard conditions (works but misaligned)",{"type":41,"tag":1406,"props":1590,"children":1591},{},[1592],{"type":47,"value":1593},"Keep current mode + create new matching accounts (standard, requires CoA changes)",{"type":41,"tag":1406,"props":1595,"children":1596},{},[1597],{"type":47,"value":1598},"Change the cost basis strategy to match the existing CoA (cleanest alignment, no CoA changes)",{"type":41,"tag":50,"props":1600,"children":1601},{},[1602,1607],{"type":41,"tag":61,"props":1603,"children":1604},{},[1605],{"type":47,"value":1606},"STOP HERE.",{"type":47,"value":1608}," Confirm the inventory strategy with the user before proceeding.",{"type":41,"tag":80,"props":1610,"children":1612},{"id":1611},"step-25-account-gap-analysis",[1613],{"type":47,"value":1614},"Step 2.5 — Account Gap Analysis",{"type":41,"tag":50,"props":1616,"children":1617},{},[1618,1620,1625],{"type":47,"value":1619},"Compare what accounts exist in the CoA against what the rule engine needs. Flag missing accounts ",{"type":41,"tag":61,"props":1621,"children":1622},{},[1623],{"type":47,"value":1624},"before",{"type":47,"value":1626}," designing rules.",{"type":41,"tag":50,"props":1628,"children":1629},{},[1630,1635],{"type":41,"tag":61,"props":1631,"children":1632},{},[1633],{"type":47,"value":1634},"Required account types",{"type":47,"value":1636}," — every org needs at least:",{"type":41,"tag":1402,"props":1638,"children":1639},{},[1640,1650,1660,1670,1680,1690,1700],{"type":41,"tag":1406,"props":1641,"children":1642},{},[1643,1648],{"type":41,"tag":61,"props":1644,"children":1645},{},[1646],{"type":47,"value":1647},"Inventory accounts",{"type":47,"value":1649},": Per-asset (by_asset mode) or per-wallet (by_wallet mode). If only a generic \"Inventory Asset\" exists, recommend creating per-asset\u002Fper-wallet accounts for significant assets\u002Fwallets.",{"type":41,"tag":1406,"props":1651,"children":1652},{},[1653,1658],{"type":41,"tag":61,"props":1654,"children":1655},{},[1656],{"type":47,"value":1657},"Gain account",{"type":47,"value":1659}," (INCOME or OTHER_INCOME type)",{"type":41,"tag":1406,"props":1661,"children":1662},{},[1663,1668],{"type":41,"tag":61,"props":1664,"children":1665},{},[1666],{"type":47,"value":1667},"Loss account",{"type":47,"value":1669}," (EXPENSE or OTHER_EXPENSE type) — some orgs prefer a single combined Realized Gain\u002FLoss account; ask",{"type":41,"tag":1406,"props":1671,"children":1672},{},[1673,1678],{"type":41,"tag":61,"props":1674,"children":1675},{},[1676],{"type":47,"value":1677},"Fee account",{"type":47,"value":1679}," (EXPENSE type) — for gas\u002Fnetwork fees",{"type":41,"tag":1406,"props":1681,"children":1682},{},[1683,1688],{"type":41,"tag":61,"props":1684,"children":1685},{},[1686],{"type":47,"value":1687},"Income accounts",{"type":47,"value":1689}," — for staking rewards, revenue, etc. based on tags present",{"type":41,"tag":1406,"props":1691,"children":1692},{},[1693,1698],{"type":41,"tag":61,"props":1694,"children":1695},{},[1696],{"type":47,"value":1697},"Expense accounts",{"type":47,"value":1699}," — for operations, payments, etc. based on tags present",{"type":41,"tag":1406,"props":1701,"children":1702},{},[1703,1708],{"type":41,"tag":61,"props":1704,"children":1705},{},[1706],{"type":47,"value":1707},"Clearing account",{"type":47,"value":1709}," (ASSET type) — if clearing tags (SWAP, BRIDGE, etc.) exist",{"type":41,"tag":50,"props":1711,"children":1712},{},[1713],{"type":41,"tag":61,"props":1714,"children":1715},{},[1716],{"type":47,"value":1717},"How to present gaps:",{"type":41,"tag":1402,"props":1719,"children":1720},{},[1721,1726,1731,1736],{"type":41,"tag":1406,"props":1722,"children":1723},{},[1724],{"type":47,"value":1725},"List missing accounts with recommended account type",{"type":41,"tag":1406,"props":1727,"children":1728},{},[1729],{"type":47,"value":1730},"Ask the user to create them manually in their ERP (e.g., NetSuite)",{"type":41,"tag":1406,"props":1732,"children":1733},{},[1734],{"type":47,"value":1735},"After the user creates the accounts, they should refresh the chart of accounts in Tres",{"type":41,"tag":1406,"props":1737,"children":1738},{},[1739,1741,1747],{"type":47,"value":1740},"Re-fetch CoA via MCP (",{"type":41,"tag":100,"props":1742,"children":1744},{"className":1743},[],[1745],{"type":47,"value":1746},"integrationAccount",{"type":47,"value":1748}," query from Step 1) to pick up the new accounts",{"type":41,"tag":50,"props":1750,"children":1751},{},[1752],{"type":41,"tag":61,"props":1753,"children":1754},{},[1755],{"type":47,"value":1756},"Only proceed to rule design after the CoA has all needed accounts.",{"type":41,"tag":80,"props":1758,"children":1760},{"id":1759},"step-3-analyze-internally",[1761],{"type":47,"value":1762},"Step 3 — Analyze (Internally)",{"type":41,"tag":50,"props":1764,"children":1765},{},[1766,1768,1773],{"type":47,"value":1767},"Read ALL files in ",{"type":41,"tag":100,"props":1769,"children":1771},{"className":1770},[],[1772],{"type":47,"value":136},{"type":47,"value":1774},". Build understanding internally — do NOT dump a wall of text.",{"type":41,"tag":50,"props":1776,"children":1777},{},[1778],{"type":47,"value":1779},"Checklist (for your own understanding, not to present verbatim):",{"type":41,"tag":1581,"props":1781,"children":1782},{},[1783,1800,1810,1826,1842,1858],{"type":41,"tag":1406,"props":1784,"children":1785},{},[1786,1791,1793,1798],{"type":41,"tag":61,"props":1787,"children":1788},{},[1789],{"type":47,"value":1790},"Verified asset classes",{"type":47,"value":1792}," from ",{"type":41,"tag":100,"props":1794,"children":1796},{"className":1795},[],[1797],{"type":47,"value":1061},{"type":47,"value":1799}," — note exact names. NEVER invent or guess.",{"type":41,"tag":1406,"props":1801,"children":1802},{},[1803,1808],{"type":41,"tag":61,"props":1804,"children":1805},{},[1806],{"type":47,"value":1807},"Tags grouped by purpose",{"type":47,"value":1809}," — clearing, DeFi, deposits\u002Fredemptions, expenses, noise, etc.",{"type":41,"tag":1406,"props":1811,"children":1812},{},[1813,1818,1819,1824],{"type":41,"tag":61,"props":1814,"children":1815},{},[1816],{"type":47,"value":1817},"Available accounts",{"type":47,"value":1792},{"type":41,"tag":100,"props":1820,"children":1822},{"className":1821},[],[1823],{"type":47,"value":265},{"type":47,"value":1825}," — grouped by type. Note UUIDs.",{"type":41,"tag":1406,"props":1827,"children":1828},{},[1829,1834,1835,1840],{"type":41,"tag":61,"props":1830,"children":1831},{},[1832],{"type":47,"value":1833},"Existing rules",{"type":47,"value":1792},{"type":41,"tag":100,"props":1836,"children":1838},{"className":1837},[],[1839],{"type":47,"value":343},{"type":47,"value":1841}," — coverage, gaps, naming convention.",{"type":41,"tag":1406,"props":1843,"children":1844},{},[1845,1850,1851,1856],{"type":41,"tag":61,"props":1846,"children":1847},{},[1848],{"type":47,"value":1849},"Wallet list",{"type":47,"value":1792},{"type":41,"tag":100,"props":1852,"children":1854},{"className":1853},[],[1855],{"type":47,"value":164},{"type":47,"value":1857}," — group by purpose (AuM, fee recipients, operations, exchange, etc.)",{"type":41,"tag":1406,"props":1859,"children":1860},{},[1861,1866,1867,1872],{"type":41,"tag":61,"props":1862,"children":1863},{},[1864],{"type":47,"value":1865},"Wallet → asset mapping",{"type":47,"value":1792},{"type":41,"tag":100,"props":1868,"children":1870},{"className":1869},[],[1871],{"type":47,"value":1061},{"type":47,"value":1873}," — which wallet holds which verified assets.",{"type":41,"tag":80,"props":1875,"children":1877},{"id":1876},"step-4-discuss-with-user-architecture-first",[1878],{"type":47,"value":1879},"Step 4 — Discuss with User (Architecture First)",{"type":41,"tag":50,"props":1881,"children":1882},{},[1883,1888],{"type":41,"tag":61,"props":1884,"children":1885},{},[1886],{"type":47,"value":1887},"Do NOT propose rules yet.",{"type":47,"value":1889}," Align on architecture decisions in this order:",{"type":41,"tag":148,"props":1891,"children":1893},{"id":1892},"_4a-inventory-strategy-confirm-from-step-2",[1894],{"type":47,"value":1895},"4a. Inventory Strategy (confirm from Step 2)",{"type":41,"tag":1402,"props":1897,"children":1898},{},[1899,1909],{"type":41,"tag":1406,"props":1900,"children":1901},{},[1902,1907],{"type":41,"tag":61,"props":1903,"children":1904},{},[1905],{"type":47,"value":1906},"by_asset mode",{"type":47,"value":1908},": Walk through asset classes and ask which inventory account each maps to. Group similar assets.",{"type":41,"tag":1406,"props":1910,"children":1911},{},[1912,1917],{"type":41,"tag":61,"props":1913,"children":1914},{},[1915],{"type":47,"value":1916},"by_wallet mode",{"type":47,"value":1918},": Walk through wallets and ask which inventory account each maps to. Group wallets by purpose.",{"type":41,"tag":148,"props":1920,"children":1922},{"id":1921},"_4b-incomeexpense-strategy",[1923],{"type":47,"value":1924},"4b. Income\u002FExpense Strategy",{"type":41,"tag":50,"props":1926,"children":1927},{},[1928],{"type":47,"value":1929},"Use tag groups to ask efficiently:",{"type":41,"tag":1402,"props":1931,"children":1932},{},[1933,1938,1943,1948],{"type":41,"tag":1406,"props":1934,"children":1935},{},[1936],{"type":47,"value":1937},"\"These deposit tags — each maps to its product liability account?\"",{"type":41,"tag":1406,"props":1939,"children":1940},{},[1941],{"type":47,"value":1942},"\"These clearing tags (SWAP, BRIDGE, INTERNAL TRANSFER) — all to Swap Clearing?\"",{"type":41,"tag":1406,"props":1944,"children":1945},{},[1946],{"type":47,"value":1947},"\"These expense tags — I see matching accounts in the CoA, confirm?\"",{"type":41,"tag":1406,"props":1949,"children":1950},{},[1951],{"type":47,"value":1952},"Flag tags with no obvious account match for clarification.",{"type":41,"tag":148,"props":1954,"children":1956},{"id":1955},"_4c-gainloss-fees",[1957],{"type":47,"value":1958},"4c. Gain\u002FLoss & Fees",{"type":41,"tag":1402,"props":1960,"children":1961},{},[1962,1971,1980],{"type":41,"tag":1406,"props":1963,"children":1964},{},[1965,1969],{"type":41,"tag":61,"props":1966,"children":1967},{},[1968],{"type":47,"value":1906},{"type":47,"value":1970},": Gain\u002Floss can be global or per-asset-group. Ask which.",{"type":41,"tag":1406,"props":1972,"children":1973},{},[1974,1978],{"type":41,"tag":61,"props":1975,"children":1976},{},[1977],{"type":47,"value":1916},{"type":47,"value":1979},": Gain\u002Floss per wallet or per wallet-group. Ask which.",{"type":41,"tag":1406,"props":1981,"children":1982},{},[1983],{"type":47,"value":1984},"Fee accounts: one generic, or per-chain? Ask.",{"type":41,"tag":148,"props":1986,"children":1988},{"id":1987},"_4d-ignore-rules",[1989],{"type":47,"value":1990},"4d. Ignore Rules",{"type":41,"tag":50,"props":1992,"children":1993},{},[1994],{"type":47,"value":1995},"Present noise candidates (SPAM, IGNORED, etc.) with tx counts. Ask which to ignore.",{"type":41,"tag":148,"props":1997,"children":1999},{"id":1998},"_4e-missing-coverage",[2000],{"type":47,"value":2001},"4e. Missing Coverage",{"type":41,"tag":50,"props":2003,"children":2004},{},[2005],{"type":47,"value":2006},"Flag any gaps: assets without inventory accounts, tags without matching CoA accounts.",{"type":41,"tag":50,"props":2008,"children":2009},{},[2010],{"type":41,"tag":61,"props":2011,"children":2012},{},[2013,2015,2021],{"type":47,"value":2014},"Principle: Align on each layer before proposing rules. Don't present rules with ",{"type":41,"tag":100,"props":2016,"children":2018},{"className":2017},[],[2019],{"type":47,"value":2020},"?",{"type":47,"value":2022}," placeholders — resolve unknowns first.",{"type":41,"tag":80,"props":2024,"children":2026},{"id":2025},"step-5-design-rules",[2027],{"type":47,"value":2028},"Step 5 — Design Rules",{"type":41,"tag":50,"props":2030,"children":2031},{},[2032],{"type":47,"value":2033},"Only after architecture is agreed. Propose a rule set as a table:",{"type":41,"tag":2035,"props":2036,"children":2037},"table",{},[2038,2067],{"type":41,"tag":2039,"props":2040,"children":2041},"thead",{},[2042],{"type":41,"tag":2043,"props":2044,"children":2045},"tr",{},[2046,2052,2057,2062],{"type":41,"tag":2047,"props":2048,"children":2049},"th",{},[2050],{"type":47,"value":2051},"#",{"type":41,"tag":2047,"props":2053,"children":2054},{},[2055],{"type":47,"value":2056},"Rule Name",{"type":41,"tag":2047,"props":2058,"children":2059},{},[2060],{"type":47,"value":2061},"Conditions",{"type":41,"tag":2047,"props":2063,"children":2064},{},[2065],{"type":47,"value":2066},"Accounts",{"type":41,"tag":2068,"props":2069,"children":2070},"tbody",{},[2071],{"type":41,"tag":2043,"props":2072,"children":2073},{},[2074,2080,2085,2090],{"type":41,"tag":2075,"props":2076,"children":2077},"td",{},[2078],{"type":47,"value":2079},"1",{"type":41,"tag":2075,"props":2081,"children":2082},{},[2083],{"type":47,"value":2084},"ETH Inventory",{"type":41,"tag":2075,"props":2086,"children":2087},{},[2088],{"type":47,"value":2089},"asset_class=Ether",{"type":41,"tag":2075,"props":2091,"children":2092},{},[2093],{"type":47,"value":2094},"inventory_account=...",{"type":41,"tag":148,"props":2096,"children":2098},{"id":2097},"consolidation-principles",[2099],{"type":47,"value":2100},"Consolidation Principles",{"type":41,"tag":1581,"props":2102,"children":2103},{},[2104,2114,2124],{"type":41,"tag":1406,"props":2105,"children":2106},{},[2107,2112],{"type":41,"tag":61,"props":2108,"children":2109},{},[2110],{"type":47,"value":2111},"Group tags by target account, not by purpose.",{"type":47,"value":2113}," Tags that share the same account become ONE rule with multiple tags.",{"type":41,"tag":1406,"props":2115,"children":2116},{},[2117,2122],{"type":41,"tag":61,"props":2118,"children":2119},{},[2120],{"type":47,"value":2121},"Start with the most consolidated version.",{"type":47,"value":2123}," Present the minimal rule set first.",{"type":41,"tag":1406,"props":2125,"children":2126},{},[2127,2132],{"type":41,"tag":61,"props":2128,"children":2129},{},[2130],{"type":47,"value":2131},"Low-volume partner tags → suggest a catch-all.",{"type":47,"value":2133}," Revenue\u002Fpartner tags with few transactions (\u003C50 txs) should be grouped into a generic income account unless the user wants dedicated rules.",{"type":41,"tag":80,"props":2135,"children":2137},{"id":2136},"step-6-get-approval",[2138],{"type":47,"value":2139},"Step 6 — Get Approval",{"type":41,"tag":50,"props":2141,"children":2142},{},[2143],{"type":47,"value":2144},"Present the final rule table. Iterate with user until approved.",{"type":41,"tag":80,"props":2146,"children":2148},{"id":2147},"step-7-create-rules-via-mcp",[2149],{"type":47,"value":2150},"Step 7 — Create Rules via MCP",{"type":41,"tag":1581,"props":2152,"children":2153},{},[2154,2167,2192],{"type":41,"tag":1406,"props":2155,"children":2156},{},[2157,2159,2165],{"type":47,"value":2158},"Write the approved rules to ",{"type":41,"tag":100,"props":2160,"children":2162},{"className":2161},[],[2163],{"type":47,"value":2164},"data\u002F\u003Corg_name>\u002Frules.json",{"type":47,"value":2166}," (see rules.json format below)",{"type":41,"tag":1406,"props":2168,"children":2169},{},[2170,2175,2177,2183,2185,2190],{"type":41,"tag":61,"props":2171,"children":2172},{},[2173],{"type":47,"value":2174},"Validate inline",{"type":47,"value":2176},": Cross-reference every account UUID in ",{"type":41,"tag":100,"props":2178,"children":2180},{"className":2179},[],[2181],{"type":47,"value":2182},"rules.json",{"type":47,"value":2184}," against ",{"type":41,"tag":100,"props":2186,"children":2188},{"className":2187},[],[2189],{"type":47,"value":265},{"type":47,"value":2191},". Flag any UUIDs not found. Check for duplicate rule names.",{"type":41,"tag":1406,"props":2193,"children":2194},{},[2195,2197,2203],{"type":47,"value":2196},"After user confirms, apply each rule via MCP ",{"type":41,"tag":100,"props":2198,"children":2200},{"className":2199},[],[2201],{"type":47,"value":2202},"upsertRule",{"type":47,"value":2204}," mutation",{"type":41,"tag":50,"props":2206,"children":2207},{},[2208,2213],{"type":41,"tag":61,"props":2209,"children":2210},{},[2211],{"type":47,"value":2212},"To delete existing rules",{"type":47,"value":2214}," before applying:",{"type":41,"tag":1581,"props":2216,"children":2217},{},[2218,2239,2250],{"type":41,"tag":1406,"props":2219,"children":2220},{},[2221,2223,2229,2231,2237],{"type":47,"value":2222},"Fetch current rules: ",{"type":41,"tag":100,"props":2224,"children":2226},{"className":2225},[],[2227],{"type":47,"value":2228},"erp { customRules }",{"type":47,"value":2230}," — each has an ",{"type":41,"tag":100,"props":2232,"children":2234},{"className":2233},[],[2235],{"type":47,"value":2236},"identifier",{"type":47,"value":2238}," field",{"type":41,"tag":1406,"props":2240,"children":2241},{},[2242,2244],{"type":47,"value":2243},"For each rule to delete: ",{"type":41,"tag":100,"props":2245,"children":2247},{"className":2246},[],[2248],{"type":47,"value":2249},"mutation { deleteRule(identifier: \"rule_id\") { status } }",{"type":41,"tag":1406,"props":2251,"children":2252},{},[2253],{"type":47,"value":2254},"Confirm with user before deleting",{"type":41,"tag":50,"props":2256,"children":2257},{},[2258,2263],{"type":41,"tag":61,"props":2259,"children":2260},{},[2261],{"type":47,"value":2262},"To apply rules",{"type":47,"value":2264},", fetch enrichment data first:",{"type":41,"tag":92,"props":2266,"children":2268},{"className":94,"code":2267,"language":96,"meta":97,"style":97},"query {\n  erp(limit: 1) {\n    results {\n      assetClassNames { id name symbol isVerified assetClassId }\n      wallets { id address name parentPlatform }\n      allAccounts { name value type }\n    }\n  }\n}\n",[2269],{"type":41,"tag":100,"props":2270,"children":2271},{"__ignoreMap":97},[2272,2279,2286,2294,2302,2310,2318,2326,2333],{"type":41,"tag":104,"props":2273,"children":2274},{"class":106,"line":107},[2275],{"type":41,"tag":104,"props":2276,"children":2277},{},[2278],{"type":47,"value":179},{"type":41,"tag":104,"props":2280,"children":2281},{"class":106,"line":182},[2282],{"type":41,"tag":104,"props":2283,"children":2284},{},[2285],{"type":47,"value":365},{"type":41,"tag":104,"props":2287,"children":2288},{"class":106,"line":191},[2289],{"type":41,"tag":104,"props":2290,"children":2291},{},[2292],{"type":47,"value":2293},"    results {\n",{"type":41,"tag":104,"props":2295,"children":2296},{"class":106,"line":200},[2297],{"type":41,"tag":104,"props":2298,"children":2299},{},[2300],{"type":47,"value":2301},"      assetClassNames { id name symbol isVerified assetClassId }\n",{"type":41,"tag":104,"props":2303,"children":2304},{"class":106,"line":209},[2305],{"type":41,"tag":104,"props":2306,"children":2307},{},[2308],{"type":47,"value":2309},"      wallets { id address name parentPlatform }\n",{"type":41,"tag":104,"props":2311,"children":2312},{"class":106,"line":218},[2313],{"type":41,"tag":104,"props":2314,"children":2315},{},[2316],{"type":47,"value":2317},"      allAccounts { name value type }\n",{"type":41,"tag":104,"props":2319,"children":2320},{"class":106,"line":471},[2321],{"type":41,"tag":104,"props":2322,"children":2323},{},[2324],{"type":47,"value":2325},"    }\n",{"type":41,"tag":104,"props":2327,"children":2328},{"class":106,"line":480},[2329],{"type":41,"tag":104,"props":2330,"children":2331},{},[2332],{"type":47,"value":215},{"type":41,"tag":104,"props":2334,"children":2335},{"class":106,"line":488},[2336],{"type":41,"tag":104,"props":2337,"children":2338},{},[2339],{"type":47,"value":224},{"type":41,"tag":50,"props":2341,"children":2342},{},[2343],{"type":47,"value":2344},"Then for each rule call:",{"type":41,"tag":92,"props":2346,"children":2348},{"className":94,"code":2347,"language":96,"meta":97,"style":97},"mutation { upsertRule(rule: $ruleInput) { status } }\n",[2349],{"type":41,"tag":100,"props":2350,"children":2351},{"__ignoreMap":97},[2352],{"type":41,"tag":104,"props":2353,"children":2354},{"class":106,"line":107},[2355],{"type":41,"tag":104,"props":2356,"children":2357},{},[2358],{"type":47,"value":2347},{"type":41,"tag":50,"props":2360,"children":2361},{},[2362,2364,2369,2371,2377],{"type":47,"value":2363},"See the ",{"type":41,"tag":61,"props":2365,"children":2366},{},[2367],{"type":47,"value":2368},"upsertRule Input Format",{"type":47,"value":2370}," section below for the ",{"type":41,"tag":100,"props":2372,"children":2374},{"className":2373},[],[2375],{"type":47,"value":2376},"$ruleInput",{"type":47,"value":2378}," structure and mapping.",{"type":41,"tag":80,"props":2380,"children":2382},{"id":2381},"step-75-validate-rules-optional-but-recommended",[2383],{"type":47,"value":2384},"Step 7.5 — Validate Rules (Optional but Recommended)",{"type":41,"tag":50,"props":2386,"children":2387},{},[2388],{"type":47,"value":2389},"After applying rules, suggest re-exporting a presync report:",{"type":41,"tag":1086,"props":2391,"children":2392},{},[2393],{"type":41,"tag":50,"props":2394,"children":2395},{},[2396],{"type":47,"value":2397},"\"Rules are applied. Want me to export a fresh presync report to validate the journal looks correct?\"",{"type":41,"tag":50,"props":2399,"children":2400},{},[2401],{"type":47,"value":2402},"If yes, export and analyze (same as Step 1.5). Check:",{"type":41,"tag":1402,"props":2404,"children":2405},{},[2406,2416,2421,2426],{"type":41,"tag":1406,"props":2407,"children":2408},{},[2409,2414],{"type":41,"tag":100,"props":2410,"children":2412},{"className":2411},[],[2413],{"type":47,"value":1414},{"type":47,"value":2415}," = 0 (full coverage)",{"type":41,"tag":1406,"props":2417,"children":2418},{},[2419],{"type":47,"value":2420},"Clearing accounts have near-zero net",{"type":41,"tag":1406,"props":2422,"children":2423},{},[2424],{"type":47,"value":2425},"No unexpected accounts appearing",{"type":41,"tag":1406,"props":2427,"children":2428},{},[2429],{"type":47,"value":2430},"Default rule volume is reasonable (only edge-case txs)",{"type":41,"tag":69,"props":2432,"children":2433},{},[],{"type":41,"tag":73,"props":2435,"children":2437},{"id":2436},"rule-architecture",[2438],{"type":47,"value":2439},"Rule Architecture",{"type":41,"tag":80,"props":2441,"children":2443},{"id":2442},"how-the-rule-engine-works",[2444],{"type":47,"value":2445},"How the Rule Engine Works",{"type":41,"tag":50,"props":2447,"children":2448},{},[2449,2451,2456,2458,2464,2466,2472,2474,2480],{"type":47,"value":2450},"A transaction can match ",{"type":41,"tag":61,"props":2452,"children":2453},{},[2454],{"type":47,"value":2455},"multiple rules",{"type":47,"value":2457},", each setting different account fields. The engine accumulates accounts from all matching rules — a transaction might get its ",{"type":41,"tag":100,"props":2459,"children":2461},{"className":2460},[],[2462],{"type":47,"value":2463},"inventory_account",{"type":47,"value":2465}," from an asset rule, its ",{"type":41,"tag":100,"props":2467,"children":2469},{"className":2468},[],[2470],{"type":47,"value":2471},"income_account",{"type":47,"value":2473}," from a tag rule, and its ",{"type":41,"tag":100,"props":2475,"children":2477},{"className":2476},[],[2478],{"type":47,"value":2479},"fee_account",{"type":47,"value":2481}," from a wallet rule. More specific rules (more conditions) take precedence over broader ones for the same account field.",{"type":41,"tag":50,"props":2483,"children":2484},{},[2485,2487,2492],{"type":47,"value":2486},"Rules work as ",{"type":41,"tag":61,"props":2488,"children":2489},{},[2490],{"type":47,"value":2491},"layers",{"type":47,"value":2493},":",{"type":41,"tag":1402,"props":2495,"children":2496},{},[2497,2514,2529,2539,2549],{"type":41,"tag":1406,"props":2498,"children":2499},{},[2500,2505,2506,2512],{"type":41,"tag":61,"props":2501,"children":2502},{},[2503],{"type":47,"value":2504},"Default layer",{"type":47,"value":1055},{"type":41,"tag":100,"props":2507,"children":2509},{"className":2508},[],[2510],{"type":47,"value":2511},"type: \"DEFAULT\"",{"type":47,"value":2513},"): catch-all fallback for all account fields. Only ONE per integration.",{"type":41,"tag":1406,"props":2515,"children":2516},{},[2517,2522,2524],{"type":41,"tag":61,"props":2518,"children":2519},{},[2520],{"type":47,"value":2521},"Inventory layer",{"type":47,"value":2523},": per-asset or per-wallet rules setting ",{"type":41,"tag":100,"props":2525,"children":2527},{"className":2526},[],[2528],{"type":47,"value":2463},{"type":41,"tag":1406,"props":2530,"children":2531},{},[2532,2537],{"type":41,"tag":61,"props":2533,"children":2534},{},[2535],{"type":47,"value":2536},"Behavioral layer",{"type":47,"value":2538}," (tag rules): set income\u002Fexpense based on transaction type",{"type":41,"tag":1406,"props":2540,"children":2541},{},[2542,2547],{"type":41,"tag":61,"props":2543,"children":2544},{},[2545],{"type":47,"value":2546},"Fee\u002FGain-Loss layer",{"type":47,"value":2548},": set fee, gain, loss accounts",{"type":41,"tag":1406,"props":2550,"children":2551},{},[2552,2557],{"type":41,"tag":61,"props":2553,"children":2554},{},[2555],{"type":47,"value":2556},"Override layer",{"type":47,"value":2558}," (specific combos): narrow rules for edge cases",{"type":41,"tag":50,"props":2560,"children":2561},{},[2562,2564,2569,2571,2576,2578,2584],{"type":47,"value":2563},"The default rule uses ",{"type":41,"tag":100,"props":2565,"children":2567},{"className":2566},[],[2568],{"type":47,"value":2511},{"type":47,"value":2570}," in the upsertRule mutation. In ",{"type":41,"tag":100,"props":2572,"children":2574},{"className":2573},[],[2575],{"type":47,"value":2182},{"type":47,"value":2577},", mark default rules with ",{"type":41,"tag":100,"props":2579,"children":2581},{"className":2580},[],[2582],{"type":47,"value":2583},"\"is_default\": true",{"type":47,"value":337},{"type":41,"tag":80,"props":2586,"children":2588},{"id":2587},"inventory-layer-driven-by-cost-basis-mode",[2589],{"type":47,"value":2590},"Inventory Layer — Driven by Cost Basis Mode",{"type":41,"tag":50,"props":2592,"children":2593},{},[2594,2599],{"type":41,"tag":61,"props":2595,"children":2596},{},[2597],{"type":47,"value":2598},"CRITICAL: Each inventory rule should target exactly ONE asset class by default.",{"type":47,"value":2600}," Multiple asset classes in a single inventory rule will break reconciliation. Only combine multiple asset classes in one rule if the client explicitly requests it with a clear reason. If low-volume related assets don't warrant their own rule, let them fall through to the default catch-all.",{"type":41,"tag":148,"props":2602,"children":2604},{"id":2603},"by_asset-mode-inventory-by-asset-class",[2605],{"type":47,"value":2606},"by_asset mode (inventory by asset class)",{"type":41,"tag":50,"props":2608,"children":2609},{},[2610,2612,2618],{"type":47,"value":2611},"Inventory rules use ",{"type":41,"tag":100,"props":2613,"children":2615},{"className":2614},[],[2616],{"type":47,"value":2617},"asset_class",{"type":47,"value":2619}," as the primary condition. No wallet conditions needed.",{"type":41,"tag":1402,"props":2621,"children":2622},{},[2623,2641,2659],{"type":41,"tag":1406,"props":2624,"children":2625},{},[2626,2631,2633,2639],{"type":41,"tag":61,"props":2627,"children":2628},{},[2629],{"type":47,"value":2630},"Per-asset inventory",{"type":47,"value":2632},": ",{"type":41,"tag":100,"props":2634,"children":2636},{"className":2635},[],[2637],{"type":47,"value":2638},"asset_class=Ether → inventory_account=\u003CETH account>",{"type":47,"value":2640}," — one rule per significant asset class",{"type":41,"tag":1406,"props":2642,"children":2643},{},[2644,2649,2651,2657],{"type":41,"tag":61,"props":2645,"children":2646},{},[2647],{"type":47,"value":2648},"Default inventory",{"type":47,"value":2650},": the DEFAULT rule sets ",{"type":41,"tag":100,"props":2652,"children":2654},{"className":2653},[],[2655],{"type":47,"value":2656},"inventory_account=\u003Cgeneric account>",{"type":47,"value":2658}," as fallback for low-volume assets",{"type":41,"tag":1406,"props":2660,"children":2661},{},[2662],{"type":47,"value":2663},"Multiple wallets holding the same asset share one inventory account (matches cost basis pool)",{"type":41,"tag":50,"props":2665,"children":2666},{},[2667,2672],{"type":41,"tag":61,"props":2668,"children":2669},{},[2670],{"type":47,"value":2671},"If the CoA has only a generic inventory account",{"type":47,"value":2673}," (e.g., \"Inventory Asset\") without per-asset accounts, flag this to the user and recommend creating per-asset inventory accounts for significant assets. Do NOT silently map everything to a single catch-all.",{"type":41,"tag":148,"props":2675,"children":2677},{"id":2676},"by_wallet-mode-inventory-by-wallet",[2678],{"type":47,"value":2679},"by_wallet mode (inventory by wallet)",{"type":41,"tag":50,"props":2681,"children":2682},{},[2683,2684,2690,2692,2697],{"type":47,"value":2611},{"type":41,"tag":100,"props":2685,"children":2687},{"className":2686},[],[2688],{"type":47,"value":2689},"wallet",{"type":47,"value":2691}," as the primary condition, optionally combined with ",{"type":41,"tag":100,"props":2693,"children":2695},{"className":2694},[],[2696],{"type":47,"value":2617},{"type":47,"value":2698}," for wallets holding multiple asset types with different accounts.",{"type":41,"tag":1402,"props":2700,"children":2701},{},[2702,2717],{"type":41,"tag":1406,"props":2703,"children":2704},{},[2705,2710,2711],{"type":41,"tag":61,"props":2706,"children":2707},{},[2708],{"type":47,"value":2709},"Wallet + asset inventory",{"type":47,"value":2632},{"type":41,"tag":100,"props":2712,"children":2714},{"className":2713},[],[2715],{"type":47,"value":2716},"wallet=0x... + asset_class=Ether → inventory_account=\u003CETH account>",{"type":41,"tag":1406,"props":2718,"children":2719},{},[2720,2725,2726],{"type":41,"tag":61,"props":2721,"children":2722},{},[2723],{"type":47,"value":2724},"Catch-all per wallet",{"type":47,"value":2632},{"type":41,"tag":100,"props":2727,"children":2729},{"className":2728},[],[2730],{"type":47,"value":2731},"wallet=0x... → inventory_account=\u003Cdefault for this wallet>",{"type":41,"tag":80,"props":2733,"children":2735},{"id":2734},"behavioral-layer-tag-based-no-wallet-conditions",[2736],{"type":47,"value":2737},"Behavioral Layer (tag-based, no wallet conditions)",{"type":41,"tag":50,"props":2739,"children":2740},{},[2741],{"type":47,"value":2742},"Income\u002Fexpense rules are typically tag-based and apply across all wallets:",{"type":41,"tag":1402,"props":2744,"children":2745},{},[2746,2770,2791,2816],{"type":41,"tag":1406,"props":2747,"children":2748},{},[2749,2754,2756,2762,2764],{"type":41,"tag":61,"props":2750,"children":2751},{},[2752],{"type":47,"value":2753},"Deposit rules",{"type":47,"value":2755},": tag=",{"type":41,"tag":2757,"props":2758,"children":2759},"em",{},[2760],{"type":47,"value":2761},"PRODUCT",{"type":47,"value":2763}," DEPOSIT → ",{"type":41,"tag":100,"props":2765,"children":2767},{"className":2766},[],[2768],{"type":47,"value":2769},"income_account=\u003Cliability account>",{"type":41,"tag":1406,"props":2771,"children":2772},{},[2773,2778,2779,2783,2785],{"type":41,"tag":61,"props":2774,"children":2775},{},[2776],{"type":47,"value":2777},"Redemption rules",{"type":47,"value":2755},{"type":41,"tag":2757,"props":2780,"children":2781},{},[2782],{"type":47,"value":2761},{"type":47,"value":2784}," REDEMPTION → ",{"type":41,"tag":100,"props":2786,"children":2788},{"className":2787},[],[2789],{"type":47,"value":2790},"expense_account=\u003Cliability account>",{"type":41,"tag":1406,"props":2792,"children":2793},{},[2794,2799,2801,2806,2808,2814],{"type":41,"tag":61,"props":2795,"children":2796},{},[2797],{"type":47,"value":2798},"Clearing rules",{"type":47,"value":2800},": tag=SWAP\u002FBRIDGE\u002Fetc. → symmetric ",{"type":41,"tag":100,"props":2802,"children":2804},{"className":2803},[],[2805],{"type":47,"value":2471},{"type":47,"value":2807}," + ",{"type":41,"tag":100,"props":2809,"children":2811},{"className":2810},[],[2812],{"type":47,"value":2813},"expense_account",{"type":47,"value":2815}," to SAME account",{"type":41,"tag":1406,"props":2817,"children":2818},{},[2819,2824,2826],{"type":41,"tag":61,"props":2820,"children":2821},{},[2822],{"type":47,"value":2823},"Expense rules",{"type":47,"value":2825},": tag=MARKETING\u002Fetc. → ",{"type":41,"tag":100,"props":2827,"children":2829},{"className":2828},[],[2830],{"type":47,"value":2831},"expense_account=\u003Cexpense account>",{"type":41,"tag":50,"props":2833,"children":2834},{},[2835,2840],{"type":41,"tag":61,"props":2836,"children":2837},{},[2838],{"type":47,"value":2839},"Lending tags deserve separate clearing.",{"type":47,"value":2841}," LENDING LOCKUP\u002FRETURN should get a dedicated \"Staked Asset\" clearing account, not be lumped with SWAP\u002FBRIDGE. This gives visibility into assets deployed in lending protocols.",{"type":41,"tag":80,"props":2843,"children":2845},{"id":2844},"fee-gainloss-layer",[2846],{"type":47,"value":2847},"Fee & Gain\u002FLoss Layer",{"type":41,"tag":50,"props":2849,"children":2850},{},[2851],{"type":47,"value":2852},"How to condition these depends on cost basis mode:",{"type":41,"tag":1402,"props":2854,"children":2855},{},[2856,2865],{"type":41,"tag":1406,"props":2857,"children":2858},{},[2859,2863],{"type":41,"tag":61,"props":2860,"children":2861},{},[2862],{"type":47,"value":1906},{"type":47,"value":2864},": Can be global (no conditions), per-asset, or per-wallet-group depending on CoA structure. Ask the user.",{"type":41,"tag":1406,"props":2866,"children":2867},{},[2868,2872,2874],{"type":41,"tag":61,"props":2869,"children":2870},{},[2871],{"type":47,"value":1916},{"type":47,"value":2873},": Typically per-wallet. ",{"type":41,"tag":100,"props":2875,"children":2877},{"className":2876},[],[2878],{"type":47,"value":2879},"wallet=0x... → fee_account, gain_account, loss_account",{"type":41,"tag":80,"props":2881,"children":2883},{"id":2882},"only-use-data-that-exists",[2884],{"type":47,"value":2885},"Only Use Data That Exists",{"type":41,"tag":1402,"props":2887,"children":2888},{},[2889,2906,2916,2926],{"type":41,"tag":1406,"props":2890,"children":2891},{},[2892,2897,2899,2904],{"type":41,"tag":100,"props":2893,"children":2895},{"className":2894},[],[2896],{"type":47,"value":2617},{"type":47,"value":2898}," names MUST come from ",{"type":41,"tag":100,"props":2900,"children":2902},{"className":2901},[],[2903],{"type":47,"value":1061},{"type":47,"value":2905}," verified list — spelled exactly",{"type":41,"tag":1406,"props":2907,"children":2908},{},[2909,2914],{"type":41,"tag":100,"props":2910,"children":2912},{"className":2911},[],[2913],{"type":47,"value":716},{"type":47,"value":2915}," MUST come from the tags section — if no tags exist, don't create tag-based rules",{"type":41,"tag":1406,"props":2917,"children":2918},{},[2919,2921],{"type":47,"value":2920},"Account UUIDs MUST come from ",{"type":41,"tag":100,"props":2922,"children":2924},{"className":2923},[],[2925],{"type":47,"value":265},{"type":41,"tag":1406,"props":2927,"children":2928},{},[2929,2931],{"type":47,"value":2930},"Wallet identifiers MUST come from ",{"type":41,"tag":100,"props":2932,"children":2934},{"className":2933},[],[2935],{"type":47,"value":164},{"type":41,"tag":80,"props":2937,"children":2939},{"id":2938},"full-coverage",[2940],{"type":47,"value":2941},"Full Coverage",{"type":41,"tag":50,"props":2943,"children":2944},{},[2945],{"type":47,"value":2946},"Every transaction should hit at least:",{"type":41,"tag":1402,"props":2948,"children":2949},{},[2950,2955,2960,2965],{"type":41,"tag":1406,"props":2951,"children":2952},{},[2953],{"type":47,"value":2954},"One inventory rule (asset-specific or catch-all)",{"type":41,"tag":1406,"props":2956,"children":2957},{},[2958],{"type":47,"value":2959},"One income OR expense rule",{"type":41,"tag":1406,"props":2961,"children":2962},{},[2963],{"type":47,"value":2964},"Fee rule",{"type":41,"tag":1406,"props":2966,"children":2967},{},[2968],{"type":47,"value":2969},"Gain\u002Floss rule",{"type":41,"tag":80,"props":2971,"children":2973},{"id":2972},"rule-naming",[2974],{"type":47,"value":2975},"Rule Naming",{"type":41,"tag":50,"props":2977,"children":2978},{},[2979],{"type":47,"value":2980},"Names must be unique per integration. Follow the org's existing naming convention if one exists (check existing_rules.txt). Common patterns:",{"type":41,"tag":1402,"props":2982,"children":2983},{},[2984,3009,3034],{"type":41,"tag":1406,"props":2985,"children":2986},{},[2987,2989,2995,2996,3002,3003],{"type":47,"value":2988},"By wallet number: ",{"type":41,"tag":100,"props":2990,"children":2992},{"className":2991},[],[2993],{"type":47,"value":2994},"\"21\"",{"type":47,"value":1450},{"type":41,"tag":100,"props":2997,"children":2999},{"className":2998},[],[3000],{"type":47,"value":3001},"\"56 (VERSE)\"",{"type":47,"value":1450},{"type":41,"tag":100,"props":3004,"children":3006},{"className":3005},[],[3007],{"type":47,"value":3008},"\"54 - BS\"",{"type":41,"tag":1406,"props":3010,"children":3011},{},[3012,3014,3020,3021,3027,3028],{"type":47,"value":3013},"By purpose: ",{"type":41,"tag":100,"props":3015,"children":3017},{"className":3016},[],[3018],{"type":47,"value":3019},"\"Swap Clearing\"",{"type":47,"value":1450},{"type":41,"tag":100,"props":3022,"children":3024},{"className":3023},[],[3025],{"type":47,"value":3026},"\"Gas Fees\"",{"type":47,"value":1450},{"type":41,"tag":100,"props":3029,"children":3031},{"className":3030},[],[3032],{"type":47,"value":3033},"\"Staking Rewards\"",{"type":41,"tag":1406,"props":3035,"children":3036},{},[3037,3039,3045,3046],{"type":47,"value":3038},"By asset: ",{"type":41,"tag":100,"props":3040,"children":3042},{"className":3041},[],[3043],{"type":47,"value":3044},"\"ETH Inventory\"",{"type":47,"value":1450},{"type":41,"tag":100,"props":3047,"children":3049},{"className":3048},[],[3050],{"type":47,"value":3051},"\"BTC Main Ledger\"",{"type":41,"tag":50,"props":3053,"children":3054},{},[3055],{"type":47,"value":3056},"If no existing convention, use descriptive names.",{"type":41,"tag":69,"props":3058,"children":3059},{},[],{"type":41,"tag":73,"props":3061,"children":3063},{"id":3062},"technical-reference",[3064],{"type":47,"value":3065},"Technical Reference",{"type":41,"tag":80,"props":3067,"children":3069},{"id":3068},"account-fields",[3070],{"type":47,"value":3071},"Account Fields",{"type":41,"tag":50,"props":3073,"children":3074},{},[3075],{"type":47,"value":3076},"Rules can set these account fields:",{"type":41,"tag":1402,"props":3078,"children":3079},{},[3080,3088,3096,3104,3112,3121,3130],{"type":41,"tag":1406,"props":3081,"children":3082},{},[3083],{"type":41,"tag":100,"props":3084,"children":3086},{"className":3085},[],[3087],{"type":47,"value":2463},{"type":41,"tag":1406,"props":3089,"children":3090},{},[3091],{"type":41,"tag":100,"props":3092,"children":3094},{"className":3093},[],[3095],{"type":47,"value":2471},{"type":41,"tag":1406,"props":3097,"children":3098},{},[3099],{"type":41,"tag":100,"props":3100,"children":3102},{"className":3101},[],[3103],{"type":47,"value":2813},{"type":41,"tag":1406,"props":3105,"children":3106},{},[3107],{"type":41,"tag":100,"props":3108,"children":3110},{"className":3109},[],[3111],{"type":47,"value":2479},{"type":41,"tag":1406,"props":3113,"children":3114},{},[3115],{"type":41,"tag":100,"props":3116,"children":3118},{"className":3117},[],[3119],{"type":47,"value":3120},"gain_account",{"type":41,"tag":1406,"props":3122,"children":3123},{},[3124],{"type":41,"tag":100,"props":3125,"children":3127},{"className":3126},[],[3128],{"type":47,"value":3129},"loss_account",{"type":41,"tag":1406,"props":3131,"children":3132},{},[3133],{"type":41,"tag":100,"props":3134,"children":3136},{"className":3135},[],[3137],{"type":47,"value":3138},"unrealized_gain_loss_account",{"type":41,"tag":50,"props":3140,"children":3141},{},[3142,3144,3149],{"type":47,"value":3143},"Account assignments use UUIDs from ",{"type":41,"tag":100,"props":3145,"children":3147},{"className":3146},[],[3148],{"type":47,"value":265},{"type":47,"value":3150}," (the value in parentheses after the account name).",{"type":41,"tag":50,"props":3152,"children":3153},{},[3154,3156,3162,3163,3169,3170,3176],{"type":47,"value":3155},"When looking up accounts, always exclude non-account types: ",{"type":41,"tag":100,"props":3157,"children":3159},{"className":3158},[],[3160],{"type":47,"value":3161},"subsidiary",{"type":47,"value":1450},{"type":41,"tag":100,"props":3164,"children":3166},{"className":3165},[],[3167],{"type":47,"value":3168},"netsuite_class",{"type":47,"value":1450},{"type":41,"tag":100,"props":3171,"children":3173},{"className":3172},[],[3174],{"type":47,"value":3175},"netsuite_department",{"type":47,"value":3177},". The same internal ID can exist for both an account and a non-account entity.",{"type":41,"tag":80,"props":3179,"children":3181},{"id":3180},"rulesjson-format",[3182],{"type":47,"value":3183},"rules.json Format",{"type":41,"tag":92,"props":3185,"children":3189},{"className":3186,"code":3187,"language":3188,"meta":97,"style":97},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[\n  {\n    \"name\": \"Default\",\n    \"is_default\": true,\n    \"conditions\": {},\n    \"accounts\": {\n      \"inventory_account\": \"128\",\n      \"income_account\": \"54\",\n      \"expense_account\": \"58\",\n      \"fee_account\": \"235\",\n      \"gain_account\": \"233\",\n      \"loss_account\": \"234\"\n    },\n    \"is_ignore\": false\n  },\n  {\n    \"name\": \"ENA Inventory\",\n    \"conditions\": {\n      \"asset_class\": [{\"name\": \"Ethena\", \"verification_status\": \"verified\"}]\n    },\n    \"accounts\": {\n      \"inventory_account\": \"019cb750-28f8-72b7-8af0-8c9fba1d7555\"\n    },\n    \"is_ignore\": false\n  },\n  {\n    \"name\": \"Clearing\",\n    \"conditions\": {\n      \"tags\": [\"SWAP\", \"BRIDGE\", \"INTERNAL TRANSFER\"]\n    },\n    \"accounts\": {\n      \"income_account\": \"131\",\n      \"expense_account\": \"131\"\n    },\n    \"is_ignore\": false\n  },\n  {\n    \"name\": \"Spam\",\n    \"conditions\": {\n      \"tags\": [\"SPAM\"]\n    },\n    \"accounts\": {},\n    \"is_ignore\": true\n  }\n]\n","json",[3190],{"type":41,"tag":100,"props":3191,"children":3192},{"__ignoreMap":97},[3193,3202,3210,3253,3278,3303,3328,3366,3402,3438,3474,3510,3543,3551,3576,3584,3591,3627,3650,3744,3751,3774,3806,3813,3837,3845,3853,3890,3914,3991,3999,4023,4060,4092,4100,4124,4132,4140,4177,4201,4242,4250,4274,4299,4307],{"type":41,"tag":104,"props":3194,"children":3195},{"class":106,"line":107},[3196],{"type":41,"tag":104,"props":3197,"children":3199},{"style":3198},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[3200],{"type":47,"value":3201},"[\n",{"type":41,"tag":104,"props":3203,"children":3204},{"class":106,"line":182},[3205],{"type":41,"tag":104,"props":3206,"children":3207},{"style":3198},[3208],{"type":47,"value":3209},"  {\n",{"type":41,"tag":104,"props":3211,"children":3212},{"class":106,"line":191},[3213,3218,3224,3229,3233,3238,3244,3248],{"type":41,"tag":104,"props":3214,"children":3215},{"style":3198},[3216],{"type":47,"value":3217},"    \"",{"type":41,"tag":104,"props":3219,"children":3221},{"style":3220},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[3222],{"type":47,"value":3223},"name",{"type":41,"tag":104,"props":3225,"children":3226},{"style":3198},[3227],{"type":47,"value":3228},"\"",{"type":41,"tag":104,"props":3230,"children":3231},{"style":3198},[3232],{"type":47,"value":2493},{"type":41,"tag":104,"props":3234,"children":3235},{"style":3198},[3236],{"type":47,"value":3237}," \"",{"type":41,"tag":104,"props":3239,"children":3241},{"style":3240},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[3242],{"type":47,"value":3243},"Default",{"type":41,"tag":104,"props":3245,"children":3246},{"style":3198},[3247],{"type":47,"value":3228},{"type":41,"tag":104,"props":3249,"children":3250},{"style":3198},[3251],{"type":47,"value":3252},",\n",{"type":41,"tag":104,"props":3254,"children":3255},{"class":106,"line":200},[3256,3260,3265,3269,3273],{"type":41,"tag":104,"props":3257,"children":3258},{"style":3198},[3259],{"type":47,"value":3217},{"type":41,"tag":104,"props":3261,"children":3262},{"style":3220},[3263],{"type":47,"value":3264},"is_default",{"type":41,"tag":104,"props":3266,"children":3267},{"style":3198},[3268],{"type":47,"value":3228},{"type":41,"tag":104,"props":3270,"children":3271},{"style":3198},[3272],{"type":47,"value":2493},{"type":41,"tag":104,"props":3274,"children":3275},{"style":3198},[3276],{"type":47,"value":3277}," true,\n",{"type":41,"tag":104,"props":3279,"children":3280},{"class":106,"line":209},[3281,3285,3290,3294,3298],{"type":41,"tag":104,"props":3282,"children":3283},{"style":3198},[3284],{"type":47,"value":3217},{"type":41,"tag":104,"props":3286,"children":3287},{"style":3220},[3288],{"type":47,"value":3289},"conditions",{"type":41,"tag":104,"props":3291,"children":3292},{"style":3198},[3293],{"type":47,"value":3228},{"type":41,"tag":104,"props":3295,"children":3296},{"style":3198},[3297],{"type":47,"value":2493},{"type":41,"tag":104,"props":3299,"children":3300},{"style":3198},[3301],{"type":47,"value":3302}," {},\n",{"type":41,"tag":104,"props":3304,"children":3305},{"class":106,"line":218},[3306,3310,3315,3319,3323],{"type":41,"tag":104,"props":3307,"children":3308},{"style":3198},[3309],{"type":47,"value":3217},{"type":41,"tag":104,"props":3311,"children":3312},{"style":3220},[3313],{"type":47,"value":3314},"accounts",{"type":41,"tag":104,"props":3316,"children":3317},{"style":3198},[3318],{"type":47,"value":3228},{"type":41,"tag":104,"props":3320,"children":3321},{"style":3198},[3322],{"type":47,"value":2493},{"type":41,"tag":104,"props":3324,"children":3325},{"style":3198},[3326],{"type":47,"value":3327}," {\n",{"type":41,"tag":104,"props":3329,"children":3330},{"class":106,"line":471},[3331,3336,3341,3345,3349,3353,3358,3362],{"type":41,"tag":104,"props":3332,"children":3333},{"style":3198},[3334],{"type":47,"value":3335},"      \"",{"type":41,"tag":104,"props":3337,"children":3339},{"style":3338},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[3340],{"type":47,"value":2463},{"type":41,"tag":104,"props":3342,"children":3343},{"style":3198},[3344],{"type":47,"value":3228},{"type":41,"tag":104,"props":3346,"children":3347},{"style":3198},[3348],{"type":47,"value":2493},{"type":41,"tag":104,"props":3350,"children":3351},{"style":3198},[3352],{"type":47,"value":3237},{"type":41,"tag":104,"props":3354,"children":3355},{"style":3240},[3356],{"type":47,"value":3357},"128",{"type":41,"tag":104,"props":3359,"children":3360},{"style":3198},[3361],{"type":47,"value":3228},{"type":41,"tag":104,"props":3363,"children":3364},{"style":3198},[3365],{"type":47,"value":3252},{"type":41,"tag":104,"props":3367,"children":3368},{"class":106,"line":480},[3369,3373,3377,3381,3385,3389,3394,3398],{"type":41,"tag":104,"props":3370,"children":3371},{"style":3198},[3372],{"type":47,"value":3335},{"type":41,"tag":104,"props":3374,"children":3375},{"style":3338},[3376],{"type":47,"value":2471},{"type":41,"tag":104,"props":3378,"children":3379},{"style":3198},[3380],{"type":47,"value":3228},{"type":41,"tag":104,"props":3382,"children":3383},{"style":3198},[3384],{"type":47,"value":2493},{"type":41,"tag":104,"props":3386,"children":3387},{"style":3198},[3388],{"type":47,"value":3237},{"type":41,"tag":104,"props":3390,"children":3391},{"style":3240},[3392],{"type":47,"value":3393},"54",{"type":41,"tag":104,"props":3395,"children":3396},{"style":3198},[3397],{"type":47,"value":3228},{"type":41,"tag":104,"props":3399,"children":3400},{"style":3198},[3401],{"type":47,"value":3252},{"type":41,"tag":104,"props":3403,"children":3404},{"class":106,"line":488},[3405,3409,3413,3417,3421,3425,3430,3434],{"type":41,"tag":104,"props":3406,"children":3407},{"style":3198},[3408],{"type":47,"value":3335},{"type":41,"tag":104,"props":3410,"children":3411},{"style":3338},[3412],{"type":47,"value":2813},{"type":41,"tag":104,"props":3414,"children":3415},{"style":3198},[3416],{"type":47,"value":3228},{"type":41,"tag":104,"props":3418,"children":3419},{"style":3198},[3420],{"type":47,"value":2493},{"type":41,"tag":104,"props":3422,"children":3423},{"style":3198},[3424],{"type":47,"value":3237},{"type":41,"tag":104,"props":3426,"children":3427},{"style":3240},[3428],{"type":47,"value":3429},"58",{"type":41,"tag":104,"props":3431,"children":3432},{"style":3198},[3433],{"type":47,"value":3228},{"type":41,"tag":104,"props":3435,"children":3436},{"style":3198},[3437],{"type":47,"value":3252},{"type":41,"tag":104,"props":3439,"children":3440},{"class":106,"line":593},[3441,3445,3449,3453,3457,3461,3466,3470],{"type":41,"tag":104,"props":3442,"children":3443},{"style":3198},[3444],{"type":47,"value":3335},{"type":41,"tag":104,"props":3446,"children":3447},{"style":3338},[3448],{"type":47,"value":2479},{"type":41,"tag":104,"props":3450,"children":3451},{"style":3198},[3452],{"type":47,"value":3228},{"type":41,"tag":104,"props":3454,"children":3455},{"style":3198},[3456],{"type":47,"value":2493},{"type":41,"tag":104,"props":3458,"children":3459},{"style":3198},[3460],{"type":47,"value":3237},{"type":41,"tag":104,"props":3462,"children":3463},{"style":3240},[3464],{"type":47,"value":3465},"235",{"type":41,"tag":104,"props":3467,"children":3468},{"style":3198},[3469],{"type":47,"value":3228},{"type":41,"tag":104,"props":3471,"children":3472},{"style":3198},[3473],{"type":47,"value":3252},{"type":41,"tag":104,"props":3475,"children":3476},{"class":106,"line":601},[3477,3481,3485,3489,3493,3497,3502,3506],{"type":41,"tag":104,"props":3478,"children":3479},{"style":3198},[3480],{"type":47,"value":3335},{"type":41,"tag":104,"props":3482,"children":3483},{"style":3338},[3484],{"type":47,"value":3120},{"type":41,"tag":104,"props":3486,"children":3487},{"style":3198},[3488],{"type":47,"value":3228},{"type":41,"tag":104,"props":3490,"children":3491},{"style":3198},[3492],{"type":47,"value":2493},{"type":41,"tag":104,"props":3494,"children":3495},{"style":3198},[3496],{"type":47,"value":3237},{"type":41,"tag":104,"props":3498,"children":3499},{"style":3240},[3500],{"type":47,"value":3501},"233",{"type":41,"tag":104,"props":3503,"children":3504},{"style":3198},[3505],{"type":47,"value":3228},{"type":41,"tag":104,"props":3507,"children":3508},{"style":3198},[3509],{"type":47,"value":3252},{"type":41,"tag":104,"props":3511,"children":3512},{"class":106,"line":609},[3513,3517,3521,3525,3529,3533,3538],{"type":41,"tag":104,"props":3514,"children":3515},{"style":3198},[3516],{"type":47,"value":3335},{"type":41,"tag":104,"props":3518,"children":3519},{"style":3338},[3520],{"type":47,"value":3129},{"type":41,"tag":104,"props":3522,"children":3523},{"style":3198},[3524],{"type":47,"value":3228},{"type":41,"tag":104,"props":3526,"children":3527},{"style":3198},[3528],{"type":47,"value":2493},{"type":41,"tag":104,"props":3530,"children":3531},{"style":3198},[3532],{"type":47,"value":3237},{"type":41,"tag":104,"props":3534,"children":3535},{"style":3240},[3536],{"type":47,"value":3537},"234",{"type":41,"tag":104,"props":3539,"children":3540},{"style":3198},[3541],{"type":47,"value":3542},"\"\n",{"type":41,"tag":104,"props":3544,"children":3545},{"class":106,"line":618},[3546],{"type":41,"tag":104,"props":3547,"children":3548},{"style":3198},[3549],{"type":47,"value":3550},"    },\n",{"type":41,"tag":104,"props":3552,"children":3553},{"class":106,"line":627},[3554,3558,3563,3567,3571],{"type":41,"tag":104,"props":3555,"children":3556},{"style":3198},[3557],{"type":47,"value":3217},{"type":41,"tag":104,"props":3559,"children":3560},{"style":3220},[3561],{"type":47,"value":3562},"is_ignore",{"type":41,"tag":104,"props":3564,"children":3565},{"style":3198},[3566],{"type":47,"value":3228},{"type":41,"tag":104,"props":3568,"children":3569},{"style":3198},[3570],{"type":47,"value":2493},{"type":41,"tag":104,"props":3572,"children":3573},{"style":3198},[3574],{"type":47,"value":3575}," false\n",{"type":41,"tag":104,"props":3577,"children":3578},{"class":106,"line":635},[3579],{"type":41,"tag":104,"props":3580,"children":3581},{"style":3198},[3582],{"type":47,"value":3583},"  },\n",{"type":41,"tag":104,"props":3585,"children":3586},{"class":106,"line":643},[3587],{"type":41,"tag":104,"props":3588,"children":3589},{"style":3198},[3590],{"type":47,"value":3209},{"type":41,"tag":104,"props":3592,"children":3593},{"class":106,"line":652},[3594,3598,3602,3606,3610,3614,3619,3623],{"type":41,"tag":104,"props":3595,"children":3596},{"style":3198},[3597],{"type":47,"value":3217},{"type":41,"tag":104,"props":3599,"children":3600},{"style":3220},[3601],{"type":47,"value":3223},{"type":41,"tag":104,"props":3603,"children":3604},{"style":3198},[3605],{"type":47,"value":3228},{"type":41,"tag":104,"props":3607,"children":3608},{"style":3198},[3609],{"type":47,"value":2493},{"type":41,"tag":104,"props":3611,"children":3612},{"style":3198},[3613],{"type":47,"value":3237},{"type":41,"tag":104,"props":3615,"children":3616},{"style":3240},[3617],{"type":47,"value":3618},"ENA Inventory",{"type":41,"tag":104,"props":3620,"children":3621},{"style":3198},[3622],{"type":47,"value":3228},{"type":41,"tag":104,"props":3624,"children":3625},{"style":3198},[3626],{"type":47,"value":3252},{"type":41,"tag":104,"props":3628,"children":3629},{"class":106,"line":660},[3630,3634,3638,3642,3646],{"type":41,"tag":104,"props":3631,"children":3632},{"style":3198},[3633],{"type":47,"value":3217},{"type":41,"tag":104,"props":3635,"children":3636},{"style":3220},[3637],{"type":47,"value":3289},{"type":41,"tag":104,"props":3639,"children":3640},{"style":3198},[3641],{"type":47,"value":3228},{"type":41,"tag":104,"props":3643,"children":3644},{"style":3198},[3645],{"type":47,"value":2493},{"type":41,"tag":104,"props":3647,"children":3648},{"style":3198},[3649],{"type":47,"value":3327},{"type":41,"tag":104,"props":3651,"children":3652},{"class":106,"line":668},[3653,3657,3661,3665,3669,3674,3678,3683,3687,3691,3695,3700,3704,3709,3713,3718,3722,3726,3730,3735,3739],{"type":41,"tag":104,"props":3654,"children":3655},{"style":3198},[3656],{"type":47,"value":3335},{"type":41,"tag":104,"props":3658,"children":3659},{"style":3338},[3660],{"type":47,"value":2617},{"type":41,"tag":104,"props":3662,"children":3663},{"style":3198},[3664],{"type":47,"value":3228},{"type":41,"tag":104,"props":3666,"children":3667},{"style":3198},[3668],{"type":47,"value":2493},{"type":41,"tag":104,"props":3670,"children":3671},{"style":3198},[3672],{"type":47,"value":3673}," [{",{"type":41,"tag":104,"props":3675,"children":3676},{"style":3198},[3677],{"type":47,"value":3228},{"type":41,"tag":104,"props":3679,"children":3681},{"style":3680},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[3682],{"type":47,"value":3223},{"type":41,"tag":104,"props":3684,"children":3685},{"style":3198},[3686],{"type":47,"value":3228},{"type":41,"tag":104,"props":3688,"children":3689},{"style":3198},[3690],{"type":47,"value":2493},{"type":41,"tag":104,"props":3692,"children":3693},{"style":3198},[3694],{"type":47,"value":3237},{"type":41,"tag":104,"props":3696,"children":3697},{"style":3240},[3698],{"type":47,"value":3699},"Ethena",{"type":41,"tag":104,"props":3701,"children":3702},{"style":3198},[3703],{"type":47,"value":3228},{"type":41,"tag":104,"props":3705,"children":3706},{"style":3198},[3707],{"type":47,"value":3708},",",{"type":41,"tag":104,"props":3710,"children":3711},{"style":3198},[3712],{"type":47,"value":3237},{"type":41,"tag":104,"props":3714,"children":3715},{"style":3680},[3716],{"type":47,"value":3717},"verification_status",{"type":41,"tag":104,"props":3719,"children":3720},{"style":3198},[3721],{"type":47,"value":3228},{"type":41,"tag":104,"props":3723,"children":3724},{"style":3198},[3725],{"type":47,"value":2493},{"type":41,"tag":104,"props":3727,"children":3728},{"style":3198},[3729],{"type":47,"value":3237},{"type":41,"tag":104,"props":3731,"children":3732},{"style":3240},[3733],{"type":47,"value":3734},"verified",{"type":41,"tag":104,"props":3736,"children":3737},{"style":3198},[3738],{"type":47,"value":3228},{"type":41,"tag":104,"props":3740,"children":3741},{"style":3198},[3742],{"type":47,"value":3743},"}]\n",{"type":41,"tag":104,"props":3745,"children":3746},{"class":106,"line":676},[3747],{"type":41,"tag":104,"props":3748,"children":3749},{"style":3198},[3750],{"type":47,"value":3550},{"type":41,"tag":104,"props":3752,"children":3753},{"class":106,"line":684},[3754,3758,3762,3766,3770],{"type":41,"tag":104,"props":3755,"children":3756},{"style":3198},[3757],{"type":47,"value":3217},{"type":41,"tag":104,"props":3759,"children":3760},{"style":3220},[3761],{"type":47,"value":3314},{"type":41,"tag":104,"props":3763,"children":3764},{"style":3198},[3765],{"type":47,"value":3228},{"type":41,"tag":104,"props":3767,"children":3768},{"style":3198},[3769],{"type":47,"value":2493},{"type":41,"tag":104,"props":3771,"children":3772},{"style":3198},[3773],{"type":47,"value":3327},{"type":41,"tag":104,"props":3775,"children":3776},{"class":106,"line":692},[3777,3781,3785,3789,3793,3797,3802],{"type":41,"tag":104,"props":3778,"children":3779},{"style":3198},[3780],{"type":47,"value":3335},{"type":41,"tag":104,"props":3782,"children":3783},{"style":3338},[3784],{"type":47,"value":2463},{"type":41,"tag":104,"props":3786,"children":3787},{"style":3198},[3788],{"type":47,"value":3228},{"type":41,"tag":104,"props":3790,"children":3791},{"style":3198},[3792],{"type":47,"value":2493},{"type":41,"tag":104,"props":3794,"children":3795},{"style":3198},[3796],{"type":47,"value":3237},{"type":41,"tag":104,"props":3798,"children":3799},{"style":3240},[3800],{"type":47,"value":3801},"019cb750-28f8-72b7-8af0-8c9fba1d7555",{"type":41,"tag":104,"props":3803,"children":3804},{"style":3198},[3805],{"type":47,"value":3542},{"type":41,"tag":104,"props":3807,"children":3808},{"class":106,"line":700},[3809],{"type":41,"tag":104,"props":3810,"children":3811},{"style":3198},[3812],{"type":47,"value":3550},{"type":41,"tag":104,"props":3814,"children":3816},{"class":106,"line":3815},24,[3817,3821,3825,3829,3833],{"type":41,"tag":104,"props":3818,"children":3819},{"style":3198},[3820],{"type":47,"value":3217},{"type":41,"tag":104,"props":3822,"children":3823},{"style":3220},[3824],{"type":47,"value":3562},{"type":41,"tag":104,"props":3826,"children":3827},{"style":3198},[3828],{"type":47,"value":3228},{"type":41,"tag":104,"props":3830,"children":3831},{"style":3198},[3832],{"type":47,"value":2493},{"type":41,"tag":104,"props":3834,"children":3835},{"style":3198},[3836],{"type":47,"value":3575},{"type":41,"tag":104,"props":3838,"children":3840},{"class":106,"line":3839},25,[3841],{"type":41,"tag":104,"props":3842,"children":3843},{"style":3198},[3844],{"type":47,"value":3583},{"type":41,"tag":104,"props":3846,"children":3848},{"class":106,"line":3847},26,[3849],{"type":41,"tag":104,"props":3850,"children":3851},{"style":3198},[3852],{"type":47,"value":3209},{"type":41,"tag":104,"props":3854,"children":3856},{"class":106,"line":3855},27,[3857,3861,3865,3869,3873,3877,3882,3886],{"type":41,"tag":104,"props":3858,"children":3859},{"style":3198},[3860],{"type":47,"value":3217},{"type":41,"tag":104,"props":3862,"children":3863},{"style":3220},[3864],{"type":47,"value":3223},{"type":41,"tag":104,"props":3866,"children":3867},{"style":3198},[3868],{"type":47,"value":3228},{"type":41,"tag":104,"props":3870,"children":3871},{"style":3198},[3872],{"type":47,"value":2493},{"type":41,"tag":104,"props":3874,"children":3875},{"style":3198},[3876],{"type":47,"value":3237},{"type":41,"tag":104,"props":3878,"children":3879},{"style":3240},[3880],{"type":47,"value":3881},"Clearing",{"type":41,"tag":104,"props":3883,"children":3884},{"style":3198},[3885],{"type":47,"value":3228},{"type":41,"tag":104,"props":3887,"children":3888},{"style":3198},[3889],{"type":47,"value":3252},{"type":41,"tag":104,"props":3891,"children":3893},{"class":106,"line":3892},28,[3894,3898,3902,3906,3910],{"type":41,"tag":104,"props":3895,"children":3896},{"style":3198},[3897],{"type":47,"value":3217},{"type":41,"tag":104,"props":3899,"children":3900},{"style":3220},[3901],{"type":47,"value":3289},{"type":41,"tag":104,"props":3903,"children":3904},{"style":3198},[3905],{"type":47,"value":3228},{"type":41,"tag":104,"props":3907,"children":3908},{"style":3198},[3909],{"type":47,"value":2493},{"type":41,"tag":104,"props":3911,"children":3912},{"style":3198},[3913],{"type":47,"value":3327},{"type":41,"tag":104,"props":3915,"children":3917},{"class":106,"line":3916},29,[3918,3922,3926,3930,3934,3939,3943,3948,3952,3956,3960,3965,3969,3973,3977,3982,3986],{"type":41,"tag":104,"props":3919,"children":3920},{"style":3198},[3921],{"type":47,"value":3335},{"type":41,"tag":104,"props":3923,"children":3924},{"style":3338},[3925],{"type":47,"value":716},{"type":41,"tag":104,"props":3927,"children":3928},{"style":3198},[3929],{"type":47,"value":3228},{"type":41,"tag":104,"props":3931,"children":3932},{"style":3198},[3933],{"type":47,"value":2493},{"type":41,"tag":104,"props":3935,"children":3936},{"style":3198},[3937],{"type":47,"value":3938}," [",{"type":41,"tag":104,"props":3940,"children":3941},{"style":3198},[3942],{"type":47,"value":3228},{"type":41,"tag":104,"props":3944,"children":3945},{"style":3240},[3946],{"type":47,"value":3947},"SWAP",{"type":41,"tag":104,"props":3949,"children":3950},{"style":3198},[3951],{"type":47,"value":3228},{"type":41,"tag":104,"props":3953,"children":3954},{"style":3198},[3955],{"type":47,"value":3708},{"type":41,"tag":104,"props":3957,"children":3958},{"style":3198},[3959],{"type":47,"value":3237},{"type":41,"tag":104,"props":3961,"children":3962},{"style":3240},[3963],{"type":47,"value":3964},"BRIDGE",{"type":41,"tag":104,"props":3966,"children":3967},{"style":3198},[3968],{"type":47,"value":3228},{"type":41,"tag":104,"props":3970,"children":3971},{"style":3198},[3972],{"type":47,"value":3708},{"type":41,"tag":104,"props":3974,"children":3975},{"style":3198},[3976],{"type":47,"value":3237},{"type":41,"tag":104,"props":3978,"children":3979},{"style":3240},[3980],{"type":47,"value":3981},"INTERNAL TRANSFER",{"type":41,"tag":104,"props":3983,"children":3984},{"style":3198},[3985],{"type":47,"value":3228},{"type":41,"tag":104,"props":3987,"children":3988},{"style":3198},[3989],{"type":47,"value":3990},"]\n",{"type":41,"tag":104,"props":3992,"children":3994},{"class":106,"line":3993},30,[3995],{"type":41,"tag":104,"props":3996,"children":3997},{"style":3198},[3998],{"type":47,"value":3550},{"type":41,"tag":104,"props":4000,"children":4002},{"class":106,"line":4001},31,[4003,4007,4011,4015,4019],{"type":41,"tag":104,"props":4004,"children":4005},{"style":3198},[4006],{"type":47,"value":3217},{"type":41,"tag":104,"props":4008,"children":4009},{"style":3220},[4010],{"type":47,"value":3314},{"type":41,"tag":104,"props":4012,"children":4013},{"style":3198},[4014],{"type":47,"value":3228},{"type":41,"tag":104,"props":4016,"children":4017},{"style":3198},[4018],{"type":47,"value":2493},{"type":41,"tag":104,"props":4020,"children":4021},{"style":3198},[4022],{"type":47,"value":3327},{"type":41,"tag":104,"props":4024,"children":4026},{"class":106,"line":4025},32,[4027,4031,4035,4039,4043,4047,4052,4056],{"type":41,"tag":104,"props":4028,"children":4029},{"style":3198},[4030],{"type":47,"value":3335},{"type":41,"tag":104,"props":4032,"children":4033},{"style":3338},[4034],{"type":47,"value":2471},{"type":41,"tag":104,"props":4036,"children":4037},{"style":3198},[4038],{"type":47,"value":3228},{"type":41,"tag":104,"props":4040,"children":4041},{"style":3198},[4042],{"type":47,"value":2493},{"type":41,"tag":104,"props":4044,"children":4045},{"style":3198},[4046],{"type":47,"value":3237},{"type":41,"tag":104,"props":4048,"children":4049},{"style":3240},[4050],{"type":47,"value":4051},"131",{"type":41,"tag":104,"props":4053,"children":4054},{"style":3198},[4055],{"type":47,"value":3228},{"type":41,"tag":104,"props":4057,"children":4058},{"style":3198},[4059],{"type":47,"value":3252},{"type":41,"tag":104,"props":4061,"children":4063},{"class":106,"line":4062},33,[4064,4068,4072,4076,4080,4084,4088],{"type":41,"tag":104,"props":4065,"children":4066},{"style":3198},[4067],{"type":47,"value":3335},{"type":41,"tag":104,"props":4069,"children":4070},{"style":3338},[4071],{"type":47,"value":2813},{"type":41,"tag":104,"props":4073,"children":4074},{"style":3198},[4075],{"type":47,"value":3228},{"type":41,"tag":104,"props":4077,"children":4078},{"style":3198},[4079],{"type":47,"value":2493},{"type":41,"tag":104,"props":4081,"children":4082},{"style":3198},[4083],{"type":47,"value":3237},{"type":41,"tag":104,"props":4085,"children":4086},{"style":3240},[4087],{"type":47,"value":4051},{"type":41,"tag":104,"props":4089,"children":4090},{"style":3198},[4091],{"type":47,"value":3542},{"type":41,"tag":104,"props":4093,"children":4095},{"class":106,"line":4094},34,[4096],{"type":41,"tag":104,"props":4097,"children":4098},{"style":3198},[4099],{"type":47,"value":3550},{"type":41,"tag":104,"props":4101,"children":4103},{"class":106,"line":4102},35,[4104,4108,4112,4116,4120],{"type":41,"tag":104,"props":4105,"children":4106},{"style":3198},[4107],{"type":47,"value":3217},{"type":41,"tag":104,"props":4109,"children":4110},{"style":3220},[4111],{"type":47,"value":3562},{"type":41,"tag":104,"props":4113,"children":4114},{"style":3198},[4115],{"type":47,"value":3228},{"type":41,"tag":104,"props":4117,"children":4118},{"style":3198},[4119],{"type":47,"value":2493},{"type":41,"tag":104,"props":4121,"children":4122},{"style":3198},[4123],{"type":47,"value":3575},{"type":41,"tag":104,"props":4125,"children":4127},{"class":106,"line":4126},36,[4128],{"type":41,"tag":104,"props":4129,"children":4130},{"style":3198},[4131],{"type":47,"value":3583},{"type":41,"tag":104,"props":4133,"children":4135},{"class":106,"line":4134},37,[4136],{"type":41,"tag":104,"props":4137,"children":4138},{"style":3198},[4139],{"type":47,"value":3209},{"type":41,"tag":104,"props":4141,"children":4143},{"class":106,"line":4142},38,[4144,4148,4152,4156,4160,4164,4169,4173],{"type":41,"tag":104,"props":4145,"children":4146},{"style":3198},[4147],{"type":47,"value":3217},{"type":41,"tag":104,"props":4149,"children":4150},{"style":3220},[4151],{"type":47,"value":3223},{"type":41,"tag":104,"props":4153,"children":4154},{"style":3198},[4155],{"type":47,"value":3228},{"type":41,"tag":104,"props":4157,"children":4158},{"style":3198},[4159],{"type":47,"value":2493},{"type":41,"tag":104,"props":4161,"children":4162},{"style":3198},[4163],{"type":47,"value":3237},{"type":41,"tag":104,"props":4165,"children":4166},{"style":3240},[4167],{"type":47,"value":4168},"Spam",{"type":41,"tag":104,"props":4170,"children":4171},{"style":3198},[4172],{"type":47,"value":3228},{"type":41,"tag":104,"props":4174,"children":4175},{"style":3198},[4176],{"type":47,"value":3252},{"type":41,"tag":104,"props":4178,"children":4180},{"class":106,"line":4179},39,[4181,4185,4189,4193,4197],{"type":41,"tag":104,"props":4182,"children":4183},{"style":3198},[4184],{"type":47,"value":3217},{"type":41,"tag":104,"props":4186,"children":4187},{"style":3220},[4188],{"type":47,"value":3289},{"type":41,"tag":104,"props":4190,"children":4191},{"style":3198},[4192],{"type":47,"value":3228},{"type":41,"tag":104,"props":4194,"children":4195},{"style":3198},[4196],{"type":47,"value":2493},{"type":41,"tag":104,"props":4198,"children":4199},{"style":3198},[4200],{"type":47,"value":3327},{"type":41,"tag":104,"props":4202,"children":4204},{"class":106,"line":4203},40,[4205,4209,4213,4217,4221,4225,4229,4234,4238],{"type":41,"tag":104,"props":4206,"children":4207},{"style":3198},[4208],{"type":47,"value":3335},{"type":41,"tag":104,"props":4210,"children":4211},{"style":3338},[4212],{"type":47,"value":716},{"type":41,"tag":104,"props":4214,"children":4215},{"style":3198},[4216],{"type":47,"value":3228},{"type":41,"tag":104,"props":4218,"children":4219},{"style":3198},[4220],{"type":47,"value":2493},{"type":41,"tag":104,"props":4222,"children":4223},{"style":3198},[4224],{"type":47,"value":3938},{"type":41,"tag":104,"props":4226,"children":4227},{"style":3198},[4228],{"type":47,"value":3228},{"type":41,"tag":104,"props":4230,"children":4231},{"style":3240},[4232],{"type":47,"value":4233},"SPAM",{"type":41,"tag":104,"props":4235,"children":4236},{"style":3198},[4237],{"type":47,"value":3228},{"type":41,"tag":104,"props":4239,"children":4240},{"style":3198},[4241],{"type":47,"value":3990},{"type":41,"tag":104,"props":4243,"children":4245},{"class":106,"line":4244},41,[4246],{"type":41,"tag":104,"props":4247,"children":4248},{"style":3198},[4249],{"type":47,"value":3550},{"type":41,"tag":104,"props":4251,"children":4253},{"class":106,"line":4252},42,[4254,4258,4262,4266,4270],{"type":41,"tag":104,"props":4255,"children":4256},{"style":3198},[4257],{"type":47,"value":3217},{"type":41,"tag":104,"props":4259,"children":4260},{"style":3220},[4261],{"type":47,"value":3314},{"type":41,"tag":104,"props":4263,"children":4264},{"style":3198},[4265],{"type":47,"value":3228},{"type":41,"tag":104,"props":4267,"children":4268},{"style":3198},[4269],{"type":47,"value":2493},{"type":41,"tag":104,"props":4271,"children":4272},{"style":3198},[4273],{"type":47,"value":3302},{"type":41,"tag":104,"props":4275,"children":4277},{"class":106,"line":4276},43,[4278,4282,4286,4290,4294],{"type":41,"tag":104,"props":4279,"children":4280},{"style":3198},[4281],{"type":47,"value":3217},{"type":41,"tag":104,"props":4283,"children":4284},{"style":3220},[4285],{"type":47,"value":3562},{"type":41,"tag":104,"props":4287,"children":4288},{"style":3198},[4289],{"type":47,"value":3228},{"type":41,"tag":104,"props":4291,"children":4292},{"style":3198},[4293],{"type":47,"value":2493},{"type":41,"tag":104,"props":4295,"children":4296},{"style":3198},[4297],{"type":47,"value":4298}," true\n",{"type":41,"tag":104,"props":4300,"children":4302},{"class":106,"line":4301},44,[4303],{"type":41,"tag":104,"props":4304,"children":4305},{"style":3198},[4306],{"type":47,"value":215},{"type":41,"tag":104,"props":4308,"children":4310},{"class":106,"line":4309},45,[4311],{"type":41,"tag":104,"props":4312,"children":4313},{"style":3198},[4314],{"type":47,"value":3990},{"type":41,"tag":1402,"props":4316,"children":4317},{},[4318,4337,4342],{"type":41,"tag":1406,"props":4319,"children":4320},{},[4321,4323,4328,4330,4335],{"type":47,"value":4322},"Mark the default rule with ",{"type":41,"tag":100,"props":4324,"children":4326},{"className":4325},[],[4327],{"type":47,"value":2583},{"type":47,"value":4329}," — this creates it as ",{"type":41,"tag":100,"props":4331,"children":4333},{"className":4332},[],[4334],{"type":47,"value":2511},{"type":47,"value":4336}," via upsertRule",{"type":41,"tag":1406,"props":4338,"children":4339},{},[4340],{"type":47,"value":4341},"Only include condition keys that have values",{"type":41,"tag":1406,"props":4343,"children":4344},{},[4345,4351],{"type":41,"tag":100,"props":4346,"children":4348},{"className":4347},[],[4349],{"type":47,"value":4350},"is_ignore: true",{"type":47,"value":4352}," marks the rule as an ignore rule (transactions matching it are excluded from the journal)",{"type":41,"tag":80,"props":4354,"children":4356},{"id":4355},"upsertrule-input-format",[4357],{"type":47,"value":2368},{"type":41,"tag":50,"props":4359,"children":4360},{},[4361,4363,4368],{"type":47,"value":4362},"When applying rules via MCP, map from ",{"type":41,"tag":100,"props":4364,"children":4366},{"className":4365},[],[4367],{"type":47,"value":2182},{"type":47,"value":4369}," to this format:",{"type":41,"tag":92,"props":4371,"children":4373},{"className":3186,"code":4372,"language":3188,"meta":97,"style":97},"{\n  \"type\": \"CUSTOM_RULE\",\n  \"identifier\": null,\n  \"name\": \"ETH Inventory\",\n  \"accounts\": {\n    \"inventory\": {\"name\": \"Digital Assets\", \"value\": \"uuid\", \"type\": \"asset\"},\n    \"income\": null,\n    \"expense\": null,\n    \"fee\": null,\n    \"gain\": null,\n    \"loss\": null,\n    \"unrealizedGainLoss\": null\n  },\n  \"filters\": {\n    \"assetClassNames\": [{\"id\": \"Ethereum#verified\", \"name\": \"Ethereum\", \"symbol\": \"ETH\", \"isVerified\": true, \"assetClassId\": null}],\n    \"wallets\": [],\n    \"senders\": [],\n    \"recipients\": [],\n    \"platforms\": [],\n    \"tags\": [],\n    \"actions\": [],\n    \"contracts\": [],\n    \"specificIds\": [],\n    \"walletTagsSenders\": [],\n    \"walletTagsRecipients\": [],\n    \"financialActionGroups\": [],\n    \"contactGroupsSenders\": [],\n    \"contactGroupsRecipients\": [],\n    \"isInternalTransfer\": null,\n    \"fromDate\": null,\n    \"toDate\": null\n  },\n  \"isIgnore\": false\n}\n",[4374],{"type":41,"tag":100,"props":4375,"children":4376},{"__ignoreMap":97},[4377,4385,4423,4447,4482,4505,4631,4655,4679,4703,4727,4751,4776,4783,4807,4976,5001,5025,5049,5073,5096,5120,5144,5168,5192,5216,5240,5264,5288,5312,5336,5360,5367,5391],{"type":41,"tag":104,"props":4378,"children":4379},{"class":106,"line":107},[4380],{"type":41,"tag":104,"props":4381,"children":4382},{"style":3198},[4383],{"type":47,"value":4384},"{\n",{"type":41,"tag":104,"props":4386,"children":4387},{"class":106,"line":182},[4388,4393,4398,4402,4406,4410,4415,4419],{"type":41,"tag":104,"props":4389,"children":4390},{"style":3198},[4391],{"type":47,"value":4392},"  \"",{"type":41,"tag":104,"props":4394,"children":4395},{"style":3220},[4396],{"type":47,"value":4397},"type",{"type":41,"tag":104,"props":4399,"children":4400},{"style":3198},[4401],{"type":47,"value":3228},{"type":41,"tag":104,"props":4403,"children":4404},{"style":3198},[4405],{"type":47,"value":2493},{"type":41,"tag":104,"props":4407,"children":4408},{"style":3198},[4409],{"type":47,"value":3237},{"type":41,"tag":104,"props":4411,"children":4412},{"style":3240},[4413],{"type":47,"value":4414},"CUSTOM_RULE",{"type":41,"tag":104,"props":4416,"children":4417},{"style":3198},[4418],{"type":47,"value":3228},{"type":41,"tag":104,"props":4420,"children":4421},{"style":3198},[4422],{"type":47,"value":3252},{"type":41,"tag":104,"props":4424,"children":4425},{"class":106,"line":191},[4426,4430,4434,4438,4442],{"type":41,"tag":104,"props":4427,"children":4428},{"style":3198},[4429],{"type":47,"value":4392},{"type":41,"tag":104,"props":4431,"children":4432},{"style":3220},[4433],{"type":47,"value":2236},{"type":41,"tag":104,"props":4435,"children":4436},{"style":3198},[4437],{"type":47,"value":3228},{"type":41,"tag":104,"props":4439,"children":4440},{"style":3198},[4441],{"type":47,"value":2493},{"type":41,"tag":104,"props":4443,"children":4444},{"style":3198},[4445],{"type":47,"value":4446}," null,\n",{"type":41,"tag":104,"props":4448,"children":4449},{"class":106,"line":200},[4450,4454,4458,4462,4466,4470,4474,4478],{"type":41,"tag":104,"props":4451,"children":4452},{"style":3198},[4453],{"type":47,"value":4392},{"type":41,"tag":104,"props":4455,"children":4456},{"style":3220},[4457],{"type":47,"value":3223},{"type":41,"tag":104,"props":4459,"children":4460},{"style":3198},[4461],{"type":47,"value":3228},{"type":41,"tag":104,"props":4463,"children":4464},{"style":3198},[4465],{"type":47,"value":2493},{"type":41,"tag":104,"props":4467,"children":4468},{"style":3198},[4469],{"type":47,"value":3237},{"type":41,"tag":104,"props":4471,"children":4472},{"style":3240},[4473],{"type":47,"value":2084},{"type":41,"tag":104,"props":4475,"children":4476},{"style":3198},[4477],{"type":47,"value":3228},{"type":41,"tag":104,"props":4479,"children":4480},{"style":3198},[4481],{"type":47,"value":3252},{"type":41,"tag":104,"props":4483,"children":4484},{"class":106,"line":209},[4485,4489,4493,4497,4501],{"type":41,"tag":104,"props":4486,"children":4487},{"style":3198},[4488],{"type":47,"value":4392},{"type":41,"tag":104,"props":4490,"children":4491},{"style":3220},[4492],{"type":47,"value":3314},{"type":41,"tag":104,"props":4494,"children":4495},{"style":3198},[4496],{"type":47,"value":3228},{"type":41,"tag":104,"props":4498,"children":4499},{"style":3198},[4500],{"type":47,"value":2493},{"type":41,"tag":104,"props":4502,"children":4503},{"style":3198},[4504],{"type":47,"value":3327},{"type":41,"tag":104,"props":4506,"children":4507},{"class":106,"line":218},[4508,4512,4517,4521,4525,4530,4534,4538,4542,4546,4550,4555,4559,4563,4567,4572,4576,4580,4584,4589,4593,4597,4601,4605,4609,4613,4617,4622,4626],{"type":41,"tag":104,"props":4509,"children":4510},{"style":3198},[4511],{"type":47,"value":3217},{"type":41,"tag":104,"props":4513,"children":4514},{"style":3338},[4515],{"type":47,"value":4516},"inventory",{"type":41,"tag":104,"props":4518,"children":4519},{"style":3198},[4520],{"type":47,"value":3228},{"type":41,"tag":104,"props":4522,"children":4523},{"style":3198},[4524],{"type":47,"value":2493},{"type":41,"tag":104,"props":4526,"children":4527},{"style":3198},[4528],{"type":47,"value":4529}," {",{"type":41,"tag":104,"props":4531,"children":4532},{"style":3198},[4533],{"type":47,"value":3228},{"type":41,"tag":104,"props":4535,"children":4536},{"style":3680},[4537],{"type":47,"value":3223},{"type":41,"tag":104,"props":4539,"children":4540},{"style":3198},[4541],{"type":47,"value":3228},{"type":41,"tag":104,"props":4543,"children":4544},{"style":3198},[4545],{"type":47,"value":2493},{"type":41,"tag":104,"props":4547,"children":4548},{"style":3198},[4549],{"type":47,"value":3237},{"type":41,"tag":104,"props":4551,"children":4552},{"style":3240},[4553],{"type":47,"value":4554},"Digital Assets",{"type":41,"tag":104,"props":4556,"children":4557},{"style":3198},[4558],{"type":47,"value":3228},{"type":41,"tag":104,"props":4560,"children":4561},{"style":3198},[4562],{"type":47,"value":3708},{"type":41,"tag":104,"props":4564,"children":4565},{"style":3198},[4566],{"type":47,"value":3237},{"type":41,"tag":104,"props":4568,"children":4569},{"style":3680},[4570],{"type":47,"value":4571},"value",{"type":41,"tag":104,"props":4573,"children":4574},{"style":3198},[4575],{"type":47,"value":3228},{"type":41,"tag":104,"props":4577,"children":4578},{"style":3198},[4579],{"type":47,"value":2493},{"type":41,"tag":104,"props":4581,"children":4582},{"style":3198},[4583],{"type":47,"value":3237},{"type":41,"tag":104,"props":4585,"children":4586},{"style":3240},[4587],{"type":47,"value":4588},"uuid",{"type":41,"tag":104,"props":4590,"children":4591},{"style":3198},[4592],{"type":47,"value":3228},{"type":41,"tag":104,"props":4594,"children":4595},{"style":3198},[4596],{"type":47,"value":3708},{"type":41,"tag":104,"props":4598,"children":4599},{"style":3198},[4600],{"type":47,"value":3237},{"type":41,"tag":104,"props":4602,"children":4603},{"style":3680},[4604],{"type":47,"value":4397},{"type":41,"tag":104,"props":4606,"children":4607},{"style":3198},[4608],{"type":47,"value":3228},{"type":41,"tag":104,"props":4610,"children":4611},{"style":3198},[4612],{"type":47,"value":2493},{"type":41,"tag":104,"props":4614,"children":4615},{"style":3198},[4616],{"type":47,"value":3237},{"type":41,"tag":104,"props":4618,"children":4619},{"style":3240},[4620],{"type":47,"value":4621},"asset",{"type":41,"tag":104,"props":4623,"children":4624},{"style":3198},[4625],{"type":47,"value":3228},{"type":41,"tag":104,"props":4627,"children":4628},{"style":3198},[4629],{"type":47,"value":4630},"},\n",{"type":41,"tag":104,"props":4632,"children":4633},{"class":106,"line":471},[4634,4638,4643,4647,4651],{"type":41,"tag":104,"props":4635,"children":4636},{"style":3198},[4637],{"type":47,"value":3217},{"type":41,"tag":104,"props":4639,"children":4640},{"style":3338},[4641],{"type":47,"value":4642},"income",{"type":41,"tag":104,"props":4644,"children":4645},{"style":3198},[4646],{"type":47,"value":3228},{"type":41,"tag":104,"props":4648,"children":4649},{"style":3198},[4650],{"type":47,"value":2493},{"type":41,"tag":104,"props":4652,"children":4653},{"style":3198},[4654],{"type":47,"value":4446},{"type":41,"tag":104,"props":4656,"children":4657},{"class":106,"line":480},[4658,4662,4667,4671,4675],{"type":41,"tag":104,"props":4659,"children":4660},{"style":3198},[4661],{"type":47,"value":3217},{"type":41,"tag":104,"props":4663,"children":4664},{"style":3338},[4665],{"type":47,"value":4666},"expense",{"type":41,"tag":104,"props":4668,"children":4669},{"style":3198},[4670],{"type":47,"value":3228},{"type":41,"tag":104,"props":4672,"children":4673},{"style":3198},[4674],{"type":47,"value":2493},{"type":41,"tag":104,"props":4676,"children":4677},{"style":3198},[4678],{"type":47,"value":4446},{"type":41,"tag":104,"props":4680,"children":4681},{"class":106,"line":488},[4682,4686,4691,4695,4699],{"type":41,"tag":104,"props":4683,"children":4684},{"style":3198},[4685],{"type":47,"value":3217},{"type":41,"tag":104,"props":4687,"children":4688},{"style":3338},[4689],{"type":47,"value":4690},"fee",{"type":41,"tag":104,"props":4692,"children":4693},{"style":3198},[4694],{"type":47,"value":3228},{"type":41,"tag":104,"props":4696,"children":4697},{"style":3198},[4698],{"type":47,"value":2493},{"type":41,"tag":104,"props":4700,"children":4701},{"style":3198},[4702],{"type":47,"value":4446},{"type":41,"tag":104,"props":4704,"children":4705},{"class":106,"line":593},[4706,4710,4715,4719,4723],{"type":41,"tag":104,"props":4707,"children":4708},{"style":3198},[4709],{"type":47,"value":3217},{"type":41,"tag":104,"props":4711,"children":4712},{"style":3338},[4713],{"type":47,"value":4714},"gain",{"type":41,"tag":104,"props":4716,"children":4717},{"style":3198},[4718],{"type":47,"value":3228},{"type":41,"tag":104,"props":4720,"children":4721},{"style":3198},[4722],{"type":47,"value":2493},{"type":41,"tag":104,"props":4724,"children":4725},{"style":3198},[4726],{"type":47,"value":4446},{"type":41,"tag":104,"props":4728,"children":4729},{"class":106,"line":601},[4730,4734,4739,4743,4747],{"type":41,"tag":104,"props":4731,"children":4732},{"style":3198},[4733],{"type":47,"value":3217},{"type":41,"tag":104,"props":4735,"children":4736},{"style":3338},[4737],{"type":47,"value":4738},"loss",{"type":41,"tag":104,"props":4740,"children":4741},{"style":3198},[4742],{"type":47,"value":3228},{"type":41,"tag":104,"props":4744,"children":4745},{"style":3198},[4746],{"type":47,"value":2493},{"type":41,"tag":104,"props":4748,"children":4749},{"style":3198},[4750],{"type":47,"value":4446},{"type":41,"tag":104,"props":4752,"children":4753},{"class":106,"line":609},[4754,4758,4763,4767,4771],{"type":41,"tag":104,"props":4755,"children":4756},{"style":3198},[4757],{"type":47,"value":3217},{"type":41,"tag":104,"props":4759,"children":4760},{"style":3338},[4761],{"type":47,"value":4762},"unrealizedGainLoss",{"type":41,"tag":104,"props":4764,"children":4765},{"style":3198},[4766],{"type":47,"value":3228},{"type":41,"tag":104,"props":4768,"children":4769},{"style":3198},[4770],{"type":47,"value":2493},{"type":41,"tag":104,"props":4772,"children":4773},{"style":3198},[4774],{"type":47,"value":4775}," null\n",{"type":41,"tag":104,"props":4777,"children":4778},{"class":106,"line":618},[4779],{"type":41,"tag":104,"props":4780,"children":4781},{"style":3198},[4782],{"type":47,"value":3583},{"type":41,"tag":104,"props":4784,"children":4785},{"class":106,"line":627},[4786,4790,4795,4799,4803],{"type":41,"tag":104,"props":4787,"children":4788},{"style":3198},[4789],{"type":47,"value":4392},{"type":41,"tag":104,"props":4791,"children":4792},{"style":3220},[4793],{"type":47,"value":4794},"filters",{"type":41,"tag":104,"props":4796,"children":4797},{"style":3198},[4798],{"type":47,"value":3228},{"type":41,"tag":104,"props":4800,"children":4801},{"style":3198},[4802],{"type":47,"value":2493},{"type":41,"tag":104,"props":4804,"children":4805},{"style":3198},[4806],{"type":47,"value":3327},{"type":41,"tag":104,"props":4808,"children":4809},{"class":106,"line":635},[4810,4814,4819,4823,4827,4831,4835,4840,4844,4848,4852,4857,4861,4865,4869,4873,4877,4881,4885,4890,4894,4898,4902,4907,4911,4915,4919,4924,4928,4932,4936,4941,4945,4949,4954,4958,4963,4967,4971],{"type":41,"tag":104,"props":4811,"children":4812},{"style":3198},[4813],{"type":47,"value":3217},{"type":41,"tag":104,"props":4815,"children":4816},{"style":3338},[4817],{"type":47,"value":4818},"assetClassNames",{"type":41,"tag":104,"props":4820,"children":4821},{"style":3198},[4822],{"type":47,"value":3228},{"type":41,"tag":104,"props":4824,"children":4825},{"style":3198},[4826],{"type":47,"value":2493},{"type":41,"tag":104,"props":4828,"children":4829},{"style":3198},[4830],{"type":47,"value":3673},{"type":41,"tag":104,"props":4832,"children":4833},{"style":3198},[4834],{"type":47,"value":3228},{"type":41,"tag":104,"props":4836,"children":4837},{"style":3680},[4838],{"type":47,"value":4839},"id",{"type":41,"tag":104,"props":4841,"children":4842},{"style":3198},[4843],{"type":47,"value":3228},{"type":41,"tag":104,"props":4845,"children":4846},{"style":3198},[4847],{"type":47,"value":2493},{"type":41,"tag":104,"props":4849,"children":4850},{"style":3198},[4851],{"type":47,"value":3237},{"type":41,"tag":104,"props":4853,"children":4854},{"style":3240},[4855],{"type":47,"value":4856},"Ethereum#verified",{"type":41,"tag":104,"props":4858,"children":4859},{"style":3198},[4860],{"type":47,"value":3228},{"type":41,"tag":104,"props":4862,"children":4863},{"style":3198},[4864],{"type":47,"value":3708},{"type":41,"tag":104,"props":4866,"children":4867},{"style":3198},[4868],{"type":47,"value":3237},{"type":41,"tag":104,"props":4870,"children":4871},{"style":3680},[4872],{"type":47,"value":3223},{"type":41,"tag":104,"props":4874,"children":4875},{"style":3198},[4876],{"type":47,"value":3228},{"type":41,"tag":104,"props":4878,"children":4879},{"style":3198},[4880],{"type":47,"value":2493},{"type":41,"tag":104,"props":4882,"children":4883},{"style":3198},[4884],{"type":47,"value":3237},{"type":41,"tag":104,"props":4886,"children":4887},{"style":3240},[4888],{"type":47,"value":4889},"Ethereum",{"type":41,"tag":104,"props":4891,"children":4892},{"style":3198},[4893],{"type":47,"value":3228},{"type":41,"tag":104,"props":4895,"children":4896},{"style":3198},[4897],{"type":47,"value":3708},{"type":41,"tag":104,"props":4899,"children":4900},{"style":3198},[4901],{"type":47,"value":3237},{"type":41,"tag":104,"props":4903,"children":4904},{"style":3680},[4905],{"type":47,"value":4906},"symbol",{"type":41,"tag":104,"props":4908,"children":4909},{"style":3198},[4910],{"type":47,"value":3228},{"type":41,"tag":104,"props":4912,"children":4913},{"style":3198},[4914],{"type":47,"value":2493},{"type":41,"tag":104,"props":4916,"children":4917},{"style":3198},[4918],{"type":47,"value":3237},{"type":41,"tag":104,"props":4920,"children":4921},{"style":3240},[4922],{"type":47,"value":4923},"ETH",{"type":41,"tag":104,"props":4925,"children":4926},{"style":3198},[4927],{"type":47,"value":3228},{"type":41,"tag":104,"props":4929,"children":4930},{"style":3198},[4931],{"type":47,"value":3708},{"type":41,"tag":104,"props":4933,"children":4934},{"style":3198},[4935],{"type":47,"value":3237},{"type":41,"tag":104,"props":4937,"children":4938},{"style":3680},[4939],{"type":47,"value":4940},"isVerified",{"type":41,"tag":104,"props":4942,"children":4943},{"style":3198},[4944],{"type":47,"value":3228},{"type":41,"tag":104,"props":4946,"children":4947},{"style":3198},[4948],{"type":47,"value":2493},{"type":41,"tag":104,"props":4950,"children":4951},{"style":3198},[4952],{"type":47,"value":4953}," true,",{"type":41,"tag":104,"props":4955,"children":4956},{"style":3198},[4957],{"type":47,"value":3237},{"type":41,"tag":104,"props":4959,"children":4960},{"style":3680},[4961],{"type":47,"value":4962},"assetClassId",{"type":41,"tag":104,"props":4964,"children":4965},{"style":3198},[4966],{"type":47,"value":3228},{"type":41,"tag":104,"props":4968,"children":4969},{"style":3198},[4970],{"type":47,"value":2493},{"type":41,"tag":104,"props":4972,"children":4973},{"style":3198},[4974],{"type":47,"value":4975}," null}],\n",{"type":41,"tag":104,"props":4977,"children":4978},{"class":106,"line":643},[4979,4983,4988,4992,4996],{"type":41,"tag":104,"props":4980,"children":4981},{"style":3198},[4982],{"type":47,"value":3217},{"type":41,"tag":104,"props":4984,"children":4985},{"style":3338},[4986],{"type":47,"value":4987},"wallets",{"type":41,"tag":104,"props":4989,"children":4990},{"style":3198},[4991],{"type":47,"value":3228},{"type":41,"tag":104,"props":4993,"children":4994},{"style":3198},[4995],{"type":47,"value":2493},{"type":41,"tag":104,"props":4997,"children":4998},{"style":3198},[4999],{"type":47,"value":5000}," [],\n",{"type":41,"tag":104,"props":5002,"children":5003},{"class":106,"line":652},[5004,5008,5013,5017,5021],{"type":41,"tag":104,"props":5005,"children":5006},{"style":3198},[5007],{"type":47,"value":3217},{"type":41,"tag":104,"props":5009,"children":5010},{"style":3338},[5011],{"type":47,"value":5012},"senders",{"type":41,"tag":104,"props":5014,"children":5015},{"style":3198},[5016],{"type":47,"value":3228},{"type":41,"tag":104,"props":5018,"children":5019},{"style":3198},[5020],{"type":47,"value":2493},{"type":41,"tag":104,"props":5022,"children":5023},{"style":3198},[5024],{"type":47,"value":5000},{"type":41,"tag":104,"props":5026,"children":5027},{"class":106,"line":660},[5028,5032,5037,5041,5045],{"type":41,"tag":104,"props":5029,"children":5030},{"style":3198},[5031],{"type":47,"value":3217},{"type":41,"tag":104,"props":5033,"children":5034},{"style":3338},[5035],{"type":47,"value":5036},"recipients",{"type":41,"tag":104,"props":5038,"children":5039},{"style":3198},[5040],{"type":47,"value":3228},{"type":41,"tag":104,"props":5042,"children":5043},{"style":3198},[5044],{"type":47,"value":2493},{"type":41,"tag":104,"props":5046,"children":5047},{"style":3198},[5048],{"type":47,"value":5000},{"type":41,"tag":104,"props":5050,"children":5051},{"class":106,"line":668},[5052,5056,5061,5065,5069],{"type":41,"tag":104,"props":5053,"children":5054},{"style":3198},[5055],{"type":47,"value":3217},{"type":41,"tag":104,"props":5057,"children":5058},{"style":3338},[5059],{"type":47,"value":5060},"platforms",{"type":41,"tag":104,"props":5062,"children":5063},{"style":3198},[5064],{"type":47,"value":3228},{"type":41,"tag":104,"props":5066,"children":5067},{"style":3198},[5068],{"type":47,"value":2493},{"type":41,"tag":104,"props":5070,"children":5071},{"style":3198},[5072],{"type":47,"value":5000},{"type":41,"tag":104,"props":5074,"children":5075},{"class":106,"line":676},[5076,5080,5084,5088,5092],{"type":41,"tag":104,"props":5077,"children":5078},{"style":3198},[5079],{"type":47,"value":3217},{"type":41,"tag":104,"props":5081,"children":5082},{"style":3338},[5083],{"type":47,"value":716},{"type":41,"tag":104,"props":5085,"children":5086},{"style":3198},[5087],{"type":47,"value":3228},{"type":41,"tag":104,"props":5089,"children":5090},{"style":3198},[5091],{"type":47,"value":2493},{"type":41,"tag":104,"props":5093,"children":5094},{"style":3198},[5095],{"type":47,"value":5000},{"type":41,"tag":104,"props":5097,"children":5098},{"class":106,"line":684},[5099,5103,5108,5112,5116],{"type":41,"tag":104,"props":5100,"children":5101},{"style":3198},[5102],{"type":47,"value":3217},{"type":41,"tag":104,"props":5104,"children":5105},{"style":3338},[5106],{"type":47,"value":5107},"actions",{"type":41,"tag":104,"props":5109,"children":5110},{"style":3198},[5111],{"type":47,"value":3228},{"type":41,"tag":104,"props":5113,"children":5114},{"style":3198},[5115],{"type":47,"value":2493},{"type":41,"tag":104,"props":5117,"children":5118},{"style":3198},[5119],{"type":47,"value":5000},{"type":41,"tag":104,"props":5121,"children":5122},{"class":106,"line":692},[5123,5127,5132,5136,5140],{"type":41,"tag":104,"props":5124,"children":5125},{"style":3198},[5126],{"type":47,"value":3217},{"type":41,"tag":104,"props":5128,"children":5129},{"style":3338},[5130],{"type":47,"value":5131},"contracts",{"type":41,"tag":104,"props":5133,"children":5134},{"style":3198},[5135],{"type":47,"value":3228},{"type":41,"tag":104,"props":5137,"children":5138},{"style":3198},[5139],{"type":47,"value":2493},{"type":41,"tag":104,"props":5141,"children":5142},{"style":3198},[5143],{"type":47,"value":5000},{"type":41,"tag":104,"props":5145,"children":5146},{"class":106,"line":700},[5147,5151,5156,5160,5164],{"type":41,"tag":104,"props":5148,"children":5149},{"style":3198},[5150],{"type":47,"value":3217},{"type":41,"tag":104,"props":5152,"children":5153},{"style":3338},[5154],{"type":47,"value":5155},"specificIds",{"type":41,"tag":104,"props":5157,"children":5158},{"style":3198},[5159],{"type":47,"value":3228},{"type":41,"tag":104,"props":5161,"children":5162},{"style":3198},[5163],{"type":47,"value":2493},{"type":41,"tag":104,"props":5165,"children":5166},{"style":3198},[5167],{"type":47,"value":5000},{"type":41,"tag":104,"props":5169,"children":5170},{"class":106,"line":3815},[5171,5175,5180,5184,5188],{"type":41,"tag":104,"props":5172,"children":5173},{"style":3198},[5174],{"type":47,"value":3217},{"type":41,"tag":104,"props":5176,"children":5177},{"style":3338},[5178],{"type":47,"value":5179},"walletTagsSenders",{"type":41,"tag":104,"props":5181,"children":5182},{"style":3198},[5183],{"type":47,"value":3228},{"type":41,"tag":104,"props":5185,"children":5186},{"style":3198},[5187],{"type":47,"value":2493},{"type":41,"tag":104,"props":5189,"children":5190},{"style":3198},[5191],{"type":47,"value":5000},{"type":41,"tag":104,"props":5193,"children":5194},{"class":106,"line":3839},[5195,5199,5204,5208,5212],{"type":41,"tag":104,"props":5196,"children":5197},{"style":3198},[5198],{"type":47,"value":3217},{"type":41,"tag":104,"props":5200,"children":5201},{"style":3338},[5202],{"type":47,"value":5203},"walletTagsRecipients",{"type":41,"tag":104,"props":5205,"children":5206},{"style":3198},[5207],{"type":47,"value":3228},{"type":41,"tag":104,"props":5209,"children":5210},{"style":3198},[5211],{"type":47,"value":2493},{"type":41,"tag":104,"props":5213,"children":5214},{"style":3198},[5215],{"type":47,"value":5000},{"type":41,"tag":104,"props":5217,"children":5218},{"class":106,"line":3847},[5219,5223,5228,5232,5236],{"type":41,"tag":104,"props":5220,"children":5221},{"style":3198},[5222],{"type":47,"value":3217},{"type":41,"tag":104,"props":5224,"children":5225},{"style":3338},[5226],{"type":47,"value":5227},"financialActionGroups",{"type":41,"tag":104,"props":5229,"children":5230},{"style":3198},[5231],{"type":47,"value":3228},{"type":41,"tag":104,"props":5233,"children":5234},{"style":3198},[5235],{"type":47,"value":2493},{"type":41,"tag":104,"props":5237,"children":5238},{"style":3198},[5239],{"type":47,"value":5000},{"type":41,"tag":104,"props":5241,"children":5242},{"class":106,"line":3855},[5243,5247,5252,5256,5260],{"type":41,"tag":104,"props":5244,"children":5245},{"style":3198},[5246],{"type":47,"value":3217},{"type":41,"tag":104,"props":5248,"children":5249},{"style":3338},[5250],{"type":47,"value":5251},"contactGroupsSenders",{"type":41,"tag":104,"props":5253,"children":5254},{"style":3198},[5255],{"type":47,"value":3228},{"type":41,"tag":104,"props":5257,"children":5258},{"style":3198},[5259],{"type":47,"value":2493},{"type":41,"tag":104,"props":5261,"children":5262},{"style":3198},[5263],{"type":47,"value":5000},{"type":41,"tag":104,"props":5265,"children":5266},{"class":106,"line":3892},[5267,5271,5276,5280,5284],{"type":41,"tag":104,"props":5268,"children":5269},{"style":3198},[5270],{"type":47,"value":3217},{"type":41,"tag":104,"props":5272,"children":5273},{"style":3338},[5274],{"type":47,"value":5275},"contactGroupsRecipients",{"type":41,"tag":104,"props":5277,"children":5278},{"style":3198},[5279],{"type":47,"value":3228},{"type":41,"tag":104,"props":5281,"children":5282},{"style":3198},[5283],{"type":47,"value":2493},{"type":41,"tag":104,"props":5285,"children":5286},{"style":3198},[5287],{"type":47,"value":5000},{"type":41,"tag":104,"props":5289,"children":5290},{"class":106,"line":3916},[5291,5295,5300,5304,5308],{"type":41,"tag":104,"props":5292,"children":5293},{"style":3198},[5294],{"type":47,"value":3217},{"type":41,"tag":104,"props":5296,"children":5297},{"style":3338},[5298],{"type":47,"value":5299},"isInternalTransfer",{"type":41,"tag":104,"props":5301,"children":5302},{"style":3198},[5303],{"type":47,"value":3228},{"type":41,"tag":104,"props":5305,"children":5306},{"style":3198},[5307],{"type":47,"value":2493},{"type":41,"tag":104,"props":5309,"children":5310},{"style":3198},[5311],{"type":47,"value":4446},{"type":41,"tag":104,"props":5313,"children":5314},{"class":106,"line":3993},[5315,5319,5324,5328,5332],{"type":41,"tag":104,"props":5316,"children":5317},{"style":3198},[5318],{"type":47,"value":3217},{"type":41,"tag":104,"props":5320,"children":5321},{"style":3338},[5322],{"type":47,"value":5323},"fromDate",{"type":41,"tag":104,"props":5325,"children":5326},{"style":3198},[5327],{"type":47,"value":3228},{"type":41,"tag":104,"props":5329,"children":5330},{"style":3198},[5331],{"type":47,"value":2493},{"type":41,"tag":104,"props":5333,"children":5334},{"style":3198},[5335],{"type":47,"value":4446},{"type":41,"tag":104,"props":5337,"children":5338},{"class":106,"line":4001},[5339,5343,5348,5352,5356],{"type":41,"tag":104,"props":5340,"children":5341},{"style":3198},[5342],{"type":47,"value":3217},{"type":41,"tag":104,"props":5344,"children":5345},{"style":3338},[5346],{"type":47,"value":5347},"toDate",{"type":41,"tag":104,"props":5349,"children":5350},{"style":3198},[5351],{"type":47,"value":3228},{"type":41,"tag":104,"props":5353,"children":5354},{"style":3198},[5355],{"type":47,"value":2493},{"type":41,"tag":104,"props":5357,"children":5358},{"style":3198},[5359],{"type":47,"value":4775},{"type":41,"tag":104,"props":5361,"children":5362},{"class":106,"line":4025},[5363],{"type":41,"tag":104,"props":5364,"children":5365},{"style":3198},[5366],{"type":47,"value":3583},{"type":41,"tag":104,"props":5368,"children":5369},{"class":106,"line":4062},[5370,5374,5379,5383,5387],{"type":41,"tag":104,"props":5371,"children":5372},{"style":3198},[5373],{"type":47,"value":4392},{"type":41,"tag":104,"props":5375,"children":5376},{"style":3220},[5377],{"type":47,"value":5378},"isIgnore",{"type":41,"tag":104,"props":5380,"children":5381},{"style":3198},[5382],{"type":47,"value":3228},{"type":41,"tag":104,"props":5384,"children":5385},{"style":3198},[5386],{"type":47,"value":2493},{"type":41,"tag":104,"props":5388,"children":5389},{"style":3198},[5390],{"type":47,"value":3575},{"type":41,"tag":104,"props":5392,"children":5393},{"class":106,"line":4094},[5394],{"type":41,"tag":104,"props":5395,"children":5396},{"style":3198},[5397],{"type":47,"value":224},{"type":41,"tag":80,"props":5399,"children":5401},{"id":5400},"mapping-rulesjson-upsertrule",[5402],{"type":47,"value":5403},"Mapping rules.json → upsertRule",{"type":41,"tag":2035,"props":5405,"children":5406},{},[5407,5421],{"type":41,"tag":2039,"props":5408,"children":5409},{},[5410],{"type":41,"tag":2043,"props":5411,"children":5412},{},[5413,5417],{"type":41,"tag":2047,"props":5414,"children":5415},{},[5416],{"type":47,"value":2182},{"type":41,"tag":2047,"props":5418,"children":5419},{},[5420],{"type":47,"value":2202},{"type":41,"tag":2068,"props":5422,"children":5423},{},[5424,5444,5465,5528,5576,5605,5634,5657,5679,5701,5723,5745,5767],{"type":41,"tag":2043,"props":5425,"children":5426},{},[5427,5436],{"type":41,"tag":2075,"props":5428,"children":5429},{},[5430],{"type":41,"tag":100,"props":5431,"children":5433},{"className":5432},[],[5434],{"type":47,"value":5435},"is_default: true",{"type":41,"tag":2075,"props":5437,"children":5438},{},[5439],{"type":41,"tag":100,"props":5440,"children":5442},{"className":5441},[],[5443],{"type":47,"value":2511},{"type":41,"tag":2043,"props":5445,"children":5446},{},[5447,5456],{"type":41,"tag":2075,"props":5448,"children":5449},{},[5450],{"type":41,"tag":100,"props":5451,"children":5453},{"className":5452},[],[5454],{"type":47,"value":5455},"is_default: false\u002Fabsent",{"type":41,"tag":2075,"props":5457,"children":5458},{},[5459],{"type":41,"tag":100,"props":5460,"children":5462},{"className":5461},[],[5463],{"type":47,"value":5464},"type: \"CUSTOM_RULE\"",{"type":41,"tag":2043,"props":5466,"children":5467},{},[5468,5477],{"type":41,"tag":2075,"props":5469,"children":5470},{},[5471],{"type":41,"tag":100,"props":5472,"children":5474},{"className":5473},[],[5475],{"type":47,"value":5476},"conditions.asset_class",{"type":41,"tag":2075,"props":5478,"children":5479},{},[5480,5486,5488,5493,5494,5500,5502,5508,5510,5515,5516,5521,5522],{"type":41,"tag":100,"props":5481,"children":5483},{"className":5482},[],[5484],{"type":47,"value":5485},"filters.assetClassNames",{"type":47,"value":5487}," — enrich with ",{"type":41,"tag":100,"props":5489,"children":5491},{"className":5490},[],[5492],{"type":47,"value":4839},{"type":47,"value":1055},{"type":41,"tag":100,"props":5495,"children":5497},{"className":5496},[],[5498],{"type":47,"value":5499},"Name#verified",{"type":47,"value":5501},"\u002F",{"type":41,"tag":100,"props":5503,"children":5505},{"className":5504},[],[5506],{"type":47,"value":5507},"Name#unverified",{"type":47,"value":5509},"), ",{"type":41,"tag":100,"props":5511,"children":5513},{"className":5512},[],[5514],{"type":47,"value":4906},{"type":47,"value":1450},{"type":41,"tag":100,"props":5517,"children":5519},{"className":5518},[],[5520],{"type":47,"value":4940},{"type":47,"value":1792},{"type":41,"tag":100,"props":5523,"children":5525},{"className":5524},[],[5526],{"type":47,"value":5527},"erp.assetClassNames",{"type":41,"tag":2043,"props":5529,"children":5530},{},[5531,5540],{"type":41,"tag":2075,"props":5532,"children":5533},{},[5534],{"type":41,"tag":100,"props":5535,"children":5537},{"className":5536},[],[5538],{"type":47,"value":5539},"conditions.wallets",{"type":41,"tag":2075,"props":5541,"children":5542},{},[5543,5549,5550,5555,5556,5562,5563,5569,5570],{"type":41,"tag":100,"props":5544,"children":5546},{"className":5545},[],[5547],{"type":47,"value":5548},"filters.wallets",{"type":47,"value":5487},{"type":41,"tag":100,"props":5551,"children":5553},{"className":5552},[],[5554],{"type":47,"value":4839},{"type":47,"value":1450},{"type":41,"tag":100,"props":5557,"children":5559},{"className":5558},[],[5560],{"type":47,"value":5561},"address",{"type":47,"value":1450},{"type":41,"tag":100,"props":5564,"children":5566},{"className":5565},[],[5567],{"type":47,"value":5568},"parentPlatform",{"type":47,"value":1792},{"type":41,"tag":100,"props":5571,"children":5573},{"className":5572},[],[5574],{"type":47,"value":5575},"erp.wallets",{"type":41,"tag":2043,"props":5577,"children":5578},{},[5579,5588],{"type":41,"tag":2075,"props":5580,"children":5581},{},[5582],{"type":41,"tag":100,"props":5583,"children":5585},{"className":5584},[],[5586],{"type":47,"value":5587},"conditions.tags",{"type":41,"tag":2075,"props":5589,"children":5590},{},[5591,5597,5599],{"type":41,"tag":100,"props":5592,"children":5594},{"className":5593},[],[5595],{"type":47,"value":5596},"filters.tags",{"type":47,"value":5598}," — format as ",{"type":41,"tag":100,"props":5600,"children":5602},{"className":5601},[],[5603],{"type":47,"value":5604},"[{\"id\": \"TAG\", \"name\": \"TAG\"}]",{"type":41,"tag":2043,"props":5606,"children":5607},{},[5608,5617],{"type":41,"tag":2075,"props":5609,"children":5610},{},[5611],{"type":41,"tag":100,"props":5612,"children":5614},{"className":5613},[],[5615],{"type":47,"value":5616},"accounts.inventory_account: \"uuid\"",{"type":41,"tag":2075,"props":5618,"children":5619},{},[5620,5626,5628],{"type":41,"tag":100,"props":5621,"children":5623},{"className":5622},[],[5624],{"type":47,"value":5625},"accounts.inventory: {\"name\": \"...\", \"value\": \"uuid\", \"type\": \"...\"}",{"type":47,"value":5627}," — enrich from ",{"type":41,"tag":100,"props":5629,"children":5631},{"className":5630},[],[5632],{"type":47,"value":5633},"erp.allAccounts",{"type":41,"tag":2043,"props":5635,"children":5636},{},[5637,5646],{"type":41,"tag":2075,"props":5638,"children":5639},{},[5640],{"type":41,"tag":100,"props":5641,"children":5643},{"className":5642},[],[5644],{"type":47,"value":5645},"accounts.income_account",{"type":41,"tag":2075,"props":5647,"children":5648},{},[5649,5655],{"type":41,"tag":100,"props":5650,"children":5652},{"className":5651},[],[5653],{"type":47,"value":5654},"accounts.income",{"type":47,"value":5656}," (same enrichment)",{"type":41,"tag":2043,"props":5658,"children":5659},{},[5660,5669],{"type":41,"tag":2075,"props":5661,"children":5662},{},[5663],{"type":41,"tag":100,"props":5664,"children":5666},{"className":5665},[],[5667],{"type":47,"value":5668},"accounts.expense_account",{"type":41,"tag":2075,"props":5670,"children":5671},{},[5672,5678],{"type":41,"tag":100,"props":5673,"children":5675},{"className":5674},[],[5676],{"type":47,"value":5677},"accounts.expense",{"type":47,"value":5656},{"type":41,"tag":2043,"props":5680,"children":5681},{},[5682,5691],{"type":41,"tag":2075,"props":5683,"children":5684},{},[5685],{"type":41,"tag":100,"props":5686,"children":5688},{"className":5687},[],[5689],{"type":47,"value":5690},"accounts.fee_account",{"type":41,"tag":2075,"props":5692,"children":5693},{},[5694,5700],{"type":41,"tag":100,"props":5695,"children":5697},{"className":5696},[],[5698],{"type":47,"value":5699},"accounts.fee",{"type":47,"value":5656},{"type":41,"tag":2043,"props":5702,"children":5703},{},[5704,5713],{"type":41,"tag":2075,"props":5705,"children":5706},{},[5707],{"type":41,"tag":100,"props":5708,"children":5710},{"className":5709},[],[5711],{"type":47,"value":5712},"accounts.gain_account",{"type":41,"tag":2075,"props":5714,"children":5715},{},[5716,5722],{"type":41,"tag":100,"props":5717,"children":5719},{"className":5718},[],[5720],{"type":47,"value":5721},"accounts.gain",{"type":47,"value":5656},{"type":41,"tag":2043,"props":5724,"children":5725},{},[5726,5735],{"type":41,"tag":2075,"props":5727,"children":5728},{},[5729],{"type":41,"tag":100,"props":5730,"children":5732},{"className":5731},[],[5733],{"type":47,"value":5734},"accounts.loss_account",{"type":41,"tag":2075,"props":5736,"children":5737},{},[5738,5744],{"type":41,"tag":100,"props":5739,"children":5741},{"className":5740},[],[5742],{"type":47,"value":5743},"accounts.loss",{"type":47,"value":5656},{"type":41,"tag":2043,"props":5746,"children":5747},{},[5748,5757],{"type":41,"tag":2075,"props":5749,"children":5750},{},[5751],{"type":41,"tag":100,"props":5752,"children":5754},{"className":5753},[],[5755],{"type":47,"value":5756},"accounts.unrealized_gain_loss_account",{"type":41,"tag":2075,"props":5758,"children":5759},{},[5760,5766],{"type":41,"tag":100,"props":5761,"children":5763},{"className":5762},[],[5764],{"type":47,"value":5765},"accounts.unrealizedGainLoss",{"type":47,"value":5656},{"type":41,"tag":2043,"props":5768,"children":5769},{},[5770,5778],{"type":41,"tag":2075,"props":5771,"children":5772},{},[5773],{"type":41,"tag":100,"props":5774,"children":5776},{"className":5775},[],[5777],{"type":47,"value":4350},{"type":41,"tag":2075,"props":5779,"children":5780},{},[5781],{"type":41,"tag":100,"props":5782,"children":5784},{"className":5783},[],[5785],{"type":47,"value":5786},"isIgnore: true",{"type":41,"tag":50,"props":5788,"children":5789},{},[5790],{"type":47,"value":5791},"All unused filter fields should be empty arrays. All unused account fields should be null.",{"type":41,"tag":69,"props":5793,"children":5794},{},[],{"type":41,"tag":73,"props":5796,"children":5798},{"id":5797},"lessons-learned",[5799],{"type":47,"value":5800},"Lessons Learned",{"type":41,"tag":50,"props":5802,"children":5803},{},[5804],{"type":47,"value":5805},"Apply these proactively — don't wait for the user to hit the same issues.",{"type":41,"tag":50,"props":5807,"children":5808},{},[5809,5814],{"type":41,"tag":61,"props":5810,"children":5811},{},[5812],{"type":47,"value":5813},"Cost basis mode vs CoA mismatch",{"type":47,"value":5815},": When the chart of accounts structure doesn't align with the cost basis mode, always present the option to change the cost basis strategy to match the existing CoA. This is often the cleanest path.",{"type":41,"tag":50,"props":5817,"children":5818},{},[5819,5824],{"type":41,"tag":61,"props":5820,"children":5821},{},[5822],{"type":47,"value":5823},"One asset class per inventory rule",{"type":47,"value":5825},": Never put multiple asset classes in a single inventory rule — this breaks reconciliation. Each significant asset class gets its own rule.",{"type":41,"tag":50,"props":5827,"children":5828},{},[5829,5834,5836,5842],{"type":41,"tag":61,"props":5830,"children":5831},{},[5832],{"type":47,"value":5833},"Gain\u002Floss can be one account",{"type":47,"value":5835},": Users may prefer a single combined Realized Gain\u002FLoss account (typically ",{"type":41,"tag":100,"props":5837,"children":5839},{"className":5838},[],[5840],{"type":47,"value":5841},"other_expense",{"type":47,"value":5843}," type) rather than separate gain and loss accounts. Always ask during gap analysis.",{"type":41,"tag":50,"props":5845,"children":5846},{},[5847,5852],{"type":41,"tag":61,"props":5848,"children":5849},{},[5850],{"type":47,"value":5851},"Tags are activities",{"type":47,"value":5853},": Classification activities and custom activity labels are interchangeable in the rule engine. Always merge both sources into a single \"TAGS\" list. Never present them as separate categories.",{"type":41,"tag":50,"props":5855,"children":5856},{},[5857,5862,5864,5869,5871,5876],{"type":41,"tag":61,"props":5858,"children":5859},{},[5860],{"type":47,"value":5861},"Use presync reports for validation",{"type":47,"value":5863},": The presync report is the ground truth. Export before designing rules (understand current state) and after applying rules (validate coverage). Key signals: ",{"type":41,"tag":100,"props":5865,"children":5867},{"className":5866},[],[5868],{"type":47,"value":1414},{"type":47,"value":5870}," errors, ",{"type":41,"tag":100,"props":5872,"children":5874},{"className":5873},[],[5875],{"type":47,"value":1425},{"type":47,"value":5877}," distribution, clearing account net balances.",{"type":41,"tag":69,"props":5879,"children":5880},{},[],{"type":41,"tag":73,"props":5882,"children":5884},{"id":5883},"setup",[5885],{"type":47,"value":5886},"Setup",{"type":41,"tag":80,"props":5888,"children":5890},{"id":5889},"prerequisites",[5891],{"type":47,"value":5892},"Prerequisites",{"type":41,"tag":1402,"props":5894,"children":5895},{},[5896,5901],{"type":41,"tag":1406,"props":5897,"children":5898},{},[5899],{"type":47,"value":5900},"Claude Code installed and working",{"type":41,"tag":1406,"props":5902,"children":5903},{},[5904],{"type":47,"value":5905},"tres-finance MCP server configured and connected to the target organization",{"type":41,"tag":80,"props":5907,"children":5909},{"id":5908},"mcp-configuration",[5910],{"type":47,"value":5911},"MCP Configuration",{"type":41,"tag":50,"props":5913,"children":5914},{},[5915],{"type":47,"value":5916},"The skill requires a tres-finance MCP server that provides GraphQL access to the Tres Finance API. Your MCP config should include the tres-finance server with permissions for:",{"type":41,"tag":1402,"props":5918,"children":5919},{},[5920,5930,5949],{"type":41,"tag":1406,"props":5921,"children":5922},{},[5923,5928],{"type":41,"tag":100,"props":5924,"children":5926},{"className":5925},[],[5927],{"type":47,"value":123},{"type":47,"value":5929}," — identify the connected organization",{"type":41,"tag":1406,"props":5931,"children":5932},{},[5933,5939,5941,5947],{"type":41,"tag":100,"props":5934,"children":5936},{"className":5935},[],[5937],{"type":47,"value":5938},"graphql_query",{"type":47,"value":5940}," \u002F ",{"type":41,"tag":100,"props":5942,"children":5944},{"className":5943},[],[5945],{"type":47,"value":5946},"graphql_mutation",{"type":47,"value":5948}," — execute GraphQL queries and mutations",{"type":41,"tag":1406,"props":5950,"children":5951},{},[5952,5954,5960,5961,5966,5967,5973,5974,5980,5981,5987,5988,5994],{"type":47,"value":5953},"Read\u002Fwrite access to ",{"type":41,"tag":100,"props":5955,"children":5957},{"className":5956},[],[5958],{"type":47,"value":5959},"internalAccount",{"type":47,"value":1450},{"type":41,"tag":100,"props":5962,"children":5964},{"className":5963},[],[5965],{"type":47,"value":1746},{"type":47,"value":1450},{"type":41,"tag":100,"props":5968,"children":5970},{"className":5969},[],[5971],{"type":47,"value":5972},"erp",{"type":47,"value":1450},{"type":41,"tag":100,"props":5975,"children":5977},{"className":5976},[],[5978],{"type":47,"value":5979},"subTransaction",{"type":47,"value":1450},{"type":41,"tag":100,"props":5982,"children":5984},{"className":5983},[],[5985],{"type":47,"value":5986},"transaction",{"type":47,"value":1450},{"type":41,"tag":100,"props":5989,"children":5991},{"className":5990},[],[5992],{"type":47,"value":5993},"report",{"type":47,"value":5995}," entities",{"type":41,"tag":80,"props":5997,"children":5999},{"id":5998},"installation",[6000],{"type":47,"value":6001},"Installation",{"type":41,"tag":50,"props":6003,"children":6004},{},[6005],{"type":47,"value":6006},"Copy this file to your Claude Code skills location:",{"type":41,"tag":92,"props":6008,"children":6012},{"className":6009,"code":6010,"language":6011,"meta":97,"style":97},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Project-level\nmkdir -p \u002Fpath\u002Fto\u002Fproject\u002F.claude\u002Fskills\u002Ferp-rule-suggestions\u002F\ncp SKILL.md \u002Fpath\u002Fto\u002Fproject\u002F.claude\u002Fskills\u002Ferp-rule-suggestions\u002F\n\n# Or user-level\nmkdir -p ~\u002F.claude\u002Fskills\u002Ferp-rule-suggestions\u002F\ncp SKILL.md ~\u002F.claude\u002Fskills\u002Ferp-rule-suggestions\u002F\n","bash",[6013],{"type":41,"tag":100,"props":6014,"children":6015},{"__ignoreMap":97},[6016,6025,6043,6060,6067,6075,6091],{"type":41,"tag":104,"props":6017,"children":6018},{"class":106,"line":107},[6019],{"type":41,"tag":104,"props":6020,"children":6022},{"style":6021},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[6023],{"type":47,"value":6024},"# Project-level\n",{"type":41,"tag":104,"props":6026,"children":6027},{"class":106,"line":182},[6028,6033,6038],{"type":41,"tag":104,"props":6029,"children":6030},{"style":3338},[6031],{"type":47,"value":6032},"mkdir",{"type":41,"tag":104,"props":6034,"children":6035},{"style":3240},[6036],{"type":47,"value":6037}," -p",{"type":41,"tag":104,"props":6039,"children":6040},{"style":3240},[6041],{"type":47,"value":6042}," \u002Fpath\u002Fto\u002Fproject\u002F.claude\u002Fskills\u002Ferp-rule-suggestions\u002F\n",{"type":41,"tag":104,"props":6044,"children":6045},{"class":106,"line":191},[6046,6051,6056],{"type":41,"tag":104,"props":6047,"children":6048},{"style":3338},[6049],{"type":47,"value":6050},"cp",{"type":41,"tag":104,"props":6052,"children":6053},{"style":3240},[6054],{"type":47,"value":6055}," SKILL.md",{"type":41,"tag":104,"props":6057,"children":6058},{"style":3240},[6059],{"type":47,"value":6042},{"type":41,"tag":104,"props":6061,"children":6062},{"class":106,"line":200},[6063],{"type":41,"tag":104,"props":6064,"children":6065},{"emptyLinePlaceholder":36},[6066],{"type":47,"value":615},{"type":41,"tag":104,"props":6068,"children":6069},{"class":106,"line":209},[6070],{"type":41,"tag":104,"props":6071,"children":6072},{"style":6021},[6073],{"type":47,"value":6074},"# Or user-level\n",{"type":41,"tag":104,"props":6076,"children":6077},{"class":106,"line":218},[6078,6082,6086],{"type":41,"tag":104,"props":6079,"children":6080},{"style":3338},[6081],{"type":47,"value":6032},{"type":41,"tag":104,"props":6083,"children":6084},{"style":3240},[6085],{"type":47,"value":6037},{"type":41,"tag":104,"props":6087,"children":6088},{"style":3240},[6089],{"type":47,"value":6090}," ~\u002F.claude\u002Fskills\u002Ferp-rule-suggestions\u002F\n",{"type":41,"tag":104,"props":6092,"children":6093},{"class":106,"line":471},[6094,6098,6102],{"type":41,"tag":104,"props":6095,"children":6096},{"style":3338},[6097],{"type":47,"value":6050},{"type":41,"tag":104,"props":6099,"children":6100},{"style":3240},[6101],{"type":47,"value":6055},{"type":41,"tag":104,"props":6103,"children":6104},{"style":3240},[6105],{"type":47,"value":6090},{"type":41,"tag":6107,"props":6108,"children":6109},"style",{},[6110],{"type":47,"value":6111},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":6113,"total":3993},[6114,6133,6152,6166,6176,6188,6200],{"slug":6115,"name":6115,"fn":6116,"description":6117,"org":6118,"tags":6119,"stars":23,"repoUrl":24,"updatedAt":6132},"quickdesign","generate AI media assets","Use the `quickdesign` CLI to generate AI media — UGC promo videos, image edits, product creatives, video upscales — through Seedance, Kling, Sora2, Nano Banana, and GPT Image. Invoke this skill whenever the user asks for a talking-avatar video, multi-segment ad \u002F promo \u002F explainer, image edit (object swap, angle change, state change), product photoshoot, or video upscale via QuickDesign.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6120,6123,6126,6129],{"name":6121,"slug":6122,"type":16},"Creative","creative",{"name":6124,"slug":6125,"type":16},"Image Generation","image-generation",{"name":6127,"slug":6128,"type":16},"Marketing","marketing",{"name":6130,"slug":6131,"type":16},"Video","video","2026-07-01T08:09:32.316182",{"slug":6134,"name":6134,"fn":6135,"description":6136,"org":6137,"tags":6138,"stars":23,"repoUrl":24,"updatedAt":6151},"testdino-audit","audit Playwright test code","Use only when the user explicitly asks for a TestDino audit of Playwright automated test code. Routes through the audit tools the TestDino MCP server exposes (get_audit_report + submit_audit_report, or the legacy test_audit). For generic code review or non-Playwright targets, do a normal review instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6139,6142,6145,6148],{"name":6140,"slug":6141,"type":16},"Audit","audit",{"name":6143,"slug":6144,"type":16},"Code Analysis","code-analysis",{"name":6146,"slug":6147,"type":16},"Playwright","playwright",{"name":6149,"slug":6150,"type":16},"Testing","testing","2026-07-02T07:37:17.341081",{"slug":6153,"name":6153,"fn":6154,"description":6155,"org":6156,"tags":6157,"stars":23,"repoUrl":24,"updatedAt":6165},"testdino-health","manage TestDino connection status","Use when the user wants to check TestDino connection status, validate their PAT, discover available organizations and projects, or find the right projectId. Always call this first when the project context is ambiguous before any other TestDino tool.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6158,6161,6164],{"name":6159,"slug":6160,"type":16},"Monitoring","monitoring",{"name":6162,"slug":6163,"type":16},"QA","qa",{"name":6149,"slug":6150,"type":16},"2026-07-02T07:37:18.566504",{"slug":6167,"name":6167,"fn":6168,"description":6169,"org":6170,"tags":6171,"stars":23,"repoUrl":24,"updatedAt":6175},"testdino-manual-runs","manage manual QA execution runs in TestDino","Use when the user wants to manage a manual execution run or update case-level results inside a run — listing runs, creating runs for a release, inspecting a run, assigning cases, or marking case results (passed\u002Ffailed\u002Fblocked\u002Fskipped\u002Fretest\u002Funtested). Accepts counter-style IDs like RUN-12 and TC-156.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6172,6173,6174],{"name":14,"slug":15,"type":16},{"name":6162,"slug":6163,"type":16},{"name":6149,"slug":6150,"type":16},"2026-07-02T07:37:23.446065",{"slug":6177,"name":6177,"fn":6178,"description":6179,"org":6180,"tags":6181,"stars":23,"repoUrl":24,"updatedAt":6187},"testdino-manual-tests","manage manual QA test cases in TestDino","Use when the user wants to create, update, or browse manual QA test cases and suites in TestDino — not execution runs. Covers list_manual_test_suites, list_manual_test_cases, get_manual_test_case, create_manual_test_case, update_manual_test_case, create_manual_test_suite.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6182,6185,6186],{"name":6183,"slug":6184,"type":16},"Documentation","documentation",{"name":6162,"slug":6163,"type":16},{"name":6149,"slug":6150,"type":16},"2026-07-02T07:37:22.247052",{"slug":6189,"name":6189,"fn":6190,"description":6191,"org":6192,"tags":6193,"stars":23,"repoUrl":24,"updatedAt":6199},"testdino-releases","manage TestDino releases and milestones","Use when the user wants to browse, inspect, create, or update releases\u002Fmilestones in a TestDino project. Covers list_releases, get_release, create_release, and update_release. Accepts counter-style IDs like MS-12.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6194,6197,6198],{"name":6195,"slug":6196,"type":16},"Project Management","project-management",{"name":6162,"slug":6163,"type":16},{"name":6149,"slug":6150,"type":16},"2026-07-02T07:37:19.793846",{"slug":6201,"name":6201,"fn":6202,"description":6203,"org":6204,"tags":6205,"stars":23,"repoUrl":24,"updatedAt":6212},"testdino-runs","inspect automated test runs","Use when the user wants to inspect automated test runs, list failed or flaky tests, debug a failing testcase with historical context, or filter runs by branch, commit, author, environment, browser, status, or tags. Includes list_testruns, get_run_details, list_testcase, get_testcase_details, and debug_testcase.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6206,6209,6210,6211],{"name":6207,"slug":6208,"type":16},"Debugging","debugging",{"name":6146,"slug":6147,"type":16},{"name":6162,"slug":6163,"type":16},{"name":6149,"slug":6150,"type":16},"2026-07-02T07:37:16.07175",{"items":6214,"total":6397},[6215,6234,6248,6260,6279,6290,6311,6331,6345,6360,6368,6381],{"slug":6216,"name":6216,"fn":6217,"description":6218,"org":6219,"tags":6220,"stars":6231,"repoUrl":6232,"updatedAt":6233},"algorithmic-art","create algorithmic art with p5.js","Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6221,6222,6225,6228],{"name":6121,"slug":6122,"type":16},{"name":6223,"slug":6224,"type":16},"Design","design",{"name":6226,"slug":6227,"type":16},"Generative Art","generative-art",{"name":6229,"slug":6230,"type":16},"JavaScript","javascript",161831,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills","2026-04-06T17:56:15.455818",{"slug":6235,"name":6235,"fn":6236,"description":6237,"org":6238,"tags":6239,"stars":6231,"repoUrl":6232,"updatedAt":6247},"brand-guidelines","apply Anthropic brand colors and typography","Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6240,6243,6244],{"name":6241,"slug":6242,"type":16},"Branding","branding",{"name":6223,"slug":6224,"type":16},{"name":6245,"slug":6246,"type":16},"Typography","typography","2026-04-06T17:56:05.042852",{"slug":6249,"name":6249,"fn":6250,"description":6251,"org":6252,"tags":6253,"stars":6231,"repoUrl":6232,"updatedAt":6259},"canvas-design","create posters and visual art as PNG or PDF","Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6254,6255,6256],{"name":6121,"slug":6122,"type":16},{"name":6223,"slug":6224,"type":16},{"name":6257,"slug":6258,"type":16},"PDF","pdf","2026-04-06T17:56:03.794732",{"slug":6261,"name":6261,"fn":6262,"description":6263,"org":6264,"tags":6265,"stars":6231,"repoUrl":6232,"updatedAt":6278},"claude-api","build apps with the Claude API","Reference for the Claude API \u002F Anthropic SDK — model ids, pricing, params, streaming, tool use, MCP, agents, caching, token counting, model migration.\nTRIGGER — read BEFORE opening the target file; don't skip because it \"looks like a one-liner\" — whenever: the prompt names Claude\u002FAnthropic in any form (Claude, Anthropic, Fable, Opus, Sonnet, Haiku, `anthropic`, `@anthropic-ai`, `claude-*`, `us.anthropic.*`, `[1m]`); the user asks about an LLM (pricing\u002Fmodel choice\u002Flimits\u002Fcaching) — never answer from memory; OR the task is LLM-shaped with provider unstated (agent\u002FMCP\u002Ftool-definition\u002Fmulti-agent\u002FRAG\u002FLLM-judge\u002Fcomputer-use; generate\u002Fsummarize\u002Fextract\u002Fclassify\u002Frewrite\u002Fconverse over NL; debugging refusals\u002Fcutoffs\u002Fstreaming\u002Ftool-calls\u002Ftokens).\nSKIP only when another provider is being worked on (overrides all triggers): OpenAI\u002FGPT\u002FGemini\u002FLlama\u002FMistral\u002FCohere\u002FOllama named in the query; OR `grep -rE 'openai|langchain_openai|google.generativeai|genai|mistralai|cohere|ollama'` over the project hits (run this grep FIRST if no provider named — don't Read the file).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6266,6269,6270,6273,6275],{"name":6267,"slug":6268,"type":16},"Agents","agents",{"name":9,"slug":8,"type":16},{"name":6271,"slug":6272,"type":16},"Anthropic SDK","anthropic-sdk",{"name":6274,"slug":6261,"type":16},"Claude API",{"name":6276,"slug":6277,"type":16},"LLM","llm","2026-07-28T05:36:08.213335",{"slug":6280,"name":6280,"fn":6281,"description":6282,"org":6283,"tags":6284,"stars":6231,"repoUrl":6232,"updatedAt":6289},"doc-coauthoring","co-author documentation and technical specs","Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6285,6286],{"name":6183,"slug":6184,"type":16},{"name":6287,"slug":6288,"type":16},"Technical Writing","technical-writing","2026-04-06T17:56:14.18897",{"slug":6291,"name":6291,"fn":6292,"description":6293,"org":6294,"tags":6295,"stars":6231,"repoUrl":6232,"updatedAt":6310},"docx","create and edit Word documents","Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files) or Word templates (.dotx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', '.dotx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx or .dotx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6296,6299,6301,6304,6307],{"name":6297,"slug":6298,"type":16},"Documents","documents",{"name":6300,"slug":6291,"type":16},"DOCX",{"name":6302,"slug":6303,"type":16},"Office","office",{"name":6305,"slug":6306,"type":16},"Templates","templates",{"name":6308,"slug":6309,"type":16},"Word","word","2026-07-18T05:16:23.136271",{"slug":6312,"name":6312,"fn":6313,"description":6314,"org":6315,"tags":6316,"stars":6231,"repoUrl":6232,"updatedAt":6330},"frontend-design","design production-grade frontend interfaces","Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6317,6318,6321,6324,6327],{"name":6223,"slug":6224,"type":16},{"name":6319,"slug":6320,"type":16},"Frontend","frontend",{"name":6322,"slug":6323,"type":16},"React","react",{"name":6325,"slug":6326,"type":16},"Tailwind CSS","tailwind-css",{"name":6328,"slug":6329,"type":16},"UI Components","ui-components","2026-04-06T17:56:16.723469",{"slug":6332,"name":6332,"fn":6333,"description":6334,"org":6335,"tags":6336,"stars":6231,"repoUrl":6232,"updatedAt":6344},"internal-comms","write internal company communications","A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6337,6340,6341],{"name":6338,"slug":6339,"type":16},"Communications","communications",{"name":6305,"slug":6306,"type":16},{"name":6342,"slug":6343,"type":16},"Writing","writing","2026-04-06T17:56:20.695522",{"slug":6346,"name":6346,"fn":6347,"description":6348,"org":6349,"tags":6350,"stars":6231,"repoUrl":6232,"updatedAt":6359},"mcp-builder","build MCP servers","Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node\u002FTypeScript (MCP SDK).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6351,6352,6355,6356],{"name":6267,"slug":6268,"type":16},{"name":6353,"slug":6354,"type":16},"API Development","api-development",{"name":6276,"slug":6277,"type":16},{"name":6357,"slug":6358,"type":16},"MCP","mcp","2026-04-06T17:56:10.357665",{"slug":6258,"name":6258,"fn":6361,"description":6362,"org":6363,"tags":6364,"stars":6231,"repoUrl":6232,"updatedAt":6367},"read edit and manipulate PDF files","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6365,6366],{"name":6297,"slug":6298,"type":16},{"name":6257,"slug":6258,"type":16},"2026-04-06T17:56:02.483316",{"slug":6369,"name":6369,"fn":6370,"description":6371,"org":6372,"tags":6373,"stars":6231,"repoUrl":6232,"updatedAt":6380},"pptx","create and edit PowerPoint presentations","Use this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates (.potx), layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx or .potx filename, regardless of what they plan to do with the content afterward. If a .pptx or .potx file needs to be opened, created, or touched, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6374,6377],{"name":6375,"slug":6376,"type":16},"PowerPoint","powerpoint",{"name":6378,"slug":6379,"type":16},"Presentations","presentations","2026-07-18T05:16:24.1471",{"slug":6382,"name":6382,"fn":6383,"description":6384,"org":6385,"tags":6386,"stars":6231,"repoUrl":6232,"updatedAt":6396},"skill-creator","create and optimize agent skills","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[6387,6388,6389,6392,6395],{"name":6267,"slug":6268,"type":16},{"name":6183,"slug":6184,"type":16},{"name":6390,"slug":6391,"type":16},"Evals","evals",{"name":6393,"slug":6394,"type":16},"Performance","performance",{"name":6287,"slug":6288,"type":16},"2026-04-19T06:45:40.804",490]