sieve_screen
Analyze a startup across 7 dimensions (Innovators, Market, Product, Advantage, Commerce, Traction, X-Factor) to get a quick screen result. Use with data room documents (v3) or directly with company name/website (v2). Returns an analysis ID.
Instructions
Run a Sieve IMPACT-X Quick Screen on a startup.
Analyzes the company across 7 dimensions (Innovators, Market, Product, Advantage, Commerce, Traction, X-Factor) and returns an analysis ID. Takes 2-5 minutes to complete. Upserts -- if the company was previously screened, returns the existing deal (set confirm=true to re-screen).
Two ways to use:
v3 (recommended): First add documents with sieve_dataroom_add, then call sieve_screen(deal_id=...) to analyze everything in the data room.
v2 (legacy): Call sieve_screen(company_name=..., website_url=...) directly. At least one of website_url or pitch_deck_text is required in this mode.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| company_name | No | Name of the startup to screen (v2 flow, or to create new deal). | |
| deal_id | No | Screen an existing deal by ID (v3 flow -- use after sieve_dataroom_add). | |
| website_url | No | Company website URL (v2 flow). | |
| pitch_deck_text | No | Extracted pitch deck text (v2 flow). | |
| description | No | Brief company description (optional). | |
| confirm | No | Set to true to re-screen an existing deal. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/sieve_mcp/server.py:59-95 (handler)The MCP tool handler function for sieve_screen. It is registered as a FastMCP tool, accepts parameters like company_name, deal_id, website_url, pitch_deck_text, description, and confirm, and delegates to client.screen().
async def sieve_screen( company_name: str = "", deal_id: str = "", website_url: str = "", pitch_deck_text: str = "", description: str = "", confirm: bool = False, ) -> dict: """Run a Sieve IMPACT-X Quick Screen on a startup. Analyzes the company across 7 dimensions (Innovators, Market, Product, Advantage, Commerce, Traction, X-Factor) and returns an analysis ID. Takes 2-5 minutes to complete. Upserts -- if the company was previously screened, returns the existing deal (set confirm=true to re-screen). Two ways to use: - v3 (recommended): First add documents with sieve_dataroom_add, then call sieve_screen(deal_id=...) to analyze everything in the data room. - v2 (legacy): Call sieve_screen(company_name=..., website_url=...) directly. At least one of website_url or pitch_deck_text is required in this mode. Args: company_name: Name of the startup to screen (v2 flow, or to create new deal). deal_id: Screen an existing deal by ID (v3 flow -- use after sieve_dataroom_add). website_url: Company website URL (v2 flow). pitch_deck_text: Extracted pitch deck text (v2 flow). description: Brief company description (optional). confirm: Set to true to re-screen an existing deal. """ return await client.screen( company_name=company_name, deal_id=deal_id, website_url=website_url, pitch_deck_text=pitch_deck_text, description=description, confirm=confirm, ) - src/sieve_mcp/server.py:52-58 (registration)The @mcp.tool decorator that registers sieve_screen as a FastMCP tool with annotations.
@mcp.tool( annotations={ "readOnlyHint": False, "destructiveHint": False, "openWorldHint": True, } ) - src/sieve_mcp/client.py:113-135 (helper)The client.screen() helper function that builds the request body and calls the Sieve API POST /screen endpoint with a 30-second timeout.
async def screen( company_name: str = "", deal_id: str = "", website_url: str = "", pitch_deck_text: str = "", description: str = "", confirm: bool = False, ) -> dict[str, Any]: """Start a Quick Screen analysis (upserts — rescreens if deal exists).""" body: dict[str, Any] = {} if company_name: body["company_name"] = company_name if deal_id: body["deal_id"] = deal_id if website_url: body["website_url"] = website_url if pitch_deck_text: body["pitch_deck_text"] = pitch_deck_text if description: body["description"] = description if confirm: body["confirm"] = True return await _request("POST", "/screen", json_body=body, timeout=30.0)