protogrid

Search / dev.whiteintel/whiteintel

WhiteIntel — Ownership Intelligence

not classified

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

v0.7.10 · active · repository · website · descriptor JSON · versions

Not classified yet.The remote endpoints have not been probed successfully, or the listing has nothing to connect to.
Quality81good
Trust63of 100
Uptime, 30 days48%
Latency p50520 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "whiteintel": {
      "type": "http",
      "url": "https://whiteintel.dev/api/mcp"
    }
  }
}
claude mcp add --transport http whiteintel https://whiteintel.dev/api/mcp
[mcp_servers.whiteintel]
url = "https://whiteintel.dev/api/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "whiteintel": {
      "type": "remote",
      "url": "https://whiteintel.dev/api/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "whiteintel": {
      "type": "http",
      "url": "https://whiteintel.dev/api/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=whiteintel&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vd2hpdGVpbnRlbC5kZXYvYXBpL21jcCJ9"
}
{
  "servers": {
    "whiteintel": {
      "type": "http",
      "url": "https://whiteintel.dev/api/mcp"
    }
  }
}
{
  "mcpServers": {
    "whiteintel": {
      "httpUrl": "https://whiteintel.dev/api/mcp"
    }
  }
}
extensions:
  "whiteintel":
    enabled: true
    name: "whiteintel"
    type: streamable_http
    uri: "https://whiteintel.dev/api/mcp"
    timeout: 300

Quality 81 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene93 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length2 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations24 of 24 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 3,792 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pulltool history not recorded yet
dependencies67 · weight 15
  • pass
    deps.known_vulnsno known advisory in 98 resolved packages
  • fail
    deps.mcp_sdk_version@modelcontextprotocol/sdk 1.29.0 has 1 known advisory (GHSA-6qxp-vccf-f47h); update @modelcontextprotocol/sdk to 1.31.0 or later
  • pass
    deps.resolvable@whiteintel/[email protected] resolved: 98 packages

24 tools, about 3,792 tokens to load them all · checked 2026-10-19 13:37 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 63 / 100

provenance85
liveness0
freshness85
hygiene100

+repository +dns-namespace +website -unreachable(12 failures) ~updated-61d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

@whiteintel/[email protected] npm97 dependencies, resolved · MCP SDK @modelcontextprotocol/sdk 1.29.0 · advisories checked 2026-10-19

advisoryseveritypackagefixed in
GHSA-6qxp-vccf-f47hMCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP serverhigh@modelcontextprotocol/[email protected]MCP SDK, directfixed in 1.31.0

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://whiteintel.dev/api/mcp streamable-httpnoneno (12 failures)48%520 ms2025-11-252026-09-23
packageregistryversionruntimesecrets
@whiteintel/mcp-servernpm0.7.10npxWHITEINTEL_API_KEY

Tools (24)

buy_dossierStart 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.
check_offshore_exposureread-onlyWalk the ownership chain and flag sanctioned + secrecy-jurisdiction hops — the offshore-layering lead.
claim_dossierRedeem 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.
find_similarread-onlyEntities 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.
get_company_detailsread-onlyRegistered profile for a company: address, status, SIC, incorporation, plus filing/compliance (overdue, charges, former names).
get_dossierread-onlyStructured, 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.
get_entityread-onlyFull record for one entity id + its direct relationships, with provenance.
get_financialsread-onlyFiled financials year-over-year: turnover, profit, net assets, cash, employees (Companies House iXBRL).
get_payment_linkread-onlyPERMANENT, 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.
get_pricingread-onlyWhiteIntel's price list + the exact machine flow for buying access: one verified dossier (€29, one price, everything), subscriptions (Pro €99/mo, Scale €499/mo) 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.
get_pulseread-onlyThe 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).
get_sanctionsread-onlyAn entity's sanctions exposure (OFAC/EU/UN/UK) for it and its resolved cluster siblings, each cited.
graph_neighbourhoodread-onlyEvery 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.
graph_pathread-onlyHow 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.
list_asset_coverageread-onlyThe 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 }.
list_jurisdictionsread-onlyThe 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 }.
lookup_by_identifierread-onlyResolve 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).
lookup_companyread-onlyUK company by Companies House number → record + ready-built ownership graph.
purchase_dossierBUY the full dossier for one entity programmatically — no browser, no Stripe Checkout. Debits your prepaid wallet €2 and returns the complete premium dossier (full UBO chain, filed financials, itemised assets, provenance) in the SAME response. Requires a funded API key (Authorization: Bearer wi_…). Idempotent per (buyer, entity): buying the same entity again returns it with NO second charge, so a retry is safe. If the wallet balance is too low the call returns HTTP 402 with a machine-readable payment requirement + a top-up URL — hand the top-up to a human once, then retry; the agent spends from the balance thereafter with no browser in the loop. Get the id from search_entities / resolve. This is the AGENT-NATIVE purchase path; buy_dossier is the human/browser (Stripe Checkout) path.
resolveread-onlyBatch-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.
search_companiesread-onlyFree-text UK Companies House company-name search → registration number.
search_entitiesread-onlySearch every node in the corpus — companies AND people — by name. Returns entity ids for get_dossier / trace_ownership_path.
semantic_searchread-onlyMeaning-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.
trace_ownership_pathread-onlyWalk ownership upward from a root entity to the ultimate beneficial owner(s).

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "dev.whiteintel/whiteintel",
  "title": "WhiteIntel — Ownership Intelligence",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://whiteintel.dev/api/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.7.10",
  "packages": [
    {
      "version": "0.7.10",
      "transport": {
        "type": "stdio"
      },
      "identifier": "@whiteintel/mcp-server",
      "runtimeHint": "npx",
      "registryType": "npm",
      "environmentVariables": [
        {
          "name": "WHITEINTEL_API_KEY",
          "isSecret": true,
          "description": "Optional wi_ API key (whiteintel.dev, Settings, API keys). Lifts free-tier limits to your plan."
        },
        {
          "name": "WHITEINTEL_API_BASE",
          "default": "https://whiteintel.dev",
          "description": "API origin (SSRF-guarded to whiteintel.dev hosts)."
        }
      ]
    }
  ],
  "repository": {
    "url": "https://github.com/Hei33enberg/WhiteIntel-OS",
    "source": "github"
  },
  "websiteUrl": "https://whiteintel.dev",
  "description": "UBO, sanctions & ownership graph. 23 tools, 130.7M entities, 31 registries."
}