sieve_status
Check the progress of a Sieve analysis by providing a deal ID. Returns completed IMPACT-X dimensions with scores, overall progress percentage, and current phase.
Instructions
Check the progress of a Sieve analysis.
Returns which IMPACT-X dimensions are complete with their scores, overall progress percentage, and current phase.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | Yes | The deal ID returned by sieve_screen. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/sieve_mcp/server.py:98-114 (registration)The sieve_status tool is registered as an MCP tool via the @mcp.tool decorator on the sieve_status async function. It is annotated with readOnlyHint=True.
@mcp.tool( annotations={ "readOnlyHint": True, "destructiveHint": False, "openWorldHint": True, } ) async def sieve_status(deal_id: str) -> dict: """Check the progress of a Sieve analysis. Returns which IMPACT-X dimensions are complete with their scores, overall progress percentage, and current phase. Args: deal_id: The deal ID returned by sieve_screen. """ return await client.status(deal_id) - src/sieve_mcp/server.py:105-114 (handler)The MCP tool handler function sieve_status(deal_id) that accepts a deal_id string and delegates to client.status(deal_id).
async def sieve_status(deal_id: str) -> dict: """Check the progress of a Sieve analysis. Returns which IMPACT-X dimensions are complete with their scores, overall progress percentage, and current phase. Args: deal_id: The deal ID returned by sieve_screen. """ return await client.status(deal_id) - src/sieve_mcp/client.py:138-140 (helper)The client.status(deal_id) helper function that makes a GET request to /api/v1/public/screen/{deal_id}/status via the internal _request helper.
async def status(deal_id: str) -> dict[str, Any]: """Check analysis progress.""" return await _request("GET", f"/screen/{deal_id}/status") - src/sieve_mcp/client.py:40-110 (helper)The _request helper function that executes the actual HTTP request with error handling, analytics, and response parsing.
async def _request( method: str, path: str, *, json_body: dict[str, Any] | None = None, timeout: float = 15.0, ) -> dict[str, Any]: """Execute an HTTP request and return the JSON response or an error dict.""" if not SIEVE_API_KEY: return { "error": "Missing API key", "detail": "Set the SIEVE_API_KEY environment variable. " "Get your key at https://app.sieve.arceusxventures.com/settings", } url = f"{SIEVE_API_URL.rstrip('/')}{_BASE}{path}" start = time.monotonic() result: dict[str, Any] = {} try: async with httpx.AsyncClient(timeout=timeout) as client: response = await client.request( method, url, headers=_headers(), json=json_body ) response.raise_for_status() result = response.json() return result # type: ignore[no-any-return] except httpx.HTTPStatusError as exc: try: body = exc.response.json() except Exception: body = exc.response.text result = { "error": f"HTTP {exc.response.status_code}", "detail": body, } return result except httpx.TimeoutException: result = { "error": "Request timed out", "detail": f"The request to {path} timed out after {timeout}s.", } return result except httpx.RequestError as exc: result = { "error": "Connection error", "detail": str(exc), } return result finally: duration_ms = round((time.monotonic() - start) * 1000) try: if _posthog is not None: _posthog.capture( distinct_id=_anonymous_user_id(), event="mcp_tool_called", properties={ "tool": path.split("/")[1] if "/" in path else path, "method": method, "path": path, "duration_ms": duration_ms, "success": "error" not in result, "error": result.get("error"), }, ) except Exception: pass # Never let analytics break the tool - src/sieve_mcp/server.py:105-113 (schema)The sieve_status tool accepts a single parameter deal_id (str) and returns a dict. The docstring explains it returns progress percentages, completed IMPACT-X dimensions with scores, and current phase.
async def sieve_status(deal_id: str) -> dict: """Check the progress of a Sieve analysis. Returns which IMPACT-X dimensions are complete with their scores, overall progress percentage, and current phase. Args: deal_id: The deal ID returned by sieve_screen. """