Tilt Base
Tilt Legal's managed legal skills and your organisation's custom skills, for your AI agent.
作者による説明(英語の原文)
Company register lookups and KYB checks: registries, sanctions, PEP, offshore leaks, adverse media.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
SONAR_API_KEY, SONAR_API_BASE, SONAR_API_TIMEOUT「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"sonar": {
"command": "uvx",
"args": [
"getsonar-mcp"
],
"env": {
"SONAR_API_KEY": "your-value",
"SONAR_API_BASE": "your-value",
"SONAR_API_TIMEOUT": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add sonar --env SONAR_API_KEY=your-value --env SONAR_API_BASE=your-value --env SONAR_API_TIMEOUT=your-value -- uvx getsonar-mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"sonar": {
"command": "uvx",
"args": [
"getsonar-mcp"
],
"env": {
"SONAR_API_KEY": "your-value",
"SONAR_API_BASE": "your-value",
"SONAR_API_TIMEOUT": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"sonar": {
"type": "stdio",
"command": "uvx",
"args": [
"getsonar-mcp"
],
"env": {
"SONAR_API_KEY": "your-value",
"SONAR_API_BASE": "your-value",
"SONAR_API_TIMEOUT": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
SONAR_API_BASE envSONAR_API_TIMEOUT envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月9日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント Ivanolegvak で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:SONAR_API_KEY
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.3.0)がレジストリに届いたのは昨日です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:Tilt Base, Korea Data MCP, CaseNode Case Law API
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Tilt Legal's managed legal skills and your organisation's custom skills, for your AI agent.
Korean public data: corporate filings, stock prices, apartments, statutes, economic statistics
UK case law: 290k+ judgments, 2.5M citation links, citation validation. Free key at casenode.ai
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
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.
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.
The API is pay per call:
| Call | Price |
|---|---|
Company lookup (company_lookup, company_officers) | €0.01 when the company is found, free when not; the first 100 found are free |
/findings (kyb_findings, adverse_media) | €0.50 |
/run (kyb_run_submit) | €6.00 |
check_report_status, account_balance | free |
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.
sk-sonar-... keyYou 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.
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 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 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.
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" } } } }
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.
| Variable | Default | Purpose |
|---|---|---|
SONAR_API_KEY | (required) | Your sk-sonar-... API key (or an sk-sonar-test-... sandbox key, see below) |
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) |
| Tool | What it does | Price |
|---|---|---|
company_lookup | Register check: does the company exist, is it active and in good standing | €0.01 if found |
company_officers | A company's officers from its register, current and former | €0.01 if found |
kyb_findings | KYB screening: sanctions, PEP, owners, adverse media and the register | €0.50 |
kyb_run_submit | Submit a full KYB report, returns a run_id | €6.00 |
adverse_media | Negative news, complaints and reviews | €0.50 |
check_report_status | Poll a report submitted with kyb_run_submit | free |
account_balance | Balance, free calls and free lookups remaining | free |
All tools return Markdown for the model to read. Which one to use:
company_lookup (€0.01)company_lookup with include: ["officers"], or company_officers (€0.01)kyb_findings (€0.50)kyb_run_submit then check_report_status (€6.00)company_lookupInput:
{ "country": "GB", "company_name": "Tesco PLC", "include": ["officers", "filings"] }
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):
# Company lookup: Tesco PLC (GB): **FOUND**
Full answer: {"query": ..., "status": "FOUND", "matches": [{"name": "TESCO PLC", "good_standing": true, "officers": [...], "filings": [...], ...}], "truncated": null, "coverage_note": null, ...}
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_officersInput:
{ "country": "GB", "registration_number": "00445790" }
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_findingsInput:
{ "company_name": "Tesco PLC", "website": "https://www.tesco.com", "country": "GB", "registration_number": "00445790" }
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):
# KYB Screening: Tesco PLC
Sources checked: 42 · Processing time: 41250ms
Found data: corporate_registration, directors_officers, adverse_media Checked, clean (the check ran and returned nothing about the company): sanctions_screening, offshore_leaks
Each finding names the kind of source (company_register, sanctions_lists, offshore_records, news_search, ...); news articles keep their link.
kyb_run_submitInput: same as kyb_findings. Output:
Report submitted.
3f6c...Call check_report_status with run_id='3f6c...' and agent_type='kyb-diligence' in 30-60 seconds to get the result.
check_report_statusInput:
{ "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_mediaInput: 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_balanceInput: none. Output:
# Account usage: 2026-11
"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.
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.
Create a test key (`sk-sonar-test-...
冒頭だけを表示しています。続きはリポジトリで読めます