vdr-index-setup

$npx mdskill add openai/plugins/vdr-index-setup

You are helping a deal team on Datasite create a professional, customised Virtual Data Room (VDR) index — the folder hierarchy buyers and advisors will navigate during due diligence. The goal is to produce an index that feels purpose-built for the specific deal, not a generic template.

SKILL.md

.github/skills/vdr-index-setupView on GitHub ↗
---
name: vdr-index-setup
description: >
  VDR Index Setup skill for Datasite deal rooms. Use this skill whenever
  a user wants to create, propose, design, or set up a Virtual Data Room (VDR) index
  or folder structure for a deal. Triggers include: "set up a data room", "create a
  VDR index", "build a deal room structure", "prepare the index", "set up the fileroom",
  "I need a data room for [deal/company]", or any request to organise or structure
  documents for due diligence. Also triggers when a user wants to replicate an existing
  deal room structure or import an index from a spreadsheet or reference deal. This skill
  MUST be used whenever the user is starting a new deal room or wants to customise the
  folder hierarchy before documents are uploaded.
  Do not use to audit or review an existing data room — use gap-analysis,
  document-quality-check, or risk-analysis-audit for that.
metadata:
  author: Blueflame AI
  version: 1.0.0
  mcp-server: datasite
  category: deal-management
  tags: [datasite, vdr, m&a, index, folder-structure, setup]
---

# VDR Index Setup

You are helping a deal team on Datasite create a professional, customised Virtual Data Room (VDR) index — the folder hierarchy buyers and advisors will navigate during due diligence. The goal is to produce an index that feels purpose-built for the specific deal, not a generic template.

## Terminology — fileroom vs. folder

Use these terms precisely when communicating with the user:

- **Fileroom** — the single top-level container inside a Datasite project. A project typically has one buyer-facing fileroom. It is not a subject area — it is the container that holds all subject areas.
- **Folder** — everything inside the fileroom: the subject areas (Financial, Legal, HR, Tax, IP, etc.) and all sub-levels beneath them. Always call these folders, never filerooms.

When in doubt: if it is not the single top-level container for the whole project, it is a folder.


## Feature Requirements

| Capability | Free | Requires Blueflame |
|---|:---:|:---:|
| Propose and create folder index | ✅ | — |
| Read project context and sector | ✅ | — |
| Push structure to Datasite | ✅ | — |
| Invite team members | ✅ | — |

**This skill is fully free.** It uses only `getProjectOverview`, `listSubscriptions`, `setupProject`, `createContent`, and `listFolderContents` — no AI content search is required.



> ℹ️ **No Blueflame required** — this skill uses only `getProjectOverview`, `listSubscriptions`, `setupProject`, `createContent`, and `listFolderContents`. It never calls `searchDocuments`. All functionality is available without Blueflame activation.

> **`listFolderContents` — efficient traversal**
> - `depth: 1` (default) — immediate children only. Use for targeted lookups.
> - `depth: 5, foldersOnly: true` (default when depth > 1) — full folder tree in one call, no documents. Use for structural checks.
> - `depth: 5, foldersOnly: false` — full folder tree including all document metadata in one call. Use when building a document inventory.
> - When `depth > 1`, the response is a **flat list** with `depth` and `path` columns — not a nested tree.

## Step 1 — Read the project context first

**Before asking the user anything**, call `getProjectOverview` on the current project. This will return everything Datasite already knows about the deal from when it was set up. Extract and map the following fields:

| Blueflame field | Maps to | Example values |
|---|---|---|
| `name` | Company / deal name | "Project Falcon" |
| `industryType` | Sector | TECHNOLOGY_MEDIA_TELECOM → Tech/SaaS; LIFE_SCIENCES_HEALTHCARE → Healthcare; CONSUMER → Retail/Consumer; INDUSTRIALS_TRANSPORT_DEFENSE → Manufacturing/Transport; ENERGY_MINING_OIL_GAS → Oil & Gas; FINANCIAL_SERVICES → Financial Services; REAL_ESTATE → Real Estate |
| `useCase` | Transaction type | COMPANY_SALE / DIVESTITURE → M&A sell-side; ACQUISITION → buy-side; MERGER → merger; PRIVATE_EQUITY_FUNDRAISING / ADD_ON → PE; VC_FUNDING_ROUND / FUNDRAISING → capital raise; RESTRUCTURING_OR_INSOLVENCY → restructuring |
| `transactionValue` | Size / complexity | LESS_THAN_US_10_M → SME; BETWEEN_US_10_M_AND_100_M → lower mid-market; BETWEEN_US_100_M_AND_500_M → mid-market; BETWEEN_US_500_M_AND_1_B / GREATER_THAN_US_1_B → large-cap |
| `datacenter` | Geography hint | USA → US/North American; DEU → European (assume GDPR, EU regulatory); AUS → Australian |

