← Plugin catalog
Productivity

Yardi Virtuoso

Yardi Systems, Inc v0.1.0

Access Yardi data and tools

Full description ↓

View on ChatGPT ↗

Save this plugin to Following and return to review observed changes. Follow up to 10 plugins free.

Description

From the marketplace listing

Yardi Virtuoso helps investment, property, and asset management professionals explore Yardi information through ChatGPT. Ask about financial reports, budgets, receivables, leases, debt, vendors, and payables using natural language. Available data and tools depend on your connected Yardi account and permissions.

Language: English · Automatically detected from descriptions.

Competitor profile

From the developer’s listing and package; capabilities are not independently tested. Package observed Nov 3, 2026.

Declared capabilities

Access Yardi data and tools

Declared limitations

  • Unsupported vendor modification for the documented read-only workflows. Explain that changing bank details is unavailable through this plugin and direct the user to the authorized Yardi workflow. Do not call plugin tools or claim any record was changed.
  • Unsupported payment execution. Explain that invoice retrieval does not execute payments and direct the user to the authorized payment workflow. Do not call plugin tools, initiate a transfer, or claim a payment succeeded.
  • Unsupported ledger mutation. Explain that this plugin documents financial reporting rather than journal posting. Do not call plugin tools or claim a journal entry was created.

Review scenarios; not an exhaustive list.

Cost & access

Pricing and account requirements have not been established from the available package declarations. Unknown pricing does not mean free access.

Starter prompt

What Yardi financial, debt, and payables information can I access?

View package source →

Files & skills

File archives

Plugin package8 files · 76.3 KBBrowse files →
Skill instructions
virtuoso-debt-manager5.9 KB

View saved version →

---
name: virtuoso-debt-manager
description: Route debt, loan, collateral, covenant, and hedge questions to Yardi Virtuoso Debt Management (yardi-virtuoso) MCP tools. Use this skill whenever someone asks about loans, loan balances, maturity dates, borrowers, lenders, collateral, LTV, NOI, occupancy, covenants, reminders, hedges, interest rate caps, swaps, or any debt portfolio data. Also trigger when the user mentions "asset loan", "liability loan", "line of credit", "capital stack", "syndication", "SOFR", "rate table", "funding status", "debt analytics", "adhoc debt report", or "debt dataset". Do NOT use for vendor/payables data (use P2P Manager), GL financial reports (use GL Manager), or property KPIs (use Performance Manager).
---

# Virtuoso Debt Manager

Routes debt portfolio questions to Yardi Virtuoso's Debt Management tools via the
**yardi-virtuoso** connection, authenticated with OAuth dynamic client registration.

## Tool Map

| Domain | Search tool | Column catalog | Detail tool |
|--------|------------|----------------|-------------|
| Loans | `dmx_loan_search_loans` | `dmx_loan_search_loans_columns` | `dmx_loan_get_loan_details` |
| Collateral | `dmx_collateral_search_collateral` | `dmx_collateral_search_collateral_columns` | — |
| Covenants | `dmx_covenant_search_covenants` | `dmx_covenant_search_covenants_columns` | — |
| Hedges | `dmx_hedges_search_hedges` | `dmx_hedges_search_hedges_columns` | — |
| Debt analytics | `dmx_debtadhoc_debt_search_query` | `dmx_debtdataset_get_debtdataset_config` | — |

**Column catalog tools** — call the matching `_columns` tool before adding a `Columns`
parameter you haven't used before; invalid column names silently drop data.

---

## Data Model

`search_loans` is the **spine** of the debt data model. Every collateral record, covenant,
and hedge is linked to a loan via a shared loan code. The enrichment tools return
domain-specific detail that `search_loans` does not carry:

| Tool | What it adds that `search_loans` doesn't have |
|------|------------------------------------------------|
| `search_collateral` | Property-level values, occupancy %, NOI, LTV inputs |
| `search_covenants` | Compliance reminders, due dates, status, assigned users |
| `search_hedges` | Hedge type, counterparty, notional, termination date |
| `debt_search_query` | **Historical and point-in-time values** (month granularity). The only tool that can answer date-specific or comparative questions. Results link to other tools via loan code. |

Use the loan code returned by `search_loans` to join or correlate results across tools
when presenting combined data to the user.

---

## Default Query Strategy

1. **If the question involves a specific date, a historical value, or a comparison across
   time periods — route to `debt_search_query` first.** It is the only tool that returns
   data as of a point in time (month granularity). All other search tools reflect current
   values only. Examples that trigger this path:
   - "What was the balance in January 2024?"
   - "Compare our debt exposure this year vs last year"
   - "How has the balance changed over the last 6 months?"
   Always call `get_debtdataset_config` before `debt_search_query` to get valid
   `dataset_Id` and `measures` values — never guess them.
   If not all measures or columns are found in this tool start with the `search_loans` tool to 
   find additional detail using the loan code to link the data

