{"id":68327,"plugin_id":"plugin_asdk_app_6ad62fc9c0208191b0683a6b5829d0a8","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-28T13:14:26.047Z","digest":"a5349aa754c61b05e6bacd335041b6e571ef58e3b51453d28d979fb6dc41373e","against":null,"payload":{"description":"Route financial reporting, AR aging, AP analytics, and lease management questions to Yardi Virtuoso GL and Lease Management MCP tools. Use this skill whenever someone asks about income statements, balance sheets, trial balances, cash flow, budget comparisons, budget vs actuals, AP analytics, expense distribution, AP aging, AR aging, tenant delinquency, collections, aging buckets, lease details, tenancy schedules, lease clauses, or rent rolls. Also trigger when the user mentions \"P&L\", \"NOI\", \"financial statement\", \"budget\", \"aging report\", \"delinquency\", \"collections\", \"lease\", \"tenancy\", or asks about revenue, expenses, or tenant balances. Even if the user doesn't use these exact terms — if they're asking about financial data, aging, or leases, use this skill. Do NOT use for KPIs (use AssetIQ), work orders (use Work Order Manager), or vendor lookups (use P2P Manager).\n","included_files":[],"name":"virtuoso-gl-manager","skill_md_contents":"---\nname: virtuoso-gl-manager\ndescription: >\n  Route financial reporting, AR aging, AP analytics, and lease management questions to Yardi\n  Virtuoso GL and Lease Management MCP tools. Use this skill whenever someone asks about income\n  statements, balance sheets, trial balances, cash flow, budget comparisons, budget vs actuals,\n  AP analytics, expense distribution, AP aging, AR aging, tenant delinquency, collections,\n  aging buckets, lease details, tenancy schedules, lease clauses, or rent rolls. Also trigger\n  when the user mentions \"P&L\", \"NOI\", \"financial statement\", \"budget\", \"aging report\",\n  \"delinquency\", \"collections\", \"lease\", \"tenancy\", or asks about revenue, expenses, or\n  tenant balances. Even if the user doesn't use these exact terms — if they're asking about\n  financial data, aging, or leases, use this skill. Do NOT use for KPIs (use AssetIQ),\n  work orders (use Work Order Manager), or vendor lookups (use P2P Manager).\n---\n\n# Virtuoso GL Manager\n\nThis skill routes financial reporting, AR/AP analytics, and lease management questions to Yardi\nVirtuoso's GL and Lease Management tools. These tools use **property HMY IDs** (integers like\n`35`) — not property codes. Use `get_autocomplete` with `autoCompleteType: \"property\"` to\nresolve property names to HMY IDs before calling any tool in this skill.\n\n## Tool Catalog (8 tools)\n\n### Entity Resolution\n\n| Tool | When to use |\n|------|------------|\n| `vn_mcpframework_get_autocomplete` | **Call first for every query in this skill.** Resolves property, tenant, and account names to HMY IDs. Pass `autoCompleteType` (`\"property\"`, `\"tenant\"`, `\"account\"`) and `searchTerm`. The `id` field is the HMY ID. For example: `{\"id\": 35, \"label\": \"resny02\", \"label2\": \"Empire Terrace, 2040 Rosedale Ave, Bronx, NY\"}` — use `35` as the PropertyId. |\n\n### Financial Reports\n\n| Tool | When to use |\n|------|------------|\n| `gl_financialreportsmain_financial_report` | **Generates any standard financial report.** Set `ReportType` to: `\"incomestatement\"`, `\"balancesheet\"`, `\"trialbalance\"`, `\"cashflowstatement\"`, `\"budgetcomp\"`, or `\"twelvemonthbudget\"`. Required: `PropertyId` (int array from autocomplete), `BookId` ([1]=Accrual, [2]=Cash), `MonthFrom`, `MonthTo`. Set `type: \"screen\"` and boolean flags to `false`. |\n| `gl_financialreports_budget_comparison` | Budget vs actuals comparison. Required: `PropertyId` (int array) or `PropCode` (string array), `BookId`, `MonthFrom`, `MonthTo`. Optional: `BudgetSource` (0=None, 1=GL, 2=AdvBudget, 3=Analysis), `TreeId`/`TreeCode` for account tree. |\n| `gl_apanalytics_ap_analytics_report` | AP analytics. Set `ReportType` to `\"ExpenseDistribution\"` or `\"Aging\"`. Required: `PropertyId` (int array) or `PropertyCodes` (string array), `PeriodFrom`, `PeriodTo`. Aging reports also need `AgeAsOf`. |\n\n**Critical date format for all financial tools:** `YYYY-MM-DDT00:00:00.000` (always 1st of month, e.g. `\"2025-01-01T00:00:00.000\"`).\n\n### Accounts Receivable\n\n| Tool | When to use |\n|------|------------|\n| `ar_aranalytics_get_aging_detail` | AR aging by tenant, charge code, property, owner, or invoice. Required: `propertyIds` (^-separated HMY IDs, e.g. `\"3^35^36\"`), `summarizeBy` (0=ByTenant, 1=ByChargeCode, 2=ByProperty, 3=ByOwner, 4=ByInvoice). Optional: `asOfDate` (YYYY-MM-DD), `agingbuckets` (1–12, default 5), `showUnits`, `dataFilter`, `columnsToInclude`/`columnsToExclude`. |\n\n### Lease Management\n\n| Tool | When to use |\n|------|------------|\n| `lm_leaseinfobyid_get_lease_info_by_id` | Full lease details for a specific tenant. Pass `id` (integer tenant/lease HMY ID from autocomplete). |\n| `lm_tenancyschd_get_tenancy_schedule` | Tenancy schedule — who's leasing what, lease dates, rent amounts. Required: `PageNumber`, `PageSize`. Optional: `Property` (property code string), `Tenant` (tenant name), `AsOfDate`, and boolean flags: `ChargeSchedules`, `Amendments`, `Options`, `Proposals`, `PrimaryContact`, `Units`. |\n| `lm_clauses_get_clauses` | Retrieve lease clauses. Pass `tenantId` for tenant-level clauses, or `amendmentId` + optional `libraryId` for amendment-specific clauses. |\n\n## Routing Logic\n\n**Step 0:** Always call `get_autocomplete` with `autoCompleteType: \"property\"` first to get HMY IDs. Never use `search_properties` — that's for AssetIQ only.\n\n1. **Financial statement (P&L, balance sheet, trial balance, cash flow)?**\n   - → `get_autocomplete` for property HMY IDs\n   - → `financial_report` with `ReportType`, `PropertyId`, `BookId`, `MonthFrom`, `MonthTo`\n\n2. **Budget vs actuals?**\n   - → `get_autocomplete` for property HMY IDs\n   - → `budget_comparison` with `PropertyId`, `BookId`, `MonthFrom`, `MonthTo`\n\n3. **AP expense analysis or AP aging?**\n   - → `get_autocomplete` for property HMY IDs\n   - → `ap_analytics_report` with `ReportType` (`\"ExpenseDistribution\"` or `\"Aging\"`)\n\n4. **Tenant delinquency or AR aging?**\n   - → `get_autocomplete` for property HMY IDs\n   - → `get_aging_detail` with `propertyIds` (^-separated HMY IDs) and `summarizeBy`\n\n5. **Specific lease details?**\n   - → `get_autocomplete` with `autoCompleteType: \"tenant\"` to get tenant HMY ID\n   - → `get_lease_info_by_id` with the tenant HMY ID\n\n6. **Tenancy schedule / rent roll?**\n   - → `get_tenancy_schedule` with `PageNumber: 1`, `PageSize: 100`, and optional `Property` code\n\n7. **Lease clauses?**\n   - → `get_autocomplete` with `autoCompleteType: \"tenant\"` to get tenant HMY ID\n   - → `get_clauses` with `tenantId`\n\n## Workflow Recipes\n\n### Financial Deep Dive\n**Trigger**: \"Show me the income statement for [property]\" / \"how are we tracking against budget?\"\n1. `get_autocomplete` with `autoCompleteType: \"property\"` and the property name → collect HMY IDs from the `id` field\n2. For income statement: `financial_report` with `ReportType: \"incomestatement\"`, `PropertyId: [35, 36, ...]`, `BookId: [1]`, `MonthFrom`, `MonthTo`\n3. For budget tracking: `budget_comparison` with same `PropertyId` array and date range\n4. Present key line items: revenue, expenses, NOI, variance to budget\n\n### Tenant Delinquency Review\n**Trigger**: \"Who owes us money?\" / \"show me the aging report for [property]\"\n1. `get_autocomplete` with `autoCompleteType: \"property\"` → get HMY IDs\n2. `get_aging_detail` with `propertyIds` (^-separated HMY IDs, e.g. `\"3^35\"`), `summarizeBy: 0` (ByTenant)\n3. Present aging buckets (current, 30, 60, 90, 120+ days) with totals\n4. Flag tenants with balances over 60 days\n\n### AP Expense Analysis\n**Trigger**: \"Where's our money going?\" / \"expense distribution for [property]\"\n1. `get_autocomplete` with `autoCompleteType: \"property\"` → get HMY IDs\n2. `ap_analytics_report` with `ReportType: \"ExpenseDistribution\"`, `PropertyId: [<HMY_IDs>]`, `PeriodFrom`, `PeriodTo`\n3. Present expense breakdown by account category\n\n### Lease Expiry Review\n**Trigger**: \"What leases are coming up for renewal?\" / \"show me the tenancy schedule\"\n1. `get_tenancy_schedule` with `Property` (code), `PageNumber: 1`, `PageSize: 100`, `ChargeSchedules: true`\n2. Filter/sort by lease end dates approaching\n3. `get_lease_info_by_id` for detailed review of specific leases of interest\n4. Highlight upcoming expirations and renewal options\n\n## Common Pitfalls\n\n- **Always use `get_autocomplete` for property HMY IDs, never `search_properties`.** `search_properties` returns property codes which financial tools cannot accept.\n- **Date format for financial tools:** `YYYY-MM-DDT00:00:00.000` (always 1st of month). Missing the `T00:00:00.000` suffix causes errors.\n- **AR aging date format is different:** `YYYY-MM-DD` (no time suffix).\n- **AR aging `propertyIds` uses ^-separated strings** (e.g. `\"3^35^36\"`), not integer arrays.\n- **`financial_report` has a massive schema but most fields should be ignored.** Use only: `ReportType`, `PropertyId`, `BookId`, `MonthFrom`, `MonthTo`, `type: \"screen\"`, and the boolean display flags (all `false`).\n- **`budget_comparison` requires `BookId`** — [1]=Accrual, [2]=Cash. Omitting it causes errors.\n- **AP analytics has two distinct report types:** `\"ExpenseDistribution\"` for spend breakdown, `\"Aging\"` for AP aging buckets (which additionally needs `AgeAsOf`).\n- **Tenancy schedule pagination is required** — always pass `PageNumber` (start at 1) and `PageSize` (100 is a reasonable default).\n- **`get_tenancy_schedule` uses a `Property` code string** (one of the few non-AssetIQ tools that does) — you can get this from autocomplete's `label` field.\n\n## Presentation Guidelines\n\n- **Lead with key metrics.** Revenue, NOI, net income for financial reports. Total delinquent balance for aging.\n- **Show comparisons.** Budget vs actual variance, prior year comparison, aging bucket trends.\n- **Flag red flags.** Budget overruns (>10% variance), high delinquency (60+ days), large AP aging balances.\n- **Use accounting terminology naturally.** P&L, trial balance, accrual, cash basis, charge code, aging bucket, NOI.\n- **Cite Yardi Virtuoso as the data source.**\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}