diff --git a/README.md b/README.md index 2e0b8f5..5ed4a27 100644 --- a/README.md +++ b/README.md @@ -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 | --- diff --git a/server.py b/server.py index 502b4cb..9cbdd25 100644 --- a/server.py +++ b/server.py @@ -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] = {}