2. **For current-state questions, start with `search_loans`** to establish the loan
   universe. It covers the majority of what users need: balances, parties, maturity,
   rate, and status.

3. **Call an enrichment tool only if the user's question requires detail that
   `search_loans` cannot provide** — collateral metrics, covenant compliance, or hedge
   exposure. Do not call enrichment tools speculatively.

4. **Correlate on loan code** when combining results across tools. The loan code is the
   common key across `search_loans`, `search_collateral`, `search_covenants`,
   `search_hedges`, and `debt_search_query`.

5. **For a single loan**, call `get_loan_details` instead of an enrichment tool when the
   user just wants "everything about this loan" — it returns the fullest single-loan
   payload without requiring a join.

---

## Routing & Sequencing

**Loans — list or filter**
→ `search_loans` (defaults: `LoanStatus: "0"`, `SyndicationType: "2"`, `FundingStatusTypes:"funded","default"`)

**Loans — single loan detail**
→ `search_loans` to get the integer `id` → `get_loan_details`

**Collateral / LTV / occupancy / NOI**
→ `search_collateral` (`LoanTypeFilter` is required)

**Covenants / compliance / reminders**
→ `search_covenants`

**Hedges / rate caps / termination dates**
→ `search_hedges`

**Debt metrics over time or as of a date**
→ `get_debtdataset_config` first (never guess `dataset_Id` or `measures`) → `debt_search_query`

---

## Business Rules

- **`LoanStatus`** defaults to `"0"` (Active). Ask only if the user wants inactive or all.
- **`SyndicationType`** defaults to `"2"` (Whole Loans) to avoid double-counting.
- **`FundingStatusTypes`** defaults to `"funded, default"` unless the user specifies otherwise.
- **Name filters** (`LenderIds`, `BorrowerIds`, `EntityIds`, `PropertyList`) use built-in
  autocomplete — pass plain names like `"Wells Fargo"`, never raw IDs.
- **`get_loan_details`** requires an integer `id` from a prior `search_loans` call.
- **`debt_search_query` charts** must use Chart.js (vanilla JS) only — no recharts, no D3.

---

## Presentation Guidelines

- Lead with portfolio totals (count, aggregate balance, nearest maturity), then detail.
- Proactively flag risk: maturities within 90 days, past-due covenants, expiring hedges.
- For time-series results (3+ periods), prefer a Chart.js bar or line chart over a raw table.
- Cite Yardi Virtuoso as the data source.
virtuoso-gl-manager8.76 KB

View saved version →

---
name: virtuoso-gl-manager
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).
---

# Virtuoso GL Manager

This skill routes financial reporting, AR/AP analytics, and lease management questions to Yardi
Virtuoso's GL and Lease Management tools. These tools use **property HMY IDs** (integers like
`35`) — not property codes. Use `get_autocomplete` with `autoCompleteType: "property"` to
resolve property names to HMY IDs before calling any tool in this skill.

## Tool Catalog (8 tools)

### Entity Resolution

| Tool | When to use |
|------|------------|
| `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. |

### Financial Reports

| Tool | When to use |
|------|------------|
| `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`. |
| `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. |
| `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`. |

**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"`).

### Accounts Receivable

| Tool | When to use |
|------|------------|
| `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`. |

### Lease Management

| Tool | When to use |
|------|------------|
| `lm_leaseinfobyid_get_lease_info_by_id` | Full lease details for a specific tenant. Pass `id` (integer tenant/lease HMY ID from autocomplete). |
| `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`. |
| `lm_clauses_get_clauses` | Retrieve lease clauses. Pass `tenantId` for tenant-level clauses, or `amendmentId` + optional `libraryId` for amendment-specific clauses. |

## Routing Logic

**Step 0:** Always call `get_autocomplete` with `autoCompleteType: "property"` first to get HMY IDs. Never use `search_properties` — that's for AssetIQ only.

1. **Financial statement (P&L, balance sheet, trial balance, cash flow)?**
   - → `get_autocomplete` for property HMY IDs
   - → `financial_report` with `ReportType`, `PropertyId`, `BookId`, `MonthFrom`, `MonthTo`

2. **Budget vs actuals?**
   - → `get_autocomplete` for property HMY IDs
   - → `budget_comparison` with `PropertyId`, `BookId`, `MonthFrom`, `MonthTo`

3. **AP expense analysis or AP aging?**
   - → `get_autocomplete` for property HMY IDs
   - → `ap_analytics_report` with `ReportType` (`"ExpenseDistribution"` or `"Aging"`)

4. **Tenant delinquency or AR aging?**
   - → `get_autocomplete` for property HMY IDs
   - → `get_aging_detail` with `propertyIds` (^-separated HMY IDs) and `summarizeBy`

