Submit an async Pro deep dive (multi-signal attribution job)
ctscout_submit_deep_diveQueue an asynchronous deep-dive job attributing a company or seed domains via CT, DNS, RDAP, homepage, and IP/ASN signals. Returns a job receipt; poll the returned job ID for results.
Instructions
Queue an asynchronous Pro deep dive on ctscout.dev: the full multi-signal attribution run (CT warehouse + DNS, RDAP, homepage, IP/ASN corroboration) executed by a batch worker, via POST /jobs. Returns a job receipt immediately, NOT results.
Asynchronous, Pro only:
The call returns as soon as the job is queued ({job_id, status: "queued", submitted_at}). Nothing is attributed yet.
Poll with ctscout_get_job using the returned job_id. Wait about 30 s before the first poll, then back off toward 5 min between polls; the batch worker picks up queued jobs every few minutes and a deep dive can take several minutes to run.
Requires a Pro API key. A free key gets HTTP 403 with the API's upgrade text (Pro is $49/month from https://ctscout.dev/#tiers). Quota: 20 submissions per key per day (HTTP 429 over). Submitting is not idempotent — a retry queues a second job.
Args:
company_name (string, optional): organization name, matched exactly as in ctscout_search_company (partial, case-insensitive; 2–200 chars).
seed_domain (string[], optional): known apex domains to pivot from, max 10. At least one of company_name / seed_domain is required; both may be given. Validated exactly like /scan.
response_format ('markdown' | 'json', default 'markdown'): a receipt with polling guidance, or the raw 202 body.
Returns (on success, structuredContent follows the declared outputSchema; a failed call — 401, 403, 429, timeout — is isError with no structuredContent): { "job_id": string, // opaque; pass to ctscout_get_job "status": "queued", "submitted_at": string, "poll": "/jobs/" // informational }
What the finished result contains (read it with ctscout_get_job):
The deep-dive result shape (a /scan never carries it): "domains" of attributed apex domains, each with "attributed_to", an "enrichment" object (confidence_band, weight_total, matched_via, evidence, signal_health, vlm_status, vlm_override) and the underlying discovery evidence under "base"; plus "entity", "run_metadata", "source" and "signals_degraded".
Plus "snapshot": the warehouse date (YYYY-MM-DD) the deep dive read from. It is present on every deep-dive result because the batch worker sets it, together with "worker_version" and "signals_attempted"; a /scan answer carries its own snapshot from the API.
"Attributed" means the organization is what the evidence names for that domain (certificate subject, corroborated by the enrichment signals), not an ownership claim. "Candidate" means a semantic name-similarity guess that is NOT an attribution; a deep dive reports attributions with a confidence band, never bare candidates.
Visual brand verification (VLM) is NOT included in v1: vlm_status stays "pending" or "skipped" and never vetoes a band.
Examples:
Use when: "Run a full attribution deep dive on CNA Financial" -> { company_name: "CNA Financial" }
Use when: "Deep-dive from these seed domains" -> { seed_domain: ["cna.com", "cnasurety.com"] }
Don't use when: you want an answer now — ctscout_search_company / ctscout_lookup_domain are synchronous. Don't resubmit while a job is queued or running; poll it.
Corrections:
Wrong attribution? Open an issue at https://github.com/minghsuy/ctscout-mcp/issues. Missing entity? Email pro@ctscout.dev. Include the job id, the spec submitted and why the result read with ctscout_get_job is wrong.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| seed_domain | No | Known apex domains of the organization to pivot from (e.g. ['gs.com']). Max 10. Give company_name, seed_domain, or both. | |
| company_name | No | Organization name to deep-dive, matched exactly as in ctscout_search_company. Give company_name, seed_domain, or both. | |
| response_format | No | Output format: 'markdown' for a submission receipt with polling guidance, 'json' for the raw 202 body ({job_id, status, submitted_at, poll}). | markdown |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| poll | No | Relative API path to poll (informational). | |
| job_id | Yes | Opaque id; pass it to ctscout_get_job. | |
| status | Yes | 'queued' on submission. | |
| submitted_at | Yes | Submission time as reported by the API. |