SONAR: KYB due diligence
KYB checks on any company: registries, sanctions, PEP, ICIJ Offshore Leaks, adverse media.
ماذا يمكنك أن تفعل مع SONAR: KYB due diligence؟
- Company registries: 13 national business registries (UK Companies House and 12 more) for legal name, number, status, address and officers
- 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
- Two call shapes: fast structured findings (sync, 30-90 s) or a full written report (async, about 3 min)
التثبيت
أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: .cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).
getsonar-mcpclaude mcp add sonar-kyb-due-diligence -e 'SONAR_API_KEY=<your sonar_api_key>' -e 'SONAR_API_BASE=https://api.getsonar.report' -e 'SONAR_API_TIMEOUT=120' -- uvx getsonar-mcp==0.2.0
{
"mcpServers": {
"sonar-kyb-due-diligence": {
"command": "uvx",
"args": [
"getsonar-mcp==0.2.0"
],
"env": {
"SONAR_API_KEY": "<your sonar_api_key>",
"SONAR_API_BASE": "https://api.getsonar.report",
"SONAR_API_TIMEOUT": "120"
}
}
}
}
متغيرات البيئة
SONAR_API_KEYإلزامي سري Your SONAR API key (sk-sonar-...). Create one at https://getsonar.report/developer/keys. Your first API call is free.SONAR_API_BASEAPI base URL. Only change it for a staging or self-hosted SONAR.SONAR_API_TIMEOUTPer-request timeout in seconds.
التوثيق
مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.
المحتويات
getsonar-mcp
MCP server for SONAR: KYB due diligence on vendors, partners and resellers, callable from your AI assistant.
Ask Claude, Cursor or Windsurf to check a company and it gets back registry records, sanctions and PEP matches, ICIJ Offshore Leaks hits and adverse media, each with a link to the source.
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 registries: 13 national business registries (UK Companies House and 12 more) for legal name, number, status, address and officers
- 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
- Two call shapes: fast structured findings (sync, 30-90 s) 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:
| Call | Price |
|---|---|
/findings (kyb_findings, adverse_media) | €0.40 |
/run (kyb_run_submit) | €2.00 |
check_report_status, account_balance | free |
Your first API call is free (any endpoint). 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):
{
"mcpServers": {
"sonar": {
"command": "uvx",
"args": ["getsonar-mcp"],
"env": {
"SONAR_API_KEY": "sk-sonar-YOUR_KEY_HERE"
}
}
}
}
Restart Claude Desktop. The five SONAR tools appear in the tools menu.
Claude Code
claude mcp add sonar --env SONAR_API_KEY=sk-sonar-YOUR_KEY_HERE -- uvx getsonar-mcp
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):
{
"mcpServers": {
"sonar": {
"command": "uvx",
"args": ["getsonar-mcp"],
"env": {
"SONAR_API_KEY": "sk-sonar-YOUR_KEY_HERE"
}
}
}
}
Windsurf
Edit ~/.codeium/windsurf/mcp_config.json (or Windsurf Settings → Cascade → MCP servers → View raw config):
{
"mcpServers": {
"sonar": {
"command": "uvx",
"args": ["getsonar-mcp"],
"env": {
"SONAR_API_KEY": "sk-sonar-YOUR_KEY_HERE"
}
}
}
}
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
| Variable | Default | Purpose |
|---|---|---|
SONAR_API_KEY | (required) | Your sk-sonar-... API key |
SONAR_API_BASE | https://api.getsonar.report | Override for staging or self-hosted SONAR |
SONAR_API_TIMEOUT | 120 | Per-request timeout in seconds |
SONAR_MCP_LOG_LEVEL | INFO | DEBUG for verbose logs (stderr) |
Tools
| Tool | What it does | Price |
|---|---|---|
kyb_findings | Fast KYB check: structured findings with sources | €0.40 |
kyb_run_submit | Submit a full KYB report, returns a run_id | €2.00 |
adverse_media | Negative news, complaints and reviews | €0.40 |
check_report_status | Poll a report submitted with kyb_run_submit | free |
account_balance | Balance and free trial calls remaining | free |
All tools return Markdown for the model to read.
kyb_findings
Input:
{ "company_name": "Tesco PLC", "website": "https://www.tesco.com" }
company_name is required. website is optional but strongly recommended: it separates the company from unrelated ones sharing the name.
Output (abridged, values illustrative):
# KYB Quick Lookup: Tesco PLC
Sources checked: 42 · Processing time: 41250ms
**Found data**: registry, regulatory, adverse_media
**Checked, clean** (no findings — collector ran): sanctions, offshore_leaks
## Registry (confidence: HIGH)
- **TESCO PLC (00445790), active**
Public limited company
Source: https://find-and-update.company-information.service.gov.uk/company/00445790
kyb_run_submit
Input: same as kyb_findings. Output:
Report submitted.
- Run ID: `3f6c...`
- Status: pending
- Estimated time: 90 seconds
Call `check_report_status` with run_id='3f6c...' and agent_type='kyb-diligence' in 30-60 seconds to get the result.
check_report_status
Input:
{ "run_id": "3f6c...", "agent_type": "kyb-diligence" }
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:
# Account usage — 2026-10
- Calls this month: **0**
- Free trial calls remaining: **1** (granted once at signup)
- Pre-paid balance: **€5.00**
Example prompts
"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 sources.
"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:
SONAR_API_KEY=sk-sonar-YOUR_KEY_HERE npx @modelcontextprotocol/inspector uvx getsonar-mcp
Listing tools works without a key; calling one needs a valid key.
Use the API without MCP
The MCP server is a thin client over the SONAR REST API. To call it directly:
export SONAR_API_KEY=sk-sonar-YOUR_KEY_HERE
# Structured findings: sync, 30-90 s, €0.40
curl -X POST 'https://api.getsonar.report/v1/agents/kyb-diligence/findings' \
-H "X-API-Key: $SONAR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"company_name":"Tesco PLC","website":"https://www.tesco.com"}'
# Full report: async, about 3 min, €2.00; returns {"run_id": ..., "status": "pending"}
curl -X POST 'https://api.getsonar.report/v1/agents/kyb-diligence/run' \
-H "X-API-Key: $SONAR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"company_name":"Tesco PLC","website":"https://www.tesco.com"}'
# Poll until status is "completed"
curl 'https://api.getsonar.report/v1/agents/kyb-diligence/run/RUN_ID' -H "X-API-Key: $SONAR_API_KEY"
# Usage, balance and free trial calls left
curl 'https://api.getsonar.report/v1/usage' -H "X-API-Key: $SONAR_API_KEY"
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 is used and your balance is €0. Top up from €5 at getsonar.report/developer/keys.
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 website. Short brand names collide with unrelated companies in news search; SONAR drops those collisions when it knows the domain.
Development
uv sync
uv run pytest # stdio smoke test against a fake API, no network
Maintainers: ARCHITECTURE.md covers the module layout and the stdio / HTTP transports; DIRECTORIES.md covers releasing and listing in MCP directories.
Support
Email ivan@getsonar.report or open an issue on GitHub.
License
MIT, see LICENSE.
الأسئلة الشائعة
ما هو SONAR: KYB due diligence؟
KYB checks on any company: registries, sanctions, PEP, ICIJ Offshore Leaks, adverse media.
كيف أثبّت SONAR: KYB due diligence؟
يعمل على جهازك. في Claude Code: claude mcp add sonar-kyb-due-diligence -e 'SONAR_API_KEY=<your sonar_api_key>' -e 'SONAR_API_BASE=https://api.getsonar.report' -e 'SONAR_API_TIMEOUT=120' -- uvx getsonar-mcp==0.2.0. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.
هل يحتاج SONAR: KYB due diligence إلى مفتاح API؟
نعم. يتطلب SONAR_API_KEY، وتضبطها في إعداداته.
هل SONAR: KYB due diligence مفتوح المصدر؟
نعم. شيفرته متاحة على GitHub بترخيص MIT.
من يصون SONAR: KYB due diligence؟
ينشره Ivanolegvak. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.
من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.