sieve_memo
Retrieve existing investment memos or generate new ones for deals. Choose between internal (IC-facing) or external (founder-facing) format. Requires a completed screen.
Instructions
Get or generate an investment memo for a deal.
If generate=false (default), retrieves the existing memo. If generate=true, creates a new memo (~15-30 seconds). Requires a completed screen.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | Yes | The deal ID (from sieve_deals or sieve_screen). | |
| generate | No | Set to true to generate a new memo. | |
| memo_type | No | 'internal' (IC-facing, full risks) or 'external' (founder-facing). Default: internal. | internal |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/sieve_mcp/server.py:174-193 (registration)The sieve_memo tool is registered as a FastMCP tool with @mcp.tool decorator, defining its annotations, docstring, and handler function signature taking deal_id, generate, and memo_type parameters.
@mcp.tool( annotations={ "readOnlyHint": False, "destructiveHint": False, "openWorldHint": True, } ) async def sieve_memo(deal_id: str, generate: bool = False, memo_type: str = "internal") -> dict: """Get or generate an investment memo for a deal. If generate=false (default), retrieves the existing memo. If generate=true, creates a new memo (~15-30 seconds). Requires a completed screen. Args: deal_id: The deal ID (from sieve_deals or sieve_screen). generate: Set to true to generate a new memo. memo_type: 'internal' (IC-facing, full risks) or 'external' (founder-facing). Default: internal. """ return await client.memo(deal_id=deal_id, generate=generate, memo_type=memo_type) - src/sieve_mcp/server.py:181-193 (handler)The sieve_memo handler function delegates to client.memo(), passing deal_id, generate, and memo_type arguments.
async def sieve_memo(deal_id: str, generate: bool = False, memo_type: str = "internal") -> dict: """Get or generate an investment memo for a deal. If generate=false (default), retrieves the existing memo. If generate=true, creates a new memo (~15-30 seconds). Requires a completed screen. Args: deal_id: The deal ID (from sieve_deals or sieve_screen). generate: Set to true to generate a new memo. memo_type: 'internal' (IC-facing, full risks) or 'external' (founder-facing). Default: internal. """ return await client.memo(deal_id=deal_id, generate=generate, memo_type=memo_type) - src/sieve_mcp/client.py:165-169 (handler)The client.memo() helper function makes the HTTP API call: POST /deals/{deal_id}/memo (with memo_type body) if generate=True, otherwise GET /deals/{deal_id}/memo to retrieve the existing memo.
async def memo(deal_id: str, generate: bool = False, memo_type: str = "internal") -> dict[str, Any]: """Get or generate investment memo.""" if generate: return await _request("POST", f"/deals/{deal_id}/memo", json_body={"type": memo_type}, timeout=60.0) return await _request("GET", f"/deals/{deal_id}/memo")