{"record":{"id":"69195edbb38c984b","repo":"crewAIInc/crewAI","slug":"contextual-client-package-is-required-install-it-69195e","errorCode":null,"errorMessage":"contextual-client package is required. Install it with: pip install contextual-client","messagePattern":"contextual-client package is required\\. Install it with: pip install contextual-client","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"lib/crewai-tools/src/crewai_tools/tools/contextualai_query_tool/contextual_query_tool.py","lineNumber":41,"sourceCode":"    description: str = (\n        \"Use this tool to query a Contextual AI RAG agent with access to your documents\"\n    )\n    args_schema: type[BaseModel] = ContextualAIQuerySchema\n\n    api_key: str\n    contextual_client: Any = None\n    package_dependencies: list[str] = Field(\n        default_factory=lambda: [\"contextual-client\"]\n    )\n\n    def __init__(self, **kwargs: Any) -> None:\n        super().__init__(**kwargs)\n        try:\n            from contextual import ContextualAI\n\n            self.contextual_client = ContextualAI(api_key=self.api_key)\n        except ImportError as e:\n            raise ImportError(\n                \"contextual-client package is required. Install it with: pip install contextual-client\"\n            ) from e\n\n    def _check_documents_ready(self, datastore_id: str) -> bool:\n        \"\"\"Synchronous check if all documents are ready.\"\"\"\n        url = f\"https://api.contextual.ai/v1/datastores/{datastore_id}/documents\"\n        headers = {\"Authorization\": f\"Bearer {self.api_key}\"}\n        response = requests.get(url, headers=headers, timeout=30)\n        if response.status_code == 200:\n            data = response.json()\n            documents = data.get(\"documents\", [])\n            return not any(\n                doc.get(\"status\") in (\"processing\", \"pending\") for doc in documents\n            )\n        return True\n\n    async def _wait_for_documents_async(\n        self, datastore_id: str, max_attempts: int = 20, interval: float = 30.0","sourceCodeStart":23,"sourceCodeEnd":59,"githubUrl":"https://github.com/crewAIInc/crewAI/blob/754d7323beb2fd042e33444a115ea2d5a47193f0/lib/crewai-tools/src/crewai_tools/tools/contextualai_query_tool/contextual_query_tool.py#L23-L59","documentation":"Error \"contextual-client package is required. Install it with: pip install contextual-client\" thrown in crewAIInc/crewAI.","triggerScenarios":"Thrown at lib/crewai-tools/src/crewai_tools/tools/contextualai_query_tool/contextual_query_tool.py:41 when the library encounters an invalid state.","commonSituations":"Occurs when the contextual-client package is not installed. Install it with: pip install contextual-client.","solutions":["Install the package with `pip install contextual-client`."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"754d7323beb2fd042e33444a115ea2d5a47193f0","analyzedAt":"2026-08-15T04:06:56.746Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}