放置取引は予測の問題であるだけでなく、運用の問題でもあります。Dun & BradstreetはB2Bデータが年34%以上のペースで劣化し得ると説明しており、Scratchpadの2023 RevOps Trends Reportでは、予測に必要な正しいデータがあると「強くそう思う」と答えたRevOps / 営業リーダーは22%にとどまりました。(Dun & Bradstreet, Scratchpad)
営業やマネージャー向けの使い方だけを知りたい場合は、営業向けガイドを使ってください。この記事は、Codex、Cursor、ClaudeでMCPを使う場合や、API / SDKで定期実行する場合の実装版です。
私自身、規模の違う営業組織でこの問題を何度も見てきましたが、パイプラインレビューが手作業のフィルタや担当者の記憶に依存すると、放置取引は思った以上に長く残ります。実装の目的は、検出と優先順位付けを毎回同じ品質で回せるようにすることです。
この記事で作るもの
このガイドでは、放置取引レビューを繰り返し実行できる技術フローにします。

- 14日以上更新されていない進行中の取引を一覧化する
- 各放置取引をスコアリングして、救うべき取引と切り分ける
- アクションの種類ごとにタグやバケットを付ける
- 毎日または定期的に回せる形にする
セットアップ時間は、MCPなら約5分、API / SDKなら約20分です。

オプション A: Codex、Cursor、Claude から MCP で実行する(5分)
エージェントに取引の確認、スコアリング、ワークフロー整理まで任せたい場合の最短ルートです。
1. Sanka MCP に接続する
SankaのHosted MCPサーバーには、mcp-remote を使ってブラウザベースのOAuthで接続します。
{
"mcpServers": {
"sanka": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.sanka.com/mcp",
"--resource",
"https://mcp.sanka.com/mcp"
]
}
}
}
初回接続時にはブラウザでサインインと承認を行います。OAuthセッションは mcp-remote により ~/.mcp-auth に保存されます。
2. やりたいことを記述する
14日以上更新されていない進行中の取引をすべて一覧化して。
各放置取引をスコアリングして、次の3つに分類して:
- 今すぐ再アプローチ
- 後でナーチャリング
- クローズ整理
「今すぐ再アプローチ」の取引は、主担当の連絡先を取得して短いフォローアップ文面も下書きして。
必要なら、Sankaで更新すべきタグやフィールドも提案して。
3. 結果を確認する
返ってくる結果の例は次のような形です。
| 取引 | 金額 | 未更新日数 | スコア | バケット |
|---|---|---|---|---|
| 田中商事 - Enterprise Plan | ¥5,400,000 | 21日 | 72/100 | 今すぐ再アプローチ |
| GlobalTech - 拡張提案 | ¥3,360,000 | 16日 | 65/100 | 今すぐ再アプローチ |
| Startup XYZ - Starter | ¥384,000 | 31日 | 23/100 | クローズ整理 |
ここから対話型で続けてもよいですし、同じロジックを定期実行スクリプトに移してもよいです。

オプション B: API / SDK で構築する(20分)
ロジックをバージョン管理したい場合や、定期実行したい場合、動作を細かく制御したい場合はこちらが向いています。
1. SDKをインストールする
pip install sanka-sdk
2. 構築する
from datetime import datetime, timedelta
from sanka import Sanka
client = Sanka(api_key="sk_live_...")
cutoff = datetime.now() - timedelta(days=14)
open_deals = client.deals.list(status="open")
stale_deals = [
deal
for deal in open_deals
if datetime.fromisoformat(deal["updated_at"]) < cutoff
]
scored_deals = []
for deal in stale_deals:
score_result = client.ai.score({"type": "deal", "deal_id": deal["id"]})
days_inactive = (datetime.now() - datetime.fromisoformat(deal["updated_at"])).days
scored_deals.append(
{
"deal": deal,
"score": score_result["score"],
"days_inactive": days_inactive,
}
)
reengage_now = [
item
for item in scored_deals
if item["score"] >= 60 and item["deal"]["value"] >= 10000
]
nurture_later = [
item
for item in scored_deals
if item["score"] >= 40 and item not in reengage_now
]
close_out = [
item
for item in scored_deals
if item["score"] < 40 or item["days_inactive"] > 45
]
for item in reengage_now:
client.deals.update(item["deal"]["id"], {"tags": ["re-engage-now"]})
for item in nurture_later:
client.deals.update(item["deal"]["id"], {"tags": ["nurture"]})
for item in close_out:
client.deals.update(item["deal"]["id"], {"tags": ["close-out"]})
print(f"今すぐ再アプローチ: {len(reengage_now)}")
print(f"後でナーチャリング: {len(nurture_later)}")
print(f"クローズ整理: {len(close_out)}")
3. 自動化する
cron、ワークフロー実行基盤、既存ジョブランナーのどれでも構いません。重要なのは、放置取引レビューを「気が向いたときにやる整理作業」ではなく、継続的な運用制御に変えることです。
なぜ営業向け記事と分けるのか
営業向けの記事では、ワークフローが現場で役立つかどうかが重要です。技術向けの記事では、認証方式、MCP設定、再現性、コード管理が重要です。1本に混ぜると、どちらの読者にも読みにくくなります。
営業やマネージャーに共有する場合は、営業向けガイドを使ってください。
次のステップ
参考リンク
- Dun & Bradstreet: Why Data Quality Management Is Key to Sales and Marketing Alignment
- Scratchpad: 2023 RevOps Trends Report
最短で現場利用したい場合は、営業向けガイドに戻ってください。技術的に運用へ組み込みたい場合は、まずMCPサーバーガイドを確認し、その後API / SDKへ進むのが整理しやすいです。