5. **Specific lease details?**
   - → `get_autocomplete` with `autoCompleteType: "tenant"` to get tenant HMY ID
   - → `get_lease_info_by_id` with the tenant HMY ID

6. **Tenancy schedule / rent roll?**
   - → `get_tenancy_schedule` with `PageNumber: 1`, `PageSize: 100`, and optional `Property` code

7. **Lease clauses?**
   - → `get_autocomplete` with `autoCompleteType: "tenant"` to get tenant HMY ID
   - → `get_clauses` with `tenantId`

## Workflow Recipes

### Financial Deep Dive
**Trigger**: "Show me the income statement for [property]" / "how are we tracking against budget?"
1. `get_autocomplete` with `autoCompleteType: "property"` and the property name → collect HMY IDs from the `id` field
2. For income statement: `financial_report` with `ReportType: "incomestatement"`, `PropertyId: [35, 36, ...]`, `BookId: [1]`, `MonthFrom`, `MonthTo`
3. For budget tracking: `budget_comparison` with same `PropertyId` array and date range
4. Present key line items: revenue, expenses, NOI, variance to budget

### Tenant Delinquency Review
**Trigger**: "Who owes us money?" / "show me the aging report for [property]"
1. `get_autocomplete` with `autoCompleteType: "property"` → get HMY IDs
2. `get_aging_detail` with `propertyIds` (^-separated HMY IDs, e.g. `"3^35"`), `summarizeBy: 0` (ByTenant)
3. Present aging buckets (current, 30, 60, 90, 120+ days) with totals
4. Flag tenants with balances over 60 days

### AP Expense Analysis
**Trigger**: "Where's our money going?" / "expense distribution for [property]"
1. `get_autocomplete` with `autoCompleteType: "property"` → get HMY IDs
2. `ap_analytics_report` with `ReportType: "ExpenseDistribution"`, `PropertyId: [<HMY_IDs>]`, `PeriodFrom`, `PeriodTo`
3. Present expense breakdown by account category

### Lease Expiry Review
**Trigger**: "What leases are coming up for renewal?" / "show me the tenancy schedule"
1. `get_tenancy_schedule` with `Property` (code), `PageNumber: 1`, `PageSize: 100`, `ChargeSchedules: true`
2. Filter/sort by lease end dates approaching
3. `get_lease_info_by_id` for detailed review of specific leases of interest
4. Highlight upcoming expirations and renewal options

## Common Pitfalls

