# Due Diligence Mcp (`warui09/due-diligence-mcp`) Actor

AI-powered due diligence for business acquisitions. Scrapes BizBuySell/DealStream listings, owner LinkedIn profiles, news & returns structured risk reports with automated red flags. MCP server for Claude, Cursor & AI agents. 60 seconds per report, $1.50 fresh / $0.10 cached.

- **URL**: https://apify.com/warui09/due-diligence-mcp.md
- **Developed by:** [Kevin Warui](https://apify.com/warui09) (community)
- **Categories:** MCP servers, Lead generation, AI
- **Stats:** 3 total users, 1 monthly users, 0.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

from $70.00 / 1,000 generate diligence reports

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Due Diligence MCP Server

AI-powered first-pass due diligence on any business acquisition target.

### What it does

Connect to any MCP-compatible AI client and your agent can run structured
due diligence on any business — aggregating listing data, owner background,
employee sentiment, legal signals, and a deterministic risk score.

### Tools (v0.1)

| Tool | Status | What it returns |
|---|---|---|
| `resolve_entity` | ✅ Live | Canonical domain, LinkedIn slug |
| `get_listing_details` | ✅ Live | BizBuySell/DealStream listing data |
| `get_website_intelligence` | ✅ Live | Website age, tech stack, content |
| `get_linkedin_intelligence` | ✅ Live | Headcount, industry, founded year |
| `get_news_mentions` | ✅ Live | Recent press, adverse news signals |
| `get_owner_signals` | ✅ Live | Owner background, tenure, prior exits |
| `get_full_diligence_report` | ✅ Live | All of the above + risk score |
| `get_employee_sentiment` | 🔜 v0.2 | Glassdoor ratings, review themes |
| `get_financial_signals` | 🔜 v0.2 | Traffic, headcount trend, app metrics |
| `get_legal_signals` | 🔜 v0.3 | Court records, UCC liens, BBB |

### Risk Score

The full report includes a deterministic risk score (0–100) with labelled flags:

- **Valuation flags**: revenue multiples outside normal SMB ranges
- **Key-person risk**: very small teams with high owner dependency
- **Track record**: recently founded businesses with limited history
- **Adverse news**: lawsuits, fraud, investigations in recent press
- **Owner stability**: short tenure, no prior exit experience

### MCP endpoint

```
https://warui09--due-diligence-mcp.apify.actor/mcp
```

```json
{
  "mcpServers": {
    "due-diligence": {
      "url": "https://warui09--due-diligence-mcp.apify.actor/mcp",
      "headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
    }
  }
}
```

### Example agent workflow

```
User: Run due diligence on this BizBuySell listing: [URL]

Agent calls:
1. resolve_entity({ query: "acme-hvac.com" })
2. get_full_diligence_report({
     domain: "acme-hvac.com",
     company_name: "ACME HVAC",
     listing_url: "[URL]",
     linkedin_slug: "acme-hvac"
   })

Returns: structured report with risk score in ~60 seconds
```

### Local development

```bash
npm install
npm run dev
```

### Deploy

```bash
npm run build
apify push
```

### Pricing

Pay Per Event — higher rates reflect higher buyer WTP:

- Single tool call (fresh): $0.08
- Full diligence report (fresh): $0.50 + $0.10 risk score = $0.60 per full report
- Cached report: $0.10

**Disclaimer**: This tool aggregates public data. It does not constitute professional
legal, financial, or investment advice.

# Actor input Schema

## `cacheTtlHours` (type: `integer`):

How long to cache scraped data before re-fetching. Default: 24 hours.

## `requestTimeoutSecs` (type: `integer`):

Timeout per sub-scraper task. Default: 30 seconds.

## `sessionTimeoutSecs` (type: `integer`):

Idle MCP session timeout before auto-close. Default: 300 seconds.

## Actor input object example

```json
{
  "cacheTtlHours": 24,
  "requestTimeoutSecs": 30,
  "sessionTimeoutSecs": 300
}
```

# Actor output Schema

## `report` (type: `string`):

The generated due diligence report

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("warui09/due-diligence-mcp").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("warui09/due-diligence-mcp").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call warui09/due-diligence-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,warui09/due-diligence-mcp"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/mG0nq6arlTAddFCpa/builds/yjol16cbfHbGY74Ye/openapi.json
