Metadata-Version: 2.4
Name: detecte
Version: 0.1.1
Summary: Runtime security for AI agents — Python SDK for detecte.xyz
Project-URL: Homepage, https://detecte.xyz
Project-URL: Documentation, https://docs.detecte.xyz
Project-URL: Repository, https://github.com/detecte-xyz/detecte-python
Project-URL: Issues, https://github.com/detecte-xyz/detecte-python/issues
Author: Detecte
License: MIT
License-File: LICENSE
Keywords: agents,ai,kya,llm,policy,runtime,security
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Security
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Requires-Dist: httpx>=0.25
Requires-Dist: pydantic>=2.0
Requires-Dist: typing-extensions>=4.5
Provides-Extra: dev
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: respx>=0.21; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Description-Content-Type: text/markdown

# detecte (Python)

[![PyPI](https://img.shields.io/pypi/v/detecte.svg)](https://pypi.org/project/detecte/)
[![Python](https://img.shields.io/pypi/pyversions/detecte.svg)](https://pypi.org/project/detecte/)

Runtime security for AI agents. The Python SDK for [detecte.xyz](https://detecte.xyz) — a one-to-one
companion to [`@detecte/sdk`](https://www.npmjs.com/package/@detecte/sdk).

## Install

```bash
pip install detecte
```

## Quickstart

```python
import os
from detecte import Detecte

detecte = Detecte(api_key=os.environ["DETECTE_API_KEY"])

decision = detecte.verify(
    agent="support_bot",
    action="refund_order",
    params={"order_id": "ord_8821", "amount": 49.99},
)

if not decision.allowed:
    raise RuntimeError(f"Blocked: {decision.reason}")
```

## Async

```python
from detecte import AsyncDetecte

async def main():
    detecte = AsyncDetecte(api_key="sk_test_...")
    decision = await detecte.verify(agent="bot", action="x")
    print(decision.allowed)
```

## Resources

- `detecte.agents.list() / .get(id) / .create(...)`
- `detecte.policies.list() / .create(...) / .dry_run(policy=..., sample_size=1000)`
- `detecte.incidents.list() / .resolve(id)`
- `detecte.audit.list(...)`
- `detecte.approvals.get(decision_id) / .wait(decision_id)`
- `detecte.scans.run(agent=..., system_prompt=...)`

## Webhooks

```python
from detecte import verify_webhook, WebhookVerificationError

try:
    verify_webhook(
        payload=raw_body,
        signature=request.headers["Detecte-Signature"],
        secret=os.environ["DETECTE_WEBHOOK_SECRET"],
    )
except WebhookVerificationError:
    return Response(status=401)
```

## LangChain integration

```python
from detecte import Detecte
from detecte.integrations.langchain import DetecteCallbackHandler

detecte = Detecte()
handler = DetecteCallbackHandler(detecte=detecte, agent_id="agent_xxx")
executor = AgentExecutor.from_agent_and_tools(
    agent=...,
    tools=...,
    callbacks=[handler],
)
```

## License

MIT — copyright Detecte, Inc.