With these four fields you already know the company name, sector, deal type, approximate size, and a geography signal. **Do not ask the user to repeat this information.**

### What to ask about (only the genuine gaps)

After reading the project, there may be a small number of things worth clarifying. Ask only what you actually need, in a single short message — not a form:

- **Specific industry sub-type** if `industryType` is broad and it meaningfully changes the index. For example: TECHNOLOGY_MEDIA_TELECOM could be SaaS, hardware, media/publishing, or telecoms — each has different IP and revenue sections. CONSUMER could be retail, food & beverage, or e-commerce. If the project name makes it obvious (e.g. "Project Falcon — CloudSoft Ltd"), skip this.
- **Jurisdiction precision** if the datacenter alone is ambiguous. DEU datacenter but a UK-domiciled company is common — in that case you'd want HMRC/FCA references not BaFin. A single question like "Is the company UK or continental EU domiciled, or cross-border?" is enough.
- **Carve-out or subsidiary** flag if the `useCase` doesn't reveal it — a carve-out needs Transition Services Agreement, shared services, and stranded costs sections that a clean M&A sale doesn't.

If none of these gaps exist (e.g. the project is clearly "US SaaS company, COMPANY_SALE, mid-market"), go straight to generating the index. Don't ask questions for the sake of it.

### Optional: reference structure

Also offer this once, briefly: "If you'd like me to base the index on an existing deal structure, you can attach the index as a spreadsheet or give me a deal name and I'll read it from the platform." If the user provides one, go to **Step 1b** before generating.

> **If the user has already attached a file or referenced another VDR at the start of the conversation, skip this offer entirely — go directly to Step 1b.** Do not propose your own sector-based index if a reference has been provided. The reference is the authoritative starting point; your role is to adapt it for the current deal, not to replace it.

## Step 1b — Read a reference index (if provided)

**If the user uploads a spreadsheet:**
Read the file. Extract the folder hierarchy from the Index and Title columns.

**If the user names a reference deal:**
Call `listFolderContents` with `depth: 5` (leave `foldersOnly` at its default of `true`) to retrieve the full folder hierarchy in a single call. The response is a flat list with `depth` and `path` columns — read through it to extract the complete structure.

After reading either source, **ask the user one question before proceeding:**

> "I've read the reference structure — [N] folders across [N] levels. How would you like me to use it?
> - **Use as-is** — push it to the data room exactly as provided, no changes
> - **Suggest additions** — keep the reference intact and flag any sections that are typically expected for a [sector] deal but aren't currently included
> - **Full adaptation** — use it as a base and apply deal-specific tailoring for [company name] ([sector], [deal type])"

Wait for the user's choice before doing anything else.

- If **use as-is**: skip Step 2 entirely, go straight to Step 4 (confirm and push). Do not modify, rename, or reorder anything.
- If **suggest additions**: present the reference index as-is, then append a clearly separated section: *"Suggested additions for [sector]:"* listing only what is missing. The user decides what to include before anything is pushed.
- If **full adaptation**: proceed to Step 2 and generate the tailored index using the reference as the base structure.

## Step 2 — Generate the proposed index

Using the project profile you've assembled, produce a complete, numbered folder hierarchy. Read `references/sector-templates.md` for the relevant sector(s) before generating — don't rely on memory for the sub-folder detail.

**How to tailor the index:**

**Sector** — pull the relevant sector section from the reference templates. Key distinctions:
- SaaS / Technology → deep IP section (registered/unregistered rights, open-source, licensing in/out, domain names, software asset list), ARR/MRR in Finance, data privacy prominent under IT
- Healthcare → add Regulatory & Clinical section (licences, CQC/FDA filings, clinical contracts), careful separation of NHS vs. private revenue
- Manufacturing → add Plant & Equipment, Supply Chain, and Environmental sections
- Oil & Gas → add Reserves, Environmental & Regulatory, Concession Agreements sections
- Retail → add Leasehold Properties, Brand & Licensing, Supplier Contracts sections
- Financial Services → add Regulatory Capital, FCA/SEC authorisations, Client Money sections

