---
title: "Gold-standard competitive deep dive — STRUCTURED multi-source data (no LLM narrative). Pair tool: `competitor_intel` for"
method: POST
path: "/api/v1/call/competitive_deep_dive"
tags: ["expertise"]
---

# Gold-standard competitive deep dive — STRUCTURED multi-source data (no LLM narrative). Pair tool: \`competitor_intel\` for

`POST /api/v1/call/competitive_deep_dive`

## Request

- Base URL: `https://mcp.gapup.io`
- URL: `https://mcp.gapup.io/api/v1/call/competitive_deep_dive`
- Auth: HTTP bearer

Gold-standard competitive deep dive — STRUCTURED multi-source data (no LLM narrative). Pair tool: `competitor_intel` for LLM-narrated board briefing + slide script. Aggregates Wikipedia, Yahoo Finance, SEC EDGAR, Wayback Machine, DuckDuckGo, HackerNews, domain scraping — all keyless. Returns agent-shaped JSON: KPIs (funding, employees, revenue, market cap), P0/P1/P2 competitive signals, pricing radar, competitor comparison matrix, Wayback timeline, positioning (sector/industry/icp_hypothesis/moat_signals), quality score. Every field is sourced or marked unavailable — no hallucinated figures. SLA: p50 ~25s, p95 ~30s · score 80+ on listed targets (US/EU/foreign) · score ~40 on private companies (no EDGAR/Yahoo data). Use sync for batch agents (≤30s tolerance). Use `competitive_deep_dive_async` + `competitive_deep_dive_result(job_id)` for conversational agents. Inputs: company name or domain (required), optional competitor list (≤5), optional depth (easy/medium/hard).

## Request body

- object
  - `company` string, required: Name or domain of the target company (e.g. 'Salesforce', 'notion.so', 'HubSpot CRM')
  - `competitors` string[]: Optional list of competitor names or domains to include in the comparison matrix (max 5)
  - `depth` 'easy' | 'medium' | 'hard': Research depth: 'easy' = Wikipedia + DDG (fast, ~15s); 'medium' = + Yahoo Finance + EDGAR + Wayback (default, ~45s); 'hard' = + HackerNews + domain surfaces + competitor deep dive (~120s)
  - `async` boolean: If true, returns a job_id immediately (<200ms) instead of waiting for the result. Poll the result with job_result(job_id). Use for slow tools to avoid client timeouts.

## Response `200`

Tool result

- object
  - `tool` string
  - `result` object
    - `company` string, required
    - `domain_resolved` unknown, required
    - `depth_used` 'easy' | 'medium' | 'hard', required
    - `generated_at` string, required
    - `kpis` object[], required: Key Performance Indicators sourced from public data
      - `label` string, required
      - `value` string, required
      - `sub` string, required: Sub-label or context
      - `source` string, required
    - `signals` object[], required: Competitive intelligence signals, severity-ranked P0 (critical) to P2 (informational)
      - `severity` 'P0' | 'P1' | 'P2', required
      - `category` string, required
      - `summary` string, required
      - `evidence` string, required
      - `source_url` string, required
    - `pricing_radar` object[], required: Pricing tiers extracted from public sources
      - `tier` string, required
      - `price` string, required
      - `features` string[], required
      - `source_url` string, required
    - `comparison` object[], required: Feature/dimension comparison between target and each competitor
      - `dimension` string, required
      - `target_value` string, required
      - `competitors` object[], required
        - `name` string, required
        - `value` string, required
    - `wayback_timeline` object[], required: Historical snapshots of the company website from Wayback Machine
      - `date` string, required
      - `snapshot_url` string, required
      - `note` string
    - `positioning` object, required: Positioning analysis derived from public data
      - `sector` unknown
      - `industry` unknown
      - `summary` string, required
      - `icp_hypothesis` string, required: Inferred Ideal Customer Profile based on website/Wikipedia
      - `moat_signals` string[], required: Observed moat indicators (brand, distribution, data network effect, etc.)
    - `quality` object, required
      - `score` number, required
      - `status` 'partial' | 'final' | 'failed', required
      - `weak_zones` string[], required
      - `details` string[], required
    - `sources` object[], required
      - `label` string, required
      - `url` string, required
      - `status` 'retrieved' | 'unavailable' | 'partial', required
  - `request_id` string
  - `source` 'rest-api'
  - `ms` number

## Other responses

- `400`: Invalid arguments
- `401`: Unauthorized
- `402`: Payment Required — pay via x402 (USDC on Base) then retry with X-Payment header
- `404`: Tool not found
- `429`: Rate limited
- `500`: Internal error

---

[API](https://skmtc.dev/gapup/apis/gapup-mcp-rest-api.md) · [All operations](https://skmtc.dev/gapup/apis/gapup-mcp-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gapup/apis/gapup-mcp-rest-api/revisions/afb9da3b98f4?raw)
