{"record":{"id":"00ddb595521dadbe","repo":"rohitg00/ai-engineering-from-scratch","slug":"unsupported-tool","errorCode":null,"errorMessage":"unsupported tool","messagePattern":"unsupported tool","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"certifications/claude/lessons/30-developer-application-capstone/code/main.py","lineNumber":151,"sourceCode":"        }\n\n\nclass LeastPrivilegeGate:\n    def allow(self, tool: str, arguments: dict[str, Any], approved: bool = False) -> tuple[bool, str]:\n        if tool == \"lookup_order\" and set(arguments) == {\"order_id\"}:\n            return True, \"read-only lookup\"\n        if tool == \"issue_refund\":\n            return (approved, \"explicit approval required\" if not approved else \"approved refund\")\n        return False, \"capability or arguments not allowlisted\"\n\n\nclass ToolRegistry:\n    def __init__(self, orders: dict[str, str]) -> None:\n        self.orders = dict(orders)\n\n    def call(self, tool: str, arguments: dict[str, Any]) -> dict[str, Any]:\n        if tool != \"lookup_order\":\n            raise ValueError(\"unsupported tool\")\n        order_id = arguments[\"order_id\"]\n        if order_id not in self.orders:\n            return {\"found\": False, \"order_id\": order_id}\n        return {\"found\": True, \"order_id\": order_id, \"status\": self.orders[order_id]}\n\n\nclass SupportAgent:\n    def __init__(self, registry: ToolRegistry, gate: LeastPrivilegeGate | None = None) -> None:\n        self.registry = registry\n        self.gate = gate or LeastPrivilegeGate()\n\n    def run(self, request: str) -> SupportResult:\n        trace: list[TraceEvent] = [TraceEvent(\"request_received\", {\"length\": len(request)})]\n        injection_markers = (\"ignore previous\", \"reveal secret\", \"read .env\", \"bypass approval\")\n        if any(marker in request.lower() for marker in injection_markers):\n            trace.append(TraceEvent(\"policy_denial\", {\"reason\": \"instruction injection marker\"}))\n            return SupportResult(\"denied\", \"I cannot follow instructions that bypass policy or request secrets.\", None, True, tuple(trace))\n","sourceCodeStart":133,"sourceCodeEnd":169,"githubUrl":"https://github.com/rohitg00/ai-engineering-from-scratch/blob/39ea8a1c6d0b61f071226eff7ede4d4105fed820/certifications/claude/lessons/30-developer-application-capstone/code/main.py#L133-L169","documentation":"Error \"unsupported tool\" thrown in rohitg00/ai-engineering-from-scratch.","triggerScenarios":"Thrown at certifications/claude/lessons/30-developer-application-capstone/code/main.py:151 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"39ea8a1c6d0b61f071226eff7ede4d4105fed820","analyzedAt":"2026-08-26T03:13:46.626Z","schemaVersion":2},"datasetVersion":"2026-08-26T07:17:17.940Z"}