Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

WhiteIntel — Ownership Intelligence

REMOTE · WHITEINTEL.DEV · 2 COMPONENTS · SCANNED AUG 20

UBO, sanctions & ownership graph. 23 tools, 130.7M entities, 31 registries.

65 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability86
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 2608 tokens (~96/item across 27 items; 23 tools + 4 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
  • Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage73
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 20% of tool parameters carry a description.Partial
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · whiteintel.dev

# add to Claude Code
claude mcp add --transport http dev-whiteintel-whiteintel https://whiteintel.dev/api/mcp
# ~/.codex/config.toml
[mcp_servers.dev-whiteintel-whiteintel]
url = "https://whiteintel.dev/api/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-whiteintel-whiteintel": {
      "type": "remote",
      "url": "https://whiteintel.dev/api/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dev-whiteintel-whiteintel --url https://whiteintel.dev/api/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  dev-whiteintel-whiteintel:
    url: "https://whiteintel.dev/api/mcp"
// mcp.json
{
  "mcpServers": {
    "dev-whiteintel-whiteintel": {
      "type": "http",
      "url": "https://whiteintel.dev/api/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Aug 26 0
    • Schema quality: 80 → 96 functional
    • Stability: unverified → 0.03 functional
    • New tool “list_asset_coverage” functional
    • New tool “list_jurisdictions” functional
  • 19 Aug 26 65

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Aug 2026 · Probed https://whiteintel.dev/api/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=*.whiteintel.dev CN=YR2,O=Let's Encrypt,C=US 19 Jun 2026 17 Sept 2026 RSA 2048 SHA256-RSA 5dcef4c0c3faf73148de2aee9a92092fb3a
SANs: *.whiteintel.dev, whiteintel.dev
CN=YR2,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA 4ebd24947e24d394802d84a52fd5b319
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f
DNSSEC insecure

Validation of whiteintel.dev. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
dev. present 60074 8 Verified
whiteintel.dev. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
content-security-policy default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; frame-src 'none'; worker-src 'self'; form-action 'self'; img-src 'self' data:; font-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'nonce-jvpkAmNQKcyMn8oP3Alr4w=='; connect-src 'self' https://azmnkvjnelbdjnmukxll.supabase.co https://o4510911486689280.ingest.us.sentry.io; upgrade-insecure-requests
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin
permissions-policy geolocation=(), microphone=(), camera=(), browsing-topics=()
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://whiteintel.dev/api/mcp Verified 200
http (plaintext) http://whiteintel.dev/api/mcp HTTPS enforced 308 https://whiteintel.dev/api/mcp
MCP tools · 23 exposed · ~2,405 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
buy_dossier ~143

Start a one-off dossier purchase via guest Stripe Checkout — no WhiteIntel account needed (Stripe collects an email for delivery). Pick a tier ('standard' €39: full UBO chain + financial history · 'premium' €99: additionally itemised assets) and optionally a bulk pack ('5'/'25'), plus the entity_id the report is for. Returns checkout_url + next_steps: open the URL to pay, then feed the session_id to claim_dossier. See get_pricing for the full list.

NameTypeReqDescription
entity_idstring
entity_namestring
packstring
tierstringyes

No output schema declared.

No examples provided.

check_offshore_exposure ~46

Walk the ownership chain and flag sanctioned + secrecy-jurisdiction hops — the offshore-layering lead.

NameTypeReqDescription
idstringyes
max_depthnumber

No output schema declared.

No examples provided.

claim_dossier ~98

Redeem a paid Stripe Checkout session for a dossier access token. Pass the session_id (cs_…) from the post-payment redirect after buy_dossier. Returns { token, entity_id, tier } — pass the token to get_dossier as its `token` input. Idempotent; fails with 402 not_paid until payment completes, so wait for the human to finish Checkout then call again.

NameTypeReqDescription
session_idstringyes

No output schema declared.

No examples provided.

find_similar ~99

Entities most similar to a given one — the nearest corpus dossier cards ('more like this') for peer discovery. Pass an entity id from search_entities / semantic_search. COVERAGE IS PARTIAL — only entities in the embedded risk-scored subset (~1.9% of the corpus and growing) return peers; an entity outside it returns empty for now, not an error.

NameTypeReqDescription
entity_idstringyes
knumber

No output schema declared.

No examples provided.

get_company_details ~43

Registered profile for a company: address, status, SIC, incorporation, plus filing/compliance (overdue, charges, former names).

NameTypeReqDescription
idstringyes

No output schema declared.

No examples provided.

get_dossier ~101

Structured, fully-cited dossier for one entity: cross-source identity, ownership/UBO chain, risk signals, filed financials, provenance. Pass the `token` from claim_dossier to unlock the full paid depth you purchased for this entity.

NameTypeReqDescription
idstringyes
tokenstringOptional dossier access token from claim_dossier — unlocks the full paid depth (UBO chain, assets, financial history) for this entity.

No output schema declared.

No examples provided.

get_entity ~29

Full record for one entity id + its direct relationships, with provenance.

NameTypeReqDescription
idstringyes

No output schema declared.

No examples provided.

get_financials ~42

Filed financials year-over-year: turnover, profit, net assets, cash, employees (Companies House iXBRL).

NameTypeReqDescription
idstringyes

No output schema declared.

No examples provided.

get_payment_link ~135

PERMANENT, shareable Stripe payment links for the one-off dossiers — use this instead of buy_dossier when you need something you can HAND TO A HUMAN. buy_dossier mints a cs_live_ Checkout Session that is single-use and expires in 24h, so it is useless in a report or a message the human reads tomorrow; these links never expire and can be reused. Append ?client_reference_id=<entity uuid from search_entities> to bind the purchase to one company — without it the buyer gets a dossier credit, spendable on any entity later. No API key needed, no WhiteIntel account needed.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_pricing ~91

WhiteIntel's price list + the exact machine flow for buying access: one-off dossiers (Standard €39 / Premium €99), packs, subscriptions and the metered API. Returns how_an_agent_buys — buy_dossier opens a Stripe Checkout, claim_dossier mints the token, get_dossier with that token returns the unlocked report. Static, no network — check it before recommending a purchase.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_pulse ~107

The corpus activity feed — recent ownership-change and filed-accounts events, cited. Pass since=<next_since> to stream only new events. The default (unfiltered) feed returns only events that carry a source URL. `watchlist` (OpenSanctions PEP listings) is opt-in via kind=watchlist and is currently uncited (source-url NULL for every row).

NameTypeReqDescription
kindstring
limitnumber
sincestring

No output schema declared.

No examples provided.

get_sanctions ~43

An entity's sanctions exposure (OFAC/EU/UN/UK) for it and its resolved cluster siblings, each cited.

NameTypeReqDescription
idstringyes

No output schema declared.

No examples provided.

graph_neighbourhood ~173

Every ownership/control edge within a bounded number of hops of one entity, in BOTH directions — who it controls, who controls it, and their neighbours. Hard-capped in the database: depth 3, 300 edges, and at most 25 edges followed per entity per direction per hop. When the edge budget runs out the response sets `truncated: true` and says so — the corpus contains single entities with more than 22,000 edges, so a truncated view is normal for hubs, not an error.

NameTypeReqDescription
depthnumberHops, 1–3 (default 2). Also capped by the caller's plan.
edgesnumberEdge budget, 10–300 (default 120).
rootstringyesEntity uuid from search_entities / resolve.

No output schema declared.

No examples provided.

graph_path ~168

How two entities are connected: the ordered hops of a bounded breadth-first search over ownership and control edges in both directions. ⚠️ BOUNDED, NOT EXHAUSTIVE — at most 15 edges are followed per entity, per direction, per hop, so `found: false` means NO PATH WAS FOUND WITHIN THOSE BOUNDS and is NOT evidence that the two entities are unconnected. The response always carries `exhaustive: false`; never report a negative result as a clean bill of health.

NameTypeReqDescription
fromstringyesEntity uuid.
max_depthnumberHops, 1–4 (default 3). Depth 4 is measurably slower on densely connected entities — ask for it deliberately.
tostringyesEntity uuid.

No output schema declared.

No examples provided.

list_asset_coverage ~284

The WhiteIntel ASSET-ownership coverage map — who owns the plane / yacht / property, and HOW we hold that link. The companion to list_jurisdictions for physical assets. Each row is one asset class × area with a `tier`: `deep` = we ingest a bulk source that ties the asset to an OWNER (e.g. FAA US aircraft, HM Land Registry UK property) · `indexed` = held only via leaks/sanctions (e.g. a yacht reached through an offshore SPV in the ICIJ leaks) · `on_demand` = the source is closed/paid, so the record is procured from source on a paid request · `community` = SnitchBoard crowd tips. Also `links_to_owner` — CRITICAL, because many asset registries publish only the registration mark and NOT the owner: an offshore aircraft register (Isle of Man, Bermuda) names the SPV/owner-trust, not the human behind it, so `deep` there is still the SPV layer, and piercing to the beneficial owner is an `on_demand` bizjet-ownership buy. Read this before claiming we do or do not hold ownership for an aircraft/vessel/real-estate entity. No vendor or price is exposed. Returns { assets, count, classes, tiers, note }.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_jurisdictions ~319

The WhiteIntel coverage map — every jurisdiction we hold and HOW we hold it. Read this before telling anyone a country is or is not covered, because 'covered' means three different things. Each row carries `tier`: `deep` = we loaded the country's WHOLE national registry, so a name/number search resolves ANY company registered there; `indexed` = we hold only the leak / sanctions / GLEIF subset, so the entities that surfaced in a leak or on a sanctions list are searchable but the rest of that country's companies are NOT in the corpus; `on_demand` = the registry is closed or paid, so the specific record is procured from source when a dossier is purchased. Also `scope` (full = whole registry · subset = fragment), `depth` (`ownership` = owners/beneficial owners on the record · `officers` = directors · `identity` = name/number/address/status, owners procured on request) and `registry` (our loader, for deep tiers). So a `deep`+`full`+`ownership` row (e.g. gb, lv, ua, br) means you can trace owners for any company there; a `subset` row (e.g. cn, kr, most secrecy havens) means an empty search is 'not in the held subset', NOT 'does not exist' — the full record is bought on request. No per-record price or vendor is exposed. Returns { jurisdictions, count, tiers, note }.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

lookup_by_identifier ~78

Resolve a corpus entity by a strong identifier — lei | ofac | eu | un | uk | uen | sec | krs | gb-coh | siren | br-cnpj (Brazil RFB CNPJ, 8-digit root or full 14-digit).

NameTypeReqDescription
schemestringyes
valuestringyes

No output schema declared.

No examples provided.

lookup_company ~29

UK company by Companies House number → record + ready-built ownership graph.

NameTypeReqDescription
numberstringyes

No output schema declared.

No examples provided.

resolve ~92

Batch-resolve a list of company names or scheme:value identifiers (lei/siren/br-cnpj/gb-coh/uen/sec/ofac/eu/un/uk/krs) to canonical WhiteIntel entity ids + confidence in ONE call. Enrich a whole supplier/counterparty list without one lookup per row. Up to 25 anon / 100 keyed.

NameTypeReqDescription
queriesarrayyesNames or scheme:value identifiers.

No output schema declared.

No examples provided.

search_companies ~35

Free-text UK Companies House company-name search → registration number.

NameTypeReqDescription
limitnumber
qstringyes

No output schema declared.

No examples provided.

search_entities ~70

Search every node in the corpus — companies AND people — by name. Returns entity ids for get_dossier / trace_ownership_path.

NameTypeReqDescription
jurisstring
limitnumber
qstringyes
riskstring
typestring

No output schema declared.

No examples provided.

semantic_search ~141

Meaning-based entity search (BGE-M3 vector ANN over the resolved dossier cards). Finds companies/people whose profile is semantically closest to a natural-language query even without a keyword match. Optional kind + jurisdiction filters. COVERAGE IS PARTIAL — the risk-scored subset of the corpus is embedded so far (~1.9% and growing with the backfill); a thin or empty result is NOT proof the entity is unknown, so pair with search_entities (lexical/name) before concluding an entity does not exist.

NameTypeReqDescription
jurisdictionstring
knumber
kindstring
querystringyes

No output schema declared.

No examples provided.

trace_ownership_path ~39

Walk ownership upward from a root entity to the ultimate beneficial owner(s).

NameTypeReqDescription
max_depthnumber
rootstringyes

No output schema declared.

No examples provided.