# Corporate Deep Research MCP > **[View on ApifyForge](https://apifyforge.com/actors/mcp-servers/corporate-deep-research-mcp)** | **[Use on Apify Store](https://apify.com/ryanclinton/corporate-deep-research-mcp)** --- ## Quick Start Add to your MCP client (Claude Desktop, Cursor, Windsurf): ```json { "mcpServers": { "corporate-deep-research-mcp": { "url": "https://ryanclinton--corporate-deep-research-mcp.apify.actor/mcp" } } } ``` --- **Corporate deep research for AI agents** — this MCP server gives Claude, GPT-4, and any MCP-compatible AI client instant access to 7 live corporate intelligence sources: SEC filings, stock market data, legal entity identifiers, customer reviews, consumer complaints, web research, and encyclopedic context. One tool call returns financial health scores, governance grades, reputation risk levels, and investment risk classifications across all dimensions simultaneously. Manual corporate due diligence takes a financial analyst 6-12 hours per company: pulling EDGAR filings, checking GLEIF LEI status, reading Trustpilot reviews, scanning CFPB complaint volumes, cross-referencing stock data. This server automates the entire intelligence-gathering and scoring pipeline. Your AI agent calls a single MCP tool, and the server fans out to 7 data sources in parallel, builds a corporate graph network, and returns structured analysis with actionable recommendations — in under 3 minutes. ## ⬇️ What corporate intelligence data can you access? | Data Point | Source | Coverage | |-----------|--------|----------| | 📊 Business overview, competitors, market position | Company Deep Research | Web-wide intelligence | | 📋 10-K, 10-Q, 8-K, proxy statements | EDGAR Filing Search | Full SEC database | | 📈 Stock price, market cap, financial metrics | Finnhub Stock Data | Global equities | | 🏢 Legal entity verification, parent/child hierarchy | GLEIF LEI Lookup | Global LEI registry | | ⭐ TrustScore, review volume, rating trends | Trustpilot Review Analyzer | Trustpilot listings | | ⚠️ Complaint volume, product categories, resolution status | CFPB Consumer Complaints | US financial complaints | | 📖 Company history, controversies, notable events | Wikipedia Article Search | 6M+ articles | | 🔗 Cross-source identity graph with edge weights | Corporate Network Builder | All 7 sources unified | ## MCP Tools | Tool | Price | Default Sources | Description | |------|-------|----------------|-------------| | `map_corporate_intelligence` | $0.04 | research, filings, stock, lei | Build a corporate graph network — nodes for companies, filings, stocks, and entities, edges showing relationships and connection weights | | `assess_financial_health` | $0.04 | research, filings, stock, lei | Score financial health (strong / stable / caution / distressed) from stock price signals, filing activity, and market cap logarithm | | `detect_reputation_risk` | $0.04 | research, reviews, complaints | Detect reputation risk (low / medium / high / critical) from Trustpilot review trends and CFPB complaint volume and category | | `analyze_filing_patterns` | $0.04 | filings, research | Analyze SEC filing frequency, form types, and anomaly score using standard deviation of inter-filing gaps | | `score_corporate_governance` | $0.04 | filings, lei, wikipedia | Grade governance quality A–F from disclosure completeness, 10-K/10-Q compliance, LEI status, and transparency indicators | | `trace_corporate_identity` | $0.04 | research, lei, stock, wikipedia | Cross-reference corporate identity across LEI, Wikipedia, and stock registries with alias detection and cross-ref score | | `assess_investment_risk` | $0.04 | research, filings, stock, lei, reviews, complaints | Multi-factor composite risk score (0–1) combining financial risk 30%, reputation risk 25%, governance risk 25%, market risk 20% | | `generate_deep_research_report` | $0.04 | all 7 sources | Full corporate intelligence report: key findings sorted by severity, overall risk level, and prioritized recommendations | ## Why use Corporate Deep Research MCP for due diligence? A mid-market M&A team spending 10 hours manually researching an acquisition target — EDGAR filings in one tab, Trustpilot in another, calling GLEIF's API separately — will miss the pattern: a spike in 8-K disclosures coinciding with rising CFPB complaints is a material risk signal. Manual research produces siloed data. This server produces a unified graph where the relationships between data points are as important as the data itself. This MCP server is designed for AI workflows where the agent needs to reason over corporate intelligence, not just retrieve individual data points. - **Scheduling** — attach to an Apify schedule to monitor portfolio companies weekly and alert when risk levels change - **API access** — trigger from Python, JavaScript, n8n, or any HTTP client with a single POST request - **5-minute TTL cache** — repeated queries within 5 minutes return cached results, keeping costs predictable during iterative agent workflows - **Spending limits** — set a maximum spend per Apify run; the server returns a structured error when the limit is reached so your agent can handle it gracefully - **Dual transport** — supports both SSE (`/sse`) and Streamable HTTP (`/mcp`) transports for maximum client compatibility - **Parallel source fetching** — all 7 data sources are fetched concurrently via `Promise.all`, minimizing latency per tool call ## Features - **7-source corporate intelligence graph** — research, EDGAR filings, Finnhub stock, GLEIF LEI, Trustpilot, CFPB, and Wikipedia are ingested simultaneously and linked into a unified `CorpNetwork` with typed nodes and weighted edges - **Typed edge relationships** — the network uses 6 edge types: `filed_by` (0.8), `trades_as` (0.9), `identified_by` (0.7), `reviewed_on` (0.6), `complained_about` (0.7), `described_in` (0.5), allowing the agent to traverse corporate relationships - **Financial health scoring formula** — `healthScore = priceSignal × 0.3 + filingActivity × 0.3 + log10(marketCap)/12 × 0.4`, producing a 0–1 score mapped to four health levels - **Composite investment risk formula** — `compositeRisk = financialRisk × 0.3 + reputationRisk × 0.25 + governanceRisk × 0.25 + marketRisk × 0.2`, five risk levels from low to critical - **Reputation risk triangulation** — combines Trustpilot review score inversion (1 − avgRating), CFPB complaint volume (capped at 1.0 with 0.2/complaint), and a blended sentiment score - **Governance grading A–F** — evaluates 10-K presence (+0.4), 10-Q presence (+0.3), filing type diversity (+0.1/type, max 0.3), LEI registration (+0.2), and Wikipedia presence (+0.1) - **Filing anomaly detection** — calculates standard deviation of inter-filing gaps, then normalizes by mean gap to produce an anomaly score from 0 to 1 (>0.5 = anomalous) - **Corporate identity tracing** — cross-references a company name across LEI, Wikipedia, and stock symbol to build an alias list and a cross-ref confidence score (max 1.0: LEI 0.4, Wikipedia 0.3, stock 0.3) - **Findings engine** — `generate_deep_research_report` applies 4 detection rules: complaint volume thresholds, filing gaps, missing LEI records, and low-rated review clusters, with severity-sorted output - **Per-source selectability** — each tool accepts a `sources` array so you can run lightweight queries (e.g., `["filings"]` only) to control cost and latency - **Up to 500 items per source** — the actor client fetches up to 500 dataset items per upstream actor call, with source-specific slice limits (40 research, 60 filings, 40 stocks, 30 LEI, 40 reviews, 40 complaints, 20 wiki) - **180-second upstream timeout** — each sub-actor call runs with a 180-second wait; errors are caught gracefully and return empty arrays rather than failing the tool call ## Use cases for corporate deep research ### Investment due diligence Portfolio managers and buy-side analysts use `generate_deep_research_report` as a first-pass screen before commissioning full analyst reports. The tool returns severity-ranked findings — consumer complaint spikes, filing gaps, LEI non-compliance — in under 3 minutes. Teams screening 20 companies per week save an estimated 40+ analyst-hours monthly. ### M&A target assessment Corporate development teams running acquisition pipelines use `assess_financial_health` and `detect_reputation_risk` in tandem to eliminate poor targets early. `analyze_filing_patterns` surfaces anomalous disclosure behavior that often precedes material events — a pattern a human analyst might miss when reviewing filings individually. ### Vendor and counterparty screening Procurement and compliance teams use `score_corporate_governance` and `trace_corporate_identity` for vendor onboarding. A governance grade below C, or a cross-ref score below 0.7, flags a counterparty for enhanced manual review. Integration with CRM systems via webhook keeps records current. ### Portfolio risk monitoring Asset managers configure recurring `assess_investment_risk` checks on portfolio companies using Apify Schedules. The composite risk score (0–1) is a consistent metric for tracking risk level changes over time, and the structured JSON output feeds directly into portfolio dashboards or risk reporting systems. ### ESG and governance analysis ESG analysts use governance grades and CFPB complaint trend data as input to ESG scoring frameworks. Disclosure completeness — measured by regular filing cadence and LEI registration — is a recognized governance indicator. The server provides quantitative signals that supplement qualitative ESG assessments. ### AI agent-driven research workflows AI coding assistants and research agents (Claude, GPT-4, Cursor, Windsurf) use this server as a corporate intelligence backend. The agent calls `map_corporate_intelligence` to get an entity graph, then chains `assess_investment_risk` for scoring, then calls `generate_deep_research_report` for the final output — a multi-step reasoning workflow that would require dozens of manual API calls without this server. ## How to connect the Corporate Deep Research MCP server ### Claude Desktop Add this to your Claude Desktop `claude_desktop_config.json`: ```json { "mcpServers": { "corporate-deep-research": { "url": "https://corporate-deep-research-mcp.apify.actor/mcp", "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" } } } } ``` ### Cursor / Windsurf / Cline Add the MCP server URL to your editor's MCP configuration panel. Use the Streamable HTTP endpoint: ``` https://corporate-deep-research-mcp.apify.actor/mcp ``` Pass your Apify API token as a Bearer token in the Authorization header. ### SSE transport (legacy clients) For clients that use Server-Sent Events: ``` https://corporate-deep-research-mcp.apify.actor/sse ``` ### Health check ```bash curl https://corporate-deep-research-mcp.apify.actor/health # Returns: {"ok":true} ``` ## Tool parameters Every tool in this server accepts the same two parameters: | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `query` | string | Yes | — | Company name, ticker symbol, or corporate entity to research (e.g., "Tesla", "TSLA", "Berkshire Hathaway") | | `sources` | array of enum | No | Tool-specific | Which data sources to query. Options: `research`, `filings`, `stock`, `lei`, `reviews`, `complaints`, `wikipedia` | ### Source defaults by tool | Tool | Default sources | Minimum recommended | |------|----------------|---------------------| | `map_corporate_intelligence` | research, filings, stock, lei | 2 sources | | `assess_financial_health` | research, filings, stock, lei | stock or filings | | `detect_reputation_risk` | research, reviews, complaints | reviews or complaints | | `analyze_filing_patterns` | filings, research | filings | | `score_corporate_governance` | filings, lei, wikipedia | filings | | `trace_corporate_identity` | research, lei, stock, wikipedia | lei or wikipedia | | `assess_investment_risk` | research, filings, stock, lei, reviews, complaints | 3+ sources | | `generate_deep_research_report` | all 7 sources | 4+ sources | ### Call examples **Quick financial health check (2 sources, lowest cost):** ```json { "query": "Palantir Technologies", "sources": ["stock", "filings"] } ``` **Full investment risk assessment (6 sources):** ```json { "query": "SolarWinds Corporation", "sources": ["research", "filings", "stock", "lei", "reviews", "complaints"] } ``` **Reputation-only scan for a financial institution:** ```json { "query": "Wells Fargo", "sources": ["reviews", "complaints"] } ``` ## ⬆️ Output examples ### `assess_financial_health` output ```json { "assessments": [ { "company": "Meridian Capital Group", "priceSignal": 0.3124, "filingActivity": 0.45, "marketCap": 0.7213, "healthScore": 0.5521, "healthLevel": "stable" }, { "company": "Apex Industrial Holdings", "priceSignal": 0.1840, "filingActivity": 0.15, "marketCap": 0.2941, "healthScore": 0.2167, "healthLevel": "distressed" } ], "avgHealth": 0.3844, "distressedCount": 1 } ``` ### `assess_investment_risk` output ```json { "risks": [ { "company": "NovaBridge Financial", "financialRisk": 0.4, "reputationRisk": 0.625, "governanceRisk": 0.28, "marketRisk": 0.3, "compositeRisk": 0.4213, "riskLevel": "medium" } ], "avgComposite": 0.4213, "criticalCount": 0 } ``` ### `generate_deep_research_report` output ```json { "findings": [ { "category": "Consumer Complaints", "finding": "23 consumer complaint(s) found across researched entities", "severity": "critical", "evidence": "NovaBridge: Mortgage, NovaBridge: Credit card, NovaBridge: Debt collection", "recommendation": "Review complaint categories and implement customer experience improvements" }, { "category": "Reputation Concerns", "finding": "7 low-rated review(s) indicating reputation risk", "severity": "high", "evidence": "NovaBridge Financial, NovaBri", "recommendation": "Deep-dive into review themes and implement reputation management" }, { "category": "Identity Verification", "finding": "3 company(ies) without LEI identification", "severity": "medium", "evidence": "NovaBridge, Apex Holdings, Meridian", "recommendation": "Cross-reference with GLEIF database for legal entity verification" } ], "overallRisk": "critical", "companiesResearched": 4, "recommendations": [ "Implement complaint monitoring and resolution tracking", "Verify SEC filing compliance for all entities", "Review filing frequency for anomalous patterns" ] } ``` ### `score_corporate_governance` output ```json { "scores": [ { "company": "Meridian Capital Group", "disclosureScore": 0.74, "filingCompliance": 0.8, "transparencyIndex": 0.77, "governanceGrade": "B" }, { "company": "NovaBridge Financial", "disclosureScore": 0.3, "filingCompliance": 0.0, "transparencyIndex": 0.15, "governanceGrade": "F" } ], "avgTransparency": 0.46, "topGradeCount": 1 } ``` ## Output fields ### Financial health (`assess_financial_health`) | Field | Type | Description | |-------|------|-------------| | `assessments[].company` | string | Company name (max 50 chars) | | `assessments[].priceSignal` | number | Stock price normalized to 0–1 (price / 500, capped at 1) | | `assessments[].filingActivity` | number | Filing activity score: filingCount × 0.15, capped at 1 | | `assessments[].marketCap` | number | Market cap signal: log10(marketCap) / 12, capped at 1 | | `assessments[].healthScore` | number | Weighted composite: price × 0.3 + filings × 0.3 + mcap × 0.4 | | `assessments[].healthLevel` | string | `strong` (≥0.7) / `stable` (≥0.5) / `caution` (≥0.3) / `distressed` (<0.3) | | `avgHealth` | number | Mean health score across all assessed companies | | `distressedCount` | number | Count of companies with `healthLevel === "distressed"` | ### Reputation risk (`detect_reputation_risk`) | Field | Type | Description | |-------|------|-------------| | `risks[].company` | string | Company name | | `risks[].reviewScore` | number | Review risk: 1 − avgRating (higher = worse reviews) | | `risks[].complaintScore` | number | Complaint risk: complaintCount × 0.2, capped at 1 | | `risks[].sentimentScore` | number | Blended: (reviewScore + complaintScore) / 2 | | `risks[].reputationRisk` | number | Composite: reviewScore × 0.4 + complaintScore × 0.4 + sentiment × 0.2 | | `risks[].riskLevel` | string | `critical` (≥0.75) / `high` (≥0.5) / `medium` (≥0.25) / `low` (<0.25) | | `avgRisk` | number | Mean reputation risk across all companies | | `highRiskCount` | number | Count of companies at `high` or `critical` risk level | ### Filing patterns (`analyze_filing_patterns`) | Field | Type | Description | |-------|------|-------------| | `patterns[].company` | string | Company name | | `patterns[].filingCount` | number | Total number of filings found | | `patterns[].filingTypes` | string[] | Distinct form types found (e.g., `["10-K", "10-Q", "8-K"]`) | | `patterns[].frequency` | number | Estimated filings per year (365 days / mean inter-filing gap) | | `patterns[].anomalyScore` | number | stdDev(gaps) / mean(gaps), capped at 1 — higher = more irregular | | `totalFilings` | number | Total filing nodes in the network | | `avgFrequency` | number | Mean annual filing frequency across companies | | `anomalousCount` | number | Companies with `anomalyScore > 0.5` | ### Governance score (`score_corporate_governance`) | Field | Type | Description | |-------|------|-------------| | `scores[].company` | string | Company name | | `scores[].disclosureScore` | number | filingCount × 0.12 + LEI bonus 0.2 + Wikipedia bonus 0.1, capped at 1 | | `scores[].filingCompliance` | number | 10-K presence (0.4) + 10-Q presence (0.3) + type diversity (0.1/type, max 0.3) | | `scores[].transparencyIndex` | number | disclosureScore × 0.5 + filingCompliance × 0.5 | | `scores[].governanceGrade` | string | A (≥0.8) / B (≥0.6) / C (≥0.4) / D (≥0.2) / F (<0.2) | | `avgTransparency` | number | Mean transparency index | | `topGradeCount` | number | Companies with grade A or B | ### Identity trace (`trace_corporate_identity`) | Field | Type | Description | |-------|------|-------------| | `traces[].entity` | string | Primary company name | | `traces[].leiMatch` | boolean | Whether a matching LEI entity was found | | `traces[].wikiMatch` | boolean | Whether a matching Wikipedia article was found | | `traces[].crossRefScore` | number | LEI (0.4) + Wikipedia (0.3) + stock ticker (0.3) presence score | | `traces[].aliases` | string[] | Name variants found across sources (max 5) | | `totalTraced` | number | Total companies traced | | `confirmedCount` | number | Companies with `crossRefScore ≥ 0.7` | | `avgCrossRef` | number | Mean cross-reference confidence score | ### Investment risk (`assess_investment_risk`) | Field | Type | Description | |-------|------|-------------| | `risks[].company` | string | Company name | | `risks[].financialRisk` | number | 1 − (filingCount × 0.1), capped at [0,1] | | `risks[].reputationRisk` | number | complaints × 0.15 + (1 − avgRating) × 0.5, capped at 1 | | `risks[].governanceRisk` | number | 1 − (LEI 0.4 + Wikipedia 0.2 + filings × 0.08), capped at [0,1] | | `risks[].marketRisk` | number | 0.3 if stock data found, 0.7 if no stock data | | `risks[].compositeRisk` | number | financial × 0.3 + reputation × 0.25 + governance × 0.25 + market × 0.2 | | `risks[].riskLevel` | string | `critical` (≥0.75) / `high` (≥0.5) / `medium` (≥0.25) / `low` (<0.25) | | `avgComposite` | number | Mean composite risk | | `criticalCount` | number | Companies at critical risk level | ### Deep research report (`generate_deep_research_report`) | Field | Type | Description | |-------|------|-------------| | `findings[].category` | string | Finding category: Consumer Complaints, Filing Gaps, Identity Verification, Reputation Concerns | | `findings[].finding` | string | Plain-text description of what was found | | `findings[].severity` | string | `critical` / `high` / `medium` / `low` | | `findings[].evidence` | string | Sample entities/records supporting the finding | | `findings[].recommendation` | string | Actionable next step | | `overallRisk` | string | Derived from most severe finding: `critical` / `high` / `medium` / `low` | | `companiesResearched` | number | Count of company nodes in the network | | `recommendations` | string[] | Deduplicated action items from all findings | ## How much does corporate deep research cost? Each tool call costs **$0.04** regardless of which tool you use or how many sources you include. There are no subscription fees or minimum commitments. The **Apify Free plan** includes $5 of monthly credits — enough for **125 tool calls** with no payment required. | Scenario | Tool calls | Cost per call | Total cost | |----------|-----------|---------------|------------| | Single company quick scan | 1 | $0.04 | $0.04 | | Full 8-tool analysis on one company | 8 | $0.04 | $0.32 | | Daily monitoring: 10 portfolio companies | 10 | $0.04 | $0.40/day | | Weekly M&A pipeline screen: 50 companies | 50 | $0.04 | $2.00 | | Monthly enterprise due diligence: 500 calls | 500 | $0.04 | $20.00 | You can set a **maximum spending limit** per Apify run. When the limit is reached, the server returns a structured `{"error": true, "message": "Spending limit reached for ..."}` response so your agent can handle it gracefully without unexpected charges. Bloomberg Terminal costs $24,000/year for a single seat. PitchBook Professional starts at $10,000/year. With this server, a team running 500 corporate intelligence calls per month pays $20 — with no subscription commitment and no minimum seat requirements. ## How to use Corporate Deep Research MCP via the API ### Python ```python from apify_client import ApifyClient import json client = ApifyClient("YOUR_APIFY_TOKEN") # Start the MCP server as an Apify actor run run = client.actor("ryanclinton/corporate-deep-research-mcp").call(run_input={ "port": 3050 }) print(f"MCP server running. Connect to: https://corporate-deep-research-mcp.apify.actor/mcp") print(f"Run ID: {run['id']}") ``` ### Direct HTTP tool call (Python) ```python import requests response = requests.post( "https://corporate-deep-research-mcp.apify.actor/mcp", headers={ "Content-Type": "application/json", "Authorization": "Bearer YOUR_APIFY_TOKEN" }, json={ "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "assess_investment_risk", "arguments": { "query": "Enron Corporation", "sources": ["research", "filings", "stock", "lei", "reviews", "complaints"] } }, "id": 1 } ) result = response.json() risk_data = json.loads(result["result"]["content"][0]["text"]) print(f"Composite risk: {risk_data['risks'][0]['compositeRisk']}") print(f"Risk level: {risk_data['risks'][0]['riskLevel']}") ``` ### JavaScript ```javascript const response = await fetch("https://corporate-deep-research-mcp.apify.actor/mcp", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer YOUR_APIFY_TOKEN" }, body: JSON.stringify({ jsonrpc: "2.0", method: "tools/call", params: { name: "generate_deep_research_report", arguments: { query: "Silicon Valley Bank", sources: ["research", "filings", "stock", "lei", "reviews", "complaints", "wikipedia"] } }, id: 1 }) }); const data = await response.json(); const report = JSON.parse(data.result.content[0].text); console.log(`Overall risk: ${report.overallRisk}`); console.log(`Companies researched: ${report.companiesResearched}`); for (const finding of report.findings) { console.log(`[${finding.severity.toUpperCase()}] ${finding.category}: ${finding.finding}`); } ``` ### cURL ```bash # Call the generate_deep_research_report tool curl -X POST "https://corporate-deep-research-mcp.apify.actor/mcp" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_APIFY_TOKEN" \ -d '{ "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "generate_deep_research_report", "arguments": { "query": "Theranos", "sources": ["research", "filings", "lei", "reviews", "complaints", "wikipedia"] } }, "id": 1 }' # List all available tools curl -X POST "https://corporate-deep-research-mcp.apify.actor/mcp" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_APIFY_TOKEN" \ -d '{"jsonrpc":"2.0","method":"tools/list","params":{},"id":2}' ``` ## How Corporate Deep Research MCP works ### Phase 1: Source resolution and graph construction When a tool is called, the server first checks a 5-minute in-memory TTL cache keyed by source and query string (e.g., `res:Tesla`, `fil:Tesla`). Cache hits return instantly with no API cost. For cache misses, the server fans out to all requested sources in parallel via `Promise.all`, calling each upstream Apify actor with a 180-second timeout and fetching up to 500 dataset items. The 7 source actors are: `ryanclinton/company-deep-research`, `ryanclinton/edgar-filing-search`, `ryanclinton/finnhub-stock-data`, `ryanclinton/gleif-lei-lookup`, `ryanclinton/trustpilot-review-analyzer`, `ryanclinton/cfpb-consumer-complaints`, and `ryanclinton/wikipedia-article-search`. ### Phase 2: Corporate network assembly The raw data from all sources is passed to `buildCorpNetwork()`, which constructs a typed graph of `CorpNode` and `CorpEdge` objects. Nodes are created for: companies (from research, up to 40), filings (up to 60), stocks (up to 40), LEI entities (up to 30), reviews (up to 40), complaints (up to 40), and Wikipedia articles (up to 20). Deduplication uses a `Set` keyed on node IDs to prevent duplicate company nodes from multiple sources. Edges are created based on name-matching heuristics: the first 8-10 characters of a company name are matched against node names from other source types to determine relationships. Edge weights reflect confidence: `trades_as` (0.9, highest), `filed_by` (0.8), `complained_about` and `identified_by` (0.7), `reviewed_on` (0.6), `described_in` (0.5). ### Phase 3: Scoring and analysis Each tool's scoring function operates on the assembled `CorpNetwork`. The functions traverse edges to collect linked nodes per company, then apply their respective formulas: - `assessFinancialHealth()` — pulls stock node score, counts filing edges, reads `marketCap` from stock metadata - `detectReputationRisk()` — averages review node scores (normalized 0–1), counts complaint nodes - `analyzeFilingPatterns()` — computes inter-filing date gaps in milliseconds, derives stdDev/mean ratio as anomaly score - `scoreCorporateGovernance()` — checks for 10-K and 10-Q form type strings, presence of LEI and article nodes - `assessInvestmentRisk()` — combines all four risk dimensions with fixed weights - `generateDeepResearchReport()` — applies threshold rules to network counts (>5 complaints = critical finding, >3 low-rated reviews = high finding) ### Phase 4: Transport and billing The server supports both SSE (`/sse` + `/messages`) and Streamable HTTP (`/mcp`) transports. Each tool call triggers `Actor.charge()` before returning results. If the spending limit is reached, the server returns a structured error JSON rather than throwing, preserving agent workflow stability. The server runs in Apify Standby mode, staying alive to handle multiple tool calls without cold-start overhead. ## Tips for best results 1. **Use `generate_deep_research_report` as your entry point.** It queries all 7 sources and returns severity-sorted findings. Use individual tools only when you need to drill into a specific dimension. 2. **Narrow sources to control cost and latency.** A `["filings"]`-only call to `analyze_filing_patterns` takes ~30 seconds and costs $0.04. A 7-source `generate_deep_research_report` takes 2-3 minutes. Match source selection to your urgency. 3. **Use ticker symbols for public companies.** Querying `"AAPL"` rather than `"Apple Inc"` improves match quality in EDGAR and Finnhub since these sources index by ticker. For private companies, use the full legal name. 4. **Chain tools for multi-step agent workflows.** Call `map_corporate_intelligence` first to understand what data is available, then target specific tools. The graph structure in the output tells you which data sources returned useful results. 5. **Combine with counterparty screening.** For third-party risk, pair this server with [Counterparty Due Diligence MCP](https://apify.com/ryanclinton/counterparty-due-diligence-mcp) to add sanctions, adverse media, and PEP checks alongside the financial intelligence from this server. 6. **Set Apify spending limits on runs used for large batch screening.** If your agent iterates over a long list of companies, configure a per-run spending cap in Apify Console to prevent unbounded costs. 7. **Schedule weekly portfolio monitoring.** Use Apify Schedules with a webhook to POST results to a Slack channel or dashboard. The structured JSON output from `assess_investment_risk` is well-suited for automated alerting on risk level changes. ## Combine with other Apify actors and MCP servers | Actor / MCP Server | How to combine | |--------------------|---------------| | [Counterparty Due Diligence MCP](https://apify.com/ryanclinton/counterparty-due-diligence-mcp) | Add KYB sanctions screening, adverse media, and PEP checks to financial intelligence for full third-party risk coverage | | [Corporate Political Exposure MCP](https://apify.com/ryanclinton/corporate-political-exposure-mcp) | Layer political risk and lobbying exposure data on top of governance scores from this server | | [Brand Narrative Intelligence MCP](https://apify.com/ryanclinton/brand-narrative-intelligence-mcp) | Extend reputation risk detection with media narrative analysis and brand sentiment trends | | [Competitive Digital Intelligence MCP](https://apify.com/ryanclinton/competitive-digital-intelligence-mcp) | Combine corporate financial health data with competitive digital posture for a complete competitor profile | | [Trustpilot Review Analyzer](https://apify.com/ryanclinton/trustpilot-review-analyzer) | Run deeper review analysis — sentiment by topic, review velocity trends — beyond what the MCP aggregates | | [CFPB Consumer Complaints](https://apify.com/ryanclinton/cfpb-consumer-complaints) | Pull full complaint records with narrative text for detailed complaint analysis beyond count-based signals | | [EDGAR Filing Search](https://apify.com/ryanclinton/edgar-filing-search) | Access full filing text, exhibits, and XBRL data beyond what the MCP's 60-filing limit exposes | ## Limitations - **Private companies have limited financial data.** EDGAR filings and Finnhub stock data are US public-company-centric. Private companies may return empty stock and filing nodes, which degrades financial health and investment risk scores significantly. The governance grade will understate quality for well-run private companies with no SEC filing obligations. - **Source data quality depends on upstream actors.** The scoring is only as good as the data returned by the 7 upstream actors. If GLEIF LEI returns no results for a query, the governance score will penalize the company for missing LEI even if the entity is legitimately registered under a different name variant. - **Name-matching is approximate.** The graph construction uses first-8-to-10-character substring matching to link nodes across sources. Common company name prefixes can produce false edge connections. Use specific, unique company names or ticker symbols to minimize false links. - **180-second upstream timeout.** If an upstream actor takes longer than 3 minutes to respond, that source returns an empty array. A slow CFPB response will produce a reputation risk score of 0 (artificially low) rather than an error. - **5-minute cache is shared within a single server instance.** The in-memory TTL cache does not persist across Standby restarts. After a restart, the first query for each company pays full source-fetching cost. - **Up to 500 items per source.** For very large companies with hundreds of SEC filings or thousands of complaints (e.g., major banks), the 500-item cap means the network only reflects a recent slice of filings and complaints. - **CFPB data is US financial institutions only.** Non-financial companies and non-US companies will return no CFPB complaint data, making the complaint score component of reputation risk zero for those entities. - **No XBRL or financial statement parsing.** The financial health score uses market cap and filing count as proxies. It does not parse balance sheets, income statements, or cash flow data. For deep financial modeling, use the direct EDGAR actor. ## Integrations - [Claude Desktop](https://claude.ai/download) — connect via `claude_desktop_config.json` for conversational corporate due diligence with Claude - [Cursor / Windsurf](https://cursor.sh) — embed corporate intelligence in your IDE workflow for AI-assisted analysis - [Apify API](https://docs.apify.com/api/v2) — trigger tool calls programmatically from any HTTP client, CI/CD pipeline, or internal application - [Webhooks](https://docs.apify.com/platform/integrations/webhooks) — push risk score changes to Slack, Teams, or internal alerting systems when scheduled runs complete - [Zapier](https://apify.com/integrations/zapier) — trigger corporate research on new CRM entries and push findings to HubSpot, Salesforce, or Google Sheets - [Make (Integromat)](https://apify.com/integrations/make) — automate vendor screening workflows: new vendor added → research triggered → governance score sent to procurement team - [LangChain / LlamaIndex](https://docs.apify.com/platform/integrations) — use this server as a corporate intelligence tool in RAG pipelines and multi-agent research workflows ## Troubleshooting **Tool returns empty `assessments` or `risks` arrays.** The corporate graph had no company nodes. This happens when the query string doesn't match any entity names in the source data. Try a more specific query — use the full legal name or ticker symbol. Check if the company is private (SEC filing data may be absent). **`generate_deep_research_report` returns `overallRisk: "low"` with no findings.** The findings engine applies minimum thresholds: complaints need >5 records, low-rated reviews need >3 records, missing LEI needs >2 entities. For small companies with sparse data, all thresholds may go unmet even if risk exists. Use `assess_investment_risk` directly for a score-based view. **Financial health score seems too low for a well-known company.** The health scoring uses stock price / 500 as the price signal, meaning stocks above $500 score 1.0 and below $50 score 0.1. This is a relative signal, not an absolute valuation. Combine with `score_corporate_governance` and `trace_corporate_identity` for a fuller picture. **Tool call times out in Claude Desktop.** Each tool call can take up to 3 minutes when fetching 7 sources. If Claude Desktop has a shorter timeout, reduce the `sources` array to 2-3 sources for faster responses, or use a tool with fewer default sources like `analyze_filing_patterns`. **Spending limit reached error.** The Apify run hit its configured spending cap. Increase the limit in Apify Console under the actor run settings, or set up a recurring run with a higher monthly budget allocation. ## Responsible use - This server only accesses publicly available corporate data from official registries (SEC EDGAR, GLEIF), licensed market data (Finnhub), and publicly accessible platforms (Trustpilot, Wikipedia). - CFPB complaint data is a public government dataset published under US FOIA principles. - Do not use outputs to make unsupported claims about company creditworthiness, solvency, or legal compliance without engaging qualified financial and legal professionals. - Investment decisions based on this data should involve licensed financial advisors. This server provides intelligence inputs, not investment advice. - Comply with applicable data regulations when using outputs in commercial due diligence processes. - For guidance on web scraping and data legality, see [Apify's legal guide](https://blog.apify.com/is-web-scraping-legal/). ## ❓ FAQ **How many companies can the Corporate Deep Research MCP research in one tool call?** Each tool call takes a single `query` string and researches that company across all selected sources. The corporate network may include related entities found in filings and research data — typically 5-30 company nodes — all scored in a single $0.04 call. To research 10 unrelated companies, make 10 separate calls. **How current is the corporate intelligence data?** Finnhub stock data is fetched live at query time. EDGAR reflects the latest published filings (typically within 24 hours of SEC publication). GLEIF LEI data reflects the current registry state. Trustpilot and CFPB data reflect the current platform state. Company Deep Research pulls live web data. The 5-minute TTL cache means repeated queries within 5 minutes return cached results. **Does corporate deep research work for private companies?** Partially. Company Deep Research, Trustpilot reviews, CFPB complaints, Wikipedia, and GLEIF LEI all cover private companies. SEC filing data and Finnhub stock data are limited to publicly listed entities. Financial health and investment risk scores will be less reliable for private companies due to missing financial signals. **How accurate is the governance grade for a company?** The governance grade is based on observable signals: presence of 10-K filings, 10-Q filings, LEI registration, and Wikipedia coverage. It measures disclosure compliance and registry presence, not actual governance quality. A company can score grade A while having genuine governance issues not visible in public data, and a private company may score F simply due to no SEC filing obligation. **Can I research non-US companies with Corporate Deep Research MCP?** Yes. Finnhub covers global equities. GLEIF LEI is a global standard covering entities in 200+ jurisdictions. Wikipedia has international coverage. Company Deep Research pulls web-wide intelligence. SEC EDGAR is US-centric but covers foreign private issuers. CFPB complaints are US financial institutions only. **How is this different from Bloomberg Terminal or PitchBook?** Bloomberg and PitchBook are professional data platforms with structured financial databases, analyst coverage, and proprietary data licensing. This server aggregates from public sources and open registries. It costs $0.04 per query vs. $2,000+/month for Bloomberg. It is designed for AI agent workflows and programmatic access, not for human analysts navigating a UI. Use it as an automated first-pass screen, not as a replacement for deep professional research platforms. **How does corporate deep research handle company name variations?** The graph construction uses first-8-to-10-character substring matching to link entities across sources. If a company is known by multiple names (e.g., "Meta" vs "Facebook"), query under the name most likely to appear in EDGAR filings — usually the full legal name. The `trace_corporate_identity` tool surfaces aliases found across sources. **Is it legal to use this data for investment research?** All data sources are publicly available. EDGAR, GLEIF, and CFPB are government-operated public databases. Trustpilot is publicly accessible. Using public data for investment research is standard practice. This server does not provide investment advice — outputs should be treated as intelligence inputs for qualified financial professionals. Consult [Apify's legal guide](https://blog.apify.com/is-web-scraping-legal/) for further context. **Can I schedule automated portfolio monitoring with this server?** Yes. Use Apify Schedules to trigger `assess_investment_risk` on a list of portfolio companies on a daily or weekly cadence. Combine with a webhook to send risk level changes to Slack or your portfolio management system. The structured JSON output is designed for automated processing. **What happens if one of the 7 upstream sources fails or times out?** Each source is fetched independently with a 180-second timeout. If an upstream actor fails or times out, that source returns an empty array and the network is built from the remaining sources. The tool call does not fail — it returns scores based on available data. The affected dimension (e.g., reputation risk if reviews fail) will reflect default/neutral values. **Can I use this MCP server in a LangChain or LlamaIndex agent?** Yes. Any MCP-compatible client can connect to this server. LangChain and LlamaIndex support MCP tool use. Connect to `https://corporate-deep-research-mcp.apify.actor/mcp` with your Apify token as a Bearer header. The 8 tools will be available as callable functions in your agent's tool registry. **How do I keep costs predictable for a large research workflow?** Set a per-run spending limit in Apify Console. The server returns `{"error": true, "message": "Spending limit reached for ..."}` when the limit is hit, rather than throwing an unhandled error. Your agent can catch this and pause processing. At $0.04 per call, 100 calls = $4.00 — a predictable unit cost for budgeting. ## Help us improve If you encounter issues, you can help us debug faster by enabling run sharing in your Apify account: 1. Go to [Account Settings > Privacy](https://console.apify.com/account/privacy) 2. Enable **Share runs with public Actor creators** This lets us see your run details when something goes wrong, so we can fix issues faster. Your data is only visible to the actor developer, not publicly. ## Support Found a bug or have a feature request? Open an issue in the [Issues tab](https://console.apify.com/actors/corporate-deep-research-mcp/issues) on this actor's page. For custom corporate intelligence solutions or enterprise integrations, reach out through the Apify platform.