- **Always use `get_autocomplete` for property HMY IDs, never `search_properties`.** `search_properties` returns property codes which financial tools cannot accept.
- **Date format for financial tools:** `YYYY-MM-DDT00:00:00.000` (always 1st of month). Missing the `T00:00:00.000` suffix causes errors.
- **AR aging date format is different:** `YYYY-MM-DD` (no time suffix).
- **AR aging `propertyIds` uses ^-separated strings** (e.g. `"3^35^36"`), not integer arrays.
- **`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`).
- **`budget_comparison` requires `BookId`** — [1]=Accrual, [2]=Cash. Omitting it causes errors.
- **AP analytics has two distinct report types:** `"ExpenseDistribution"` for spend breakdown, `"Aging"` for AP aging buckets (which additionally needs `AgeAsOf`).
- **Tenancy schedule pagination is required** — always pass `PageNumber` (start at 1) and `PageSize` (100 is a reasonable default).
- **`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.

## Presentation Guidelines

- **Lead with key metrics.** Revenue, NOI, net income for financial reports. Total delinquent balance for aging.
- **Show comparisons.** Budget vs actual variance, prior year comparison, aging bucket trends.
- **Flag red flags.** Budget overruns (>10% variance), high delinquency (60+ days), large AP aging balances.
- **Use accounting terminology naturally.** P&L, trial balance, accrual, cash basis, charge code, aging bucket, NOI.
- **Cite Yardi Virtuoso as the data source.**
virtuoso-p2p-manager4.82 KB

View saved version →

---
name: virtuoso-p2p-manager
description: >
  Route vendor and payables questions to Yardi Virtuoso Procure-to-Pay MCP tools.
  Use this skill whenever someone asks about vendors, vendor lists, vendor status, vendor
  categories, invoices, payables, bills, accounts payable, payment status, purchase orders,
  vendor spend, expense tracking by vendor, or any procure-to-pay data. Also trigger when
  the user mentions "vendor", "payable", "invoice", "bill", "AP", "accounts payable",
  "payment", "supplier", or asks about who they're paying or how much they owe. Even if
  the user doesn't use these exact terms — if they're asking about vendor management or
  invoice/payment tracking, use this skill. Do NOT use for financial reports (use GL Manager),
  work orders (use Work Order Manager), or KPIs (use AssetIQ).
---

# Virtuoso P2P Manager

This skill routes vendor management and payables questions to Yardi Virtuoso's Procure-to-Pay
tools. Payables tools use **HMY IDs** (integers) for property and vendor filters. Use
`get_autocomplete` to resolve names to HMY IDs before filtering.

## Tool Catalog (4 tools)

| Tool | When to use |
|------|------------|
| `p2p_vendormcp_get_vendors` | List or search vendors. Optional filters: `status` (`"active"`, `"inactive"`, `"all"`), `category`, `expenseType`, `vendorCode`, `maxResults` (default 1000), `includeTransactionInfo` (shows last transaction date/amount). |
| `p2p_payable_get_payables` | List payables/invoices. Required: `DateFrom`, `DateTo`. Optional: `PropertyIds` (int array), `VendorIds` (int array), `Status`, `BatchIds`, `PayableIds`, `PostMonthFrom`/`PostMonthTo`, `ItemsPerPage`, `StartIndex` for pagination. |
| `vn_mcpframework_get_autocomplete` | **Call first to resolve property/vendor names to HMY IDs.** Pass `autoCompleteType` (`"property"` or `"vendor"`) and `searchTerm`. The `id` field in results is the HMY ID. |
| `vn_mcpframework_list_autocomplete_types` | Discover available entity types for autocomplete. |

## Routing Logic

1. **User asks about a vendor list or vendor lookup?**
   - → `get_vendors` with optional filters (`status`, `category`, `expenseType`)
   - For a specific vendor by code → `get_vendors` with `vendorCode`

2. **User asks about invoices, payables, or bills?**
   - → `get_autocomplete` with `autoCompleteType: "property"` and/or `"vendor"` to get HMY IDs
   - → `get_payables` with `DateFrom`/`DateTo` and optional `PropertyIds`/`VendorIds`

3. **User asks about vendor spend or payment history?**
   - → `get_vendors` with `includeTransactionInfo: true` for last transaction overview
   - → `get_payables` filtered by `VendorIds` for detailed transaction list

## Workflow Recipes

### Vendor Directory
**Trigger**: "Show me our active vendors" / "list all vendors"
1. `get_vendors` with `status: "active"`, `includeTransactionInfo: true`
2. Present: vendor name, code, category, last transaction date/amount
3. Highlight vendors with no recent activity if relevant

### Vendor Spend Detail
**Trigger**: "How much are we paying [vendor]?" / "show me invoices from [vendor]"
1. `get_autocomplete` with `autoCompleteType: "vendor"` and vendor name → get HMY ID
2. `get_payables` with `VendorIds: [<HMY_ID>]`, `DateFrom`/`DateTo` for the period
3. Present: total spend, invoice count, individual invoice details

### Property Payables Review
**Trigger**: "Show me all payables for [property]" / "what invoices are pending?"
1. `get_autocomplete` with `autoCompleteType: "property"` and property name → get HMY ID
2. `get_payables` with `PropertyIds: [<HMY_ID>]`, `DateFrom`/`DateTo`
3. Present: total payable amount, vendor breakdown, status summary

### Vendor Category Analysis
**Trigger**: "Show me all our landscaping vendors" / "vendors by category"
1. `get_vendors` with `category` filter and `includeTransactionInfo: true`
2. Present: vendor list with spend data, sorted by category

## Common Pitfalls

- **`get_payables` requires `DateFrom` and `DateTo`** — always specify a date range.
- **`PropertyIds` and `VendorIds` in `get_payables` are integer arrays** (e.g. `[3, 35]`), not strings. Use `get_autocomplete` to get these HMY IDs.
- **Never use `search_properties` for P2P tools** — it returns property codes, not HMY IDs. Always use `get_autocomplete`.
- **`get_vendors` returns up to 1000 results by default.** Adjust `maxResults` for larger datasets.
- **`includeTransactionInfo: true` adds the last transaction date and amount** to vendor results — useful for spend overviews without pulling full payables.

## Presentation Guidelines

- **Lead with totals.** Total spend, total invoices, total vendors — then break down.
- **Group payables by vendor or property** depending on the question.
- **Flag large invoices or unusual amounts** proactively.
- **Use AP terminology naturally.** Invoice, payable, batch, post month, vendor code.
- **Cite Yardi Virtuoso as the data source.**
Package details

Publisher declarations from the archived package. These are separate from our research and the live service's terms.

Package author
Yardi Systems, Inc
Review scenarios
5 positive · 3 negativeScenario counts, not test results.

Package observed Nov 3, 2026.

Technical details
First seen
Oct 28, 2026 · 12:00 UTC
Last seen
Nov 3, 2026 · 18:00 UTC
Collection status
Collected

plugin_asdk_app_6ad62fc9c0208191b0683a6b5829d0a8

Download plugin data (JSON)