feat: add get_deals_rich tool, enrich list_firms

- get_deals_rich: full deal export with tombstone text, quote, attachments,
  fee structure, multiples, co-advisory info. Date range optional.
- list_firms: now returns Summary, Countries, EquityPartnerName
This commit is contained in:
Spaike 2026-05-08 17:42:04 +02:00
parent ebe1c78ef1
commit 7f7c67b9b4
2 changed files with 45 additions and 2 deletions

View File

@ -84,7 +84,8 @@ Restart Claude Desktop.
| `get_member_detail` | Full profile of a single network member |
| `list_deal_stages` | Available deal stages |
| `list_industries` | Industry classifications |
| `list_firms` | Firms visible to your account |
| `list_firms` | Firms visible to your account (with summary, countries, equity partner) |
| `get_deals_rich` | Full deal dataset including tombstone narrative, fee structure, multiples, attachments list |
---

View File

@ -301,11 +301,43 @@ async def list_tools() -> list[types.Tool]:
name="list_firms",
description=(
"Returns the firms visible to the current user: "
"their own firm plus all firms that have at least one deal shared with the network."
"their own firm plus all firms that have at least one deal shared with the network. "
"Each firm includes a summary description, countries of activity, and equity partner info."
),
inputSchema={"type": "object", "properties": {}, "required": []},
),
types.Tool(
name="get_deals_rich",
description=(
"Returns a rich dataset of deals using the portal's export engine. "
"Includes fields NOT available in list_deals:\n"
"- TransactionTitle and TransactionDescription: the tombstone narrative text\n"
"- Quote and QuoteAuthor: a client or deal quote\n"
"- DealAttachments: list of attached document filenames\n"
"- SuccessFee, FeeShare: fee structure\n"
"- Multiple, MultipleOverride: valuation multiples\n"
"- CoAdvisory, OtherFirmInDeal, OtherFirmInvolved: network co-advisory relationships\n"
"- Financing-specific fields (PurposeOfFinancing, TypeOfLending, etc.)\n\n"
"Confidential financial values are masked. HTML is stripped from narrative fields.\n\n"
"Use this when you need the full deal narrative, tombstone text, or fee/multiple data. "
"Use list_deals for quick filtered searches."
),
inputSchema={
"type": "object",
"properties": {
"date_from": {
"type": "string",
"description": "Start of date range (YYYY-MM-DD). Defaults to 5 years ago.",
},
"date_to": {
"type": "string",
"description": "End of date range (YYYY-MM-DD). Defaults to today.",
},
},
},
),
types.Tool(
name="list_members",
description=(
@ -527,6 +559,16 @@ async def call_tool(name: str, arguments: dict) -> list[types.TextContent]:
result = await _get("/firms")
return await respond(result)
# ------------------------------------------------------------------
elif name == "get_deals_rich":
params: dict[str, Any] = {}
if arguments.get("date_from"):
params["date_from"] = arguments["date_from"]
if arguments.get("date_to"):
params["date_to"] = arguments["date_to"]
result = await _get("/deal-export", params)
return await respond(result)
# ------------------------------------------------------------------
elif name == "list_members":
params: dict[str, Any] = {}