SONAR: KYB due diligence
io.github.Ivanolegvak由 GitHub 账号 Ivanolegvak 发布v0.3.0更新于 Nov 7, 2026
Company register lookups and KYB checks: registries, sanctions, PEP, offshore leaks, adverse media.
概览
本地 MCP 服务器,让助手通过 SONAR API 对供应商、合作伙伴和经销商进行公司注册信息查询与 KYB 尽职调查。
- 可以做什么
- 在官方注册库中查询公司:是否存在、状态、是否正常存续、法律形式、地址、增值税号、曾用名
- 获取公司的现任及历任高管与申报文件
- 筛查制裁、PEP、离岸泄密、监管名录和负面媒体
- 提交完整 KYB 报告并轮询其状态直至完成
- 查看账户余额、免费试用次数和剩余免费查询次数
- 适用场景
- 适用于需要核实某公司是否存在且正常存续、查明其董事,或在合作前对潜在供应商、合作伙伴或经销商进行制裁、PEP、离岸泄密和负面新闻筛查的场景。
- 运行要求
- 通过 uvx(或 pipx)从 PyPI 包 getsonar-mcp 以 stdio 方式在本地运行,需先安装 uv。需要在 SONAR_API_KEY 环境变量中提供 SONAR API 密钥,可在 getsonar.report 注册后获取。可选配置:SONAR_API_BASE、SONAR_API_TIMEOUT、SONAR_MCP_LOG_LEVEL。需要能访问 SONAR API 的网络。
安装
在 SourceWeft 中
- 打开 控制台中的 SONAR: KYB due diligence,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
getsonar-mcp
[PyPI version] [MCP Registry] [License: MIT]
MCP server for SONAR: KYB due diligence on vendors, partners and resellers, callable from your AI assistant.
Ask Claude, Cursor or Windsurf whether a company exists and is in good standing, or to screen it, and it gets back the official register record, sanctions and PEP matches, ICIJ Offshore Leaks hits and adverse media, each finding naming the kind of source it came from.
SONAR is a due-diligence aid built on public records. It is not a regulated AML/KYC provider and its output is not a compliance decision: a human reviews the findings.
Features
- Company register lookup: a live search of the official register in about a second (GB, FR, CZ, SK, NO, FI, CH, EE, LV, US states; PL, BE, BR by number): exists or not, active, good standing, legal form, address, VAT number, previous names, officers and filings. €0.01 only when the company is found
- Company registries in the KYB check: official company registries in 10+ countries for legal name, number, status, address, officers and owners
- Sanctions and PEP screening: native OFAC, UN, UK OFSI and Swiss SECO lists plus the OpenSanctions aggregator
- ICIJ Offshore Leaks: Panama, Paradise and Pandora Papers, Bahamas Leaks
- Regulatory registers: UK FCA Register, UK Disqualified Directors, The Gazette insolvency notices
- Adverse media: 10-year lookback on news, complaints and reviews
- Three call shapes: a register lookup (about 1 s), structured screening findings (30-90 s; the tools poll the API's 202 + poll URL for you) or a full written report (async, about 3 min)
Works with Claude Desktop, Claude Code, Cursor, Windsurf and any other Model Context Protocol client. Listed in the official MCP Registry as io.github.Ivanolegvak/sonar-mcp.
Pricing
The API is pay per call:
Your first API call is free (a findings or report call; lookups have their own 100 free). After that, calls are paid from a prepaid balance: top up from €5 at getsonar.report/developer/keys. Plans and the web app's free tier are on getsonar.report/pricing.
Get an API key
- Sign up at getsonar.report
- Open Developer → API keys
- Click Create API Key and copy the
sk-sonar-...key
Installation
You need uv (it provides uvx). Nothing else to install: uvx getsonar-mcp fetches and runs the latest release. With pipx instead: pipx install getsonar-mcp, then use getsonar-mcp as the command.
The key goes in the SONAR_API_KEY environment variable of the server process.
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
Restart Claude Desktop. The seven SONAR tools appear in the tools menu. If they don't, Claude Desktop may not find uvx on its PATH: replace "uvx" with the full path that which uvx prints (e.g. /Users/you/.local/bin/uvx).
Claude Code
Add --scope user to make it available in every project. Check it with claude mcp list.
Cursor
Edit ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
Windsurf
Edit ~/.codeium/windsurf/mcp_config.json (or Windsurf Settings → Cascade → MCP servers → View raw config):
Other clients (Continue.dev, Zed, Cline, ...) take the same command, args and env; see your client's MCP docs for where the config lives.
Configuration
Tools
All tools return Markdown for the model to read. Which one to use:
- "Does this company exist / is it registered / is it active?":
company_lookup(€0.01) - "Who are its directors?":
company_lookupwithinclude: ["officers"], orcompany_officers(€0.01) - "Screen it for sanctions, PEP, offshore leaks or bad press":
kyb_findings(€0.50) - "Give me a full written KYB report":
kyb_run_submitthencheck_report_status(€6.00)
company_lookup
Input:
country (ISO code) is required, plus company_name or registration_number (a number is matched exactly and decides alone; PL, BE and BR take a number only). state is required for the US (NY, CO, OR, CT, TX, PA, FL, IA, DC). include is optional and free: officers (GB, CZ, SK, NO, FR) and filings (GB, FR) of the found company.
The name rule is strict: case, punctuation, accents and the spelling of the legal form are set aside, any other difference is another company, so a look-alike name is NOT_FOUND.
Output: a headline, then the API's full JSON answer (every field, nothing dropped):
good_standing is false when the company is closed or the register marks a default or insolvency (GB: accounts or confirmation statement overdue, strike-off pending), and null where the register publishes no such markers. truncated: true (FR) means the register holds more companies of the name than it returned: search by number. coverage_note (US) says what the state register holds, so a NOT_FOUND reads for what it is.
company_officers
Input:
Output: a headline (current and former officer counts, price) and the full JSON: name, role, person or company, appointed_on, resigned_on. GB, CZ, SK, NO, FR. Priced like a lookup.
kyb_findings
Input:
company_name is required. Pass country (and state for the US): without it no company register is searched and the answer says NOT_SEARCHED. registration_number and vat_number are optional. website is optional but strongly recommended: it separates the company from unrelated ones sharing the name.
Output (abridged, values illustrative):
Each finding names the kind of source (company_register, sanctions_lists, offshore_records, news_search, ...); news articles keep their link.
kyb_run_submit
Input: same as kyb_findings. Output:
check_report_status
Input:
agent_type is kyb-diligence (default) or adverse-media. While the report runs it answers Report status: running. Still processing, check again in 15-30 seconds.; when done it returns a compact summary: overall verdict and risk level, company details, a PASS / REVIEW / FLAG table of checks, risk flags, directors and sanctions coverage.
adverse_media
Input: same as kyb_findings. Output: the same Markdown shape as kyb_findings, limited to news, complaints and review sites (no sanctions or PEP screening).
account_balance
Input: none. Output:
Example prompts
"Is Tesco PLC an active UK company in good standing? Who are its directors?"
The model calls company_lookup with country: "GB" and include: ["officers"]: one call, €0.01.
"Run a KYB check on Tesco PLC (tesco.com) and tell me if anything needs a closer look."
The model calls kyb_findings, reads the structured findings and points out sanctions, register or adverse-media hits with their kind of source.
"Get a full KYB report on Wise Payments Limited and summarise it when it's done."
The model calls kyb_run_submit, then check_report_status until the report is complete.
"How many free trial calls do I have left?"
The model calls account_balance.
Verify your install
The MCP Inspector starts the server and lists its tools:
Listing tools works without a key; calling one needs a valid key.
Test without paying (sandbox key)
Create a test key (sk-sonar-test-...) on Developer → API keys and put it in SONAR_API_KEY. It answers company_lookup, company_officers and account_balance with fixed, made-up scenarios, never calls a register and is never charged:
The number must still be in the country's format (for GB, 00000001). A test key cannot run kyb_findings, adverse_media or kyb_run_submit (403 SANDBOX_KEY).
Use the API without MCP
The MCP server is a thin client over the SONAR REST API. To call it directly:
Agents: kyb-diligence (registries, sanctions, PEP, UBOs, adverse media) and adverse-media (negative news only). The website field must be an http:// or https:// URL. Full OpenAPI spec: api.getsonar.report/docs. Developer guide: getsonar.report/developers.
Troubleshooting
Tools don't appear: check the config file is valid JSON, restart the client, and run uvx --version in a terminal to confirm uv is installed.
401 Unauthorized: SONAR_API_KEY is missing or wrong. Check it at getsonar.report/developer/keys.
402 Payment Required: your free first call (or your 100 free lookups) is used and your balance is too low. Top up from €5 at getsonar.report/developer/keys.
403 SANDBOX_KEY: a test key only runs company_lookup, company_officers and account_balance. Use a live key for screening and reports.
429: rate limit. kyb_findings, adverse_media and kyb_run_submit allow 10 calls a minute per key by default; lookups allow at least 120.
registry_match: NOT_SEARCHED in kyb_findings: pass country (and state for the US).
Timeouts: raise SONAR_API_TIMEOUT. A full report can take 3+ minutes; poll with check_report_status rather than waiting on one call.
uvx getsonar-mcp runs an old version: uvx caches environments. Run uvx getsonar-mcp@latest once, or uv cache clean getsonar-mcp.
Wrong company in the results: pass country and registration_number (or website). Short brand names collide with unrelated companies in news search; SONAR drops those collisions when it knows the domain.
Development
Maintainers: ARCHITECTURE.md covers the module layout and the stdio / HTTP transports; DIRECTORIES.md covers releasing and listing in MCP directories.
Support
Email [email protected] or open an issue on GitHub.
License
MIT, see LICENSE.
来源:README.md,提交 24f497a
工具
0版本历史
3- v0.3.0最新Nov 7, 2026
- v0.2.0Oct 24, 2026
- v0.1.9Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分