{"record":{"id":"a4dfdfaa64c43bae","repo":"JuliusBrussee/caveman","slug":"max-tools-must-be-a-positive-integer","errorCode":null,"errorMessage":"max_tools must be a positive integer","messagePattern":"max_tools must be a positive integer","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"packages/sdk/python/caveman_cloud/core.py","lineNumber":704,"sourceCode":"        Args:\n            tools: Full tool catalog to filter.\n            query: The user's current intent / task description.\n            context: Optional additional context for the search.\n            max_tools: Optional cap on returned tools (server default applies if omitted).\n            workflow: Override workflow label (defaults to Cave.default_workflow).\n            ranker: Optional ranking algorithm passed through to the gateway\n                (\"bm25\" default, or \"embeddings\" when the gateway has an embedding\n                provider wired). The SDK passes it through; it never computes\n                similarity itself.\n            session_id: Optional server-side tool session id for later\n                provider-request reinjection.\n\n        Returns:\n            ToolSearchResult with .tools, .sent_schema_tokens, .full_schema_tokens,\n            .deferred_count, .method, .saved_tokens, .reduction_pct.\n        \"\"\"\n        if max_tools is not None and (isinstance(max_tools, bool) or not isinstance(max_tools, int) or max_tools < 1):\n            raise ValueError(\"max_tools must be a positive integer\")\n        body: dict[str, Any] = {\n            \"tools\": [\n                {\n                    \"name\": t.name,\n                    \"description\": t.description,\n                    \"input_schema\": t.input_schema,\n                    \"read_only\": t.read_only,\n                    \"idempotent\": t.idempotent,\n                    \"always_load\": t.always_load,\n                }\n                for t in tools\n            ],\n            \"query\": query,\n        }\n        if context is not None:\n            body[\"context\"] = context\n        if max_tools is not None:\n            body[\"max_tools\"] = max_tools","sourceCodeStart":686,"sourceCodeEnd":722,"githubUrl":"https://github.com/JuliusBrussee/caveman/blob/27d5a3981a347890211bb1bf2439e5c821a63bc9/packages/sdk/python/caveman_cloud/core.py#L686-L722","documentation":"Error \"max_tools must be a positive integer\" thrown in JuliusBrussee/caveman.","triggerScenarios":"Thrown at packages/sdk/python/caveman_cloud/core.py:704 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set max_tools to a positive integer."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"27d5a3981a347890211bb1bf2439e5c821a63bc9","analyzedAt":"2026-08-15T09:26:11.751Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}