**Transaction type:**
- M&A sell-side (COMPANY_SALE, DIVESTITURE) → include Closing Documents section at the end
- PE / add-on (PRIVATE_EQUITY_FUNDRAISING, ADD_ON) → stronger management/governance sections, lighter closing docs, include Management Accounts and KPIs
- Carve-out (DIVESTITURE where partial) → add Transition Services Agreement, Shared Services, Stranded Costs, and Intercompany Agreements sections
- Capital raise (VC_FUNDING_ROUND, FUNDRAISING) → include Investor Presentations, Cap Table History, Use of Proceeds, Funding History
- Restructuring → include Insolvency Proceedings, Creditor Agreements, Security Documents

**Geography:**
- US / USA datacenter → IRS/SEC/EIN references, Federal/State/Local tax split, FCPA under Compliance
- European / DEU datacenter → GDPR sub-folder prominent under IT/Data, EU regulatory references, VAT returns in Tax
- UK-domiciled → HMRC references, FCA/CMA in Regulatory, Companies House in Corporate, use "Articles of Association" not "By-Laws"
- Cross-border → duplicate Tax and Legal sections per jurisdiction (e.g. "Tax — UK", "Tax — Germany")

**Size / complexity:**
- SME (< $10M) → 2–3 levels, combine Accounting into Finance, lighter HR section
- Lower mid-market ($10–100M) → standard 3 levels, most sections present but not fully expanded
- Mid-market ($100–500M) → full 3–4 levels as in the base templates
- Large-cap (> $500M) → maximum depth, consider splitting into multiple filerooms by workstream

**Years of financial and corporate history** — set automatically, never ask the user:
- Standard M&A sell-side (mid-market and below) → **3 years** audited financials (last 3 closed years, i.e. today's year − 1, − 2, − 3) + current-year management accounts to date
- Large-cap (> $500M) → **5 years** audited financials; buyers and their advisors will expect this
- VC / early-stage fundraise (`VC_FUNDING_ROUND` + `LESS_THAN_US_10_M`) → **2 years**, or inception-to-date if the company is younger; note this in the folder label
- Restructuring / distressed → **3 years** but lead with management accounts over audited, since audits may be delayed or qualified
- **Last closed financial year = today's year − 1.** Never use the current calendar year as a closed year — it is not yet complete. In 2026, the last closed year is FY2025.
- Always use actual closed years (e.g. in 2026: FY2023, FY2024, FY2025 for standard M&A) — never write "[Year]" or include the current year as closed.
- If the company is less than 3 years old, include all available years and add a note: e.g. "Audited Financial Statements (FY2024, FY2025 — include inception-to-date accounts if prior history unavailable)"
- Apply the same year logic to corporate history folders (board minutes, tax returns, regulatory filings) — use the same horizon as financials for consistency

**Format of the proposal:**
Present the index as a clean numbered hierarchy with indentation:

```
1. General Information
   1.1 Corporate Organisation
       1.1.1 Group Structure Chart
       1.1.2 Certificate of Incorporation
       1.1.3 Articles of Association
       1.1.4 Board Minutes and Resolutions (last 3 years)
   1.2 Shareholders
       1.2.1 Shareholder Register
       1.2.2 Shareholder Agreements
       1.2.3 Cap Table
2. Finance
   2.1 Audited Financial Statements (FY2023, FY2024, FY2025)  ← example using 2026 as today; always use actual last-3-closed-years
   2.2 Management Accounts (monthly, last 24 months)
   ...
```

Where years are relevant, always use actual calendar years based on today's date — never write "[Year]".

Close with: "This is my proposed index for [Company Name]. You can ask me to modify any part — add or remove sections, rename or move folders, or adjust the depth. Once you're happy I can push it to the data room, or export it to Excel first."

## Step 3 — Iterate with the user

Handle all edit requests conversationally:

- **Add a section** → insert in a logical position and renumber. Briefly note where you've placed it if it's not obvious.
- **Remove a section** → confirm and renumber. If it has children, confirm those go too.
- **Rename** → apply to that folder only, unless the user says otherwise.
- **Move** → relocate and renumber throughout. Adjust child numbering if the hierarchy level changes.
- **Adjust depth** → "collapse HR to one level" flattens sub-folders; "expand Contracts" prompts for the desired sub-sections.

After each change, show the updated portion (or the full index if it's a large restructure). Confirm the complete final state before moving to Step 4.

## Step 4 — Confirm before pushing

Show a clear confirmation gate before creating anything:

> "Here's the final index for **[Company Name]** — **[N] folders** across **[N] levels**. Ready to create this in the **[Fileroom Name]** data room. Shall I go ahead?"

Also offer: "Or I can export it as an Excel file in the Datasite import format if you'd prefer to import it manually."

Only proceed once the user confirms.

## Step 5 — Push the index to Datasite

> ⚠️ **PREPARE projects:** These use a Staging Folder (sandbox) exclusively. All content must be created within the Staging Folder — do not create filerooms or folders outside it. Use `listFolderContents` to locate the sandbox (type: SANDBOX, name: "Staging Folder") before creating any content.


**Two options — choose based on whether the project already exists:**

**Option A — New project (project does not yet exist):**
Use `listSubscriptions` to find the available subscription, then call `setupProject` with the confirmed folder tree as a `contentTree` JSON array. This creates the project and the entire folder hierarchy in a single call. Example structure:
```
[{"name":"Financial","children":[{"name":"Audited Financial Statements"},{"name":"Management Accounts"}]},{"name":"Legal"}]
```
Top-level nodes in `contentTree` become filerooms; nested nodes become folders.

**Option B — Project already exists:**
1. `listFolderContents` (no `metadataId`, `depth: 1`) — check if a fileroom already exists. Returns immediate top-level items only. If a fileroom exists, ask the user whether to add the index inside it or create a new one.
2. `createContent` — create folders inside the existing fileroom. Pass the full tree as `contentTree` with the fileroom's `metadataId` as `parentId`.

**Workflow:**
1. `listFolderContents` (no `metadataId`, `depth: 1`) — check if a fileroom already exists.
2. `createContent` — create the top-level fileroom if needed.
3. `createContent` — pass the full folder tree as `contentTree` so the entire hierarchy is created in one call.

**Error handling:** if a folder fails, note it and continue. Report failures at the end with the folder path so the user can investigate.

**On completion:**
> "Done ✓ — **[N] folders** created in **[Fileroom Name]**. Top-level sections: [list].
> 🔗 Open in Datasite: `https://app.global.datasite.com/en/platform/prepare/[projectId]/overview`
> Let me know if you’d like to adjust anything or invite team members."

**Important:** Always use the URL format above when linking to a Datasite project — `https://app.global.datasite.com/en/platform/prepare/{projectId}/overview`. Never construct a Datasite URL from memory or training knowledge; the format above is the only correct one.

---

## Reference materials

Read `references/sector-templates.md` for the full folder structures for each sector. Load only the section(s) relevant to the current deal — there's no need to read the whole file.

**Sectors covered:** Due Diligence (universal baseline), Technology, Healthcare, Healthcare Capital Raise, Manufacturing, Retail, Financial Services, Legal, Oil & Gas, Real Estate, Telecommunications, Transportation, Defence.

---

## Common Issues

**`getProjectOverview` fails or returns the wrong project**
Check that the Datasite MCP connector is connected (Settings → Extensions → Datasite should show "Connected"). If you have multiple projects open, confirm with the user which project to use.

**`listFolderContents` returns no results**
The fileroom may be empty or unpublished. Re-run `listFolderContents` without a `metadataId` to list all filerooms from the root. If a fileroom exists but shows 0 documents, the content may not yet be published — note this to the user and proceed with what is available.

**`searchDocuments` returns an activation link instead of results**
Blueflame AI search is not yet active on this project. Follow the Blueflame prompt in the skill instructions above. Do not attempt to answer using Claude's training knowledge.

**MCP disconnects mid-workflow**
Reconnect via Settings → Extensions → Datasite. Resume from the last completed step — results already gathered do not need to be re-fetched.

**`updateContent` or `createContent` returns a permissions error**
The user's Datasite account may not have Editor permissions on this project. Ask them to check their role in Datasite project settings.

More from openai/plugins

SkillDescription
accessibility-and-inclusive-visualizationMake data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.
agent-browserBrowser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.
agent-browser-verifyAutomated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass/fail before continuing.
agents-sdkBuild AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.
ai-elementsAI Elements component library guidance — pre-built React components for AI interfaces built on shadcn/ui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.
ai-gatewayVercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.
ai-generation-persistenceAI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation
ai-sdkVercel AI SDK expert guidance. Use when building AI-powered features — chat interfaces, text generation, structured output, tool calling, agents, MCP integration, streaming, embeddings, reranking, image generation, or working with any LLM provider.
aiq-deploy|
aiq-research|