Metadata-Version: 2.4
Name: verdicter
Version: 1.0.1
Summary: Runtime security for AI agents — evaluate tool calls against policies in real time
Project-URL: Homepage, https://verdicter.dev
Project-URL: Documentation, https://docs.verdicter.dev
Project-URL: Repository, https://github.com/QuackaDuck/arbiter-app
Author: Verdicter
License: MIT
Keywords: agents,ai,policy,runtime,sdk,security,verdicter
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.24.0
Provides-Extra: dev
Requires-Dist: hatch; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: pytest-asyncio; extra == 'dev'
Requires-Dist: respx; extra == 'dev'
Provides-Extra: langchain
Requires-Dist: langchain-core>=0.1.0; extra == 'langchain'
Description-Content-Type: text/markdown

# verdicter

**Runtime security for AI agents.** Evaluate every tool call against your policies - get ALLOW, DENY, or ESCALATE in under 50ms.

[![PyPI version](https://img.shields.io/pypi/v/verdicter)](https://pypi.org/project/verdicter/)
[![Python versions](https://img.shields.io/pypi/pyversions/verdicter)](https://pypi.org/project/verdicter/)
[![license](https://img.shields.io/pypi/l/verdicter)](./LICENSE)

→ **[Get your free API key at verdicter.dev](https://verdicter.dev)**

---

## Install

```bash
pip install verdicter
```

With LangChain support:

```bash
pip install "verdicter[langchain]"
```

---

## Quick start

```python
import asyncio
from verdicter import Verdicter

client = Verdicter(api_key="verdicter_live_...")

async def main():
    result = await client.evaluate(
        agent_id="support_bot",   # registered in your Verdicter dashboard
        tool="send_email",
        payload={"to": user_email, "subject": subject, "body": body},
    )

    if result.decision == "ALLOW":
        await send_email(payload)
    elif result.decision == "DENY":
        raise PermissionError(f"Blocked: {result.reason}")
    elif result.decision == "ESCALATE":
        await request_human_approval(payload)
```

---

## Wrap a function

Zero per-call boilerplate - evaluation happens automatically on every invocation:

```python
from verdicter import Verdicter, WrapOptions

client = Verdicter(api_key="verdicter_live_...")

safe_send_email = client.wrap(
    "send_email",
    send_email,
    WrapOptions(agent_id="support_bot"),
)

# Policy enforcement is automatic
await safe_send_email(to=user_email, subject=subject, body=body)
```

---

## LangChain adapter

```python
from verdicter import Verdicter
from verdicter.adapters.langchain import wrap_tools
from langchain_core.tools import tool

client = Verdicter(api_key="verdicter_live_...")

@tool
def send_email(to: str, subject: str, body: str) -> str:
    """Send an email."""
    ...

# Wrap your tools - every invocation goes through Verdicter
safe_tools = wrap_tools([send_email], client, agent_id="support_bot")

agent = create_react_agent(llm=llm, tools=safe_tools)
```

---

## Configuration

```python
client = Verdicter(
    api_key="verdicter_live_...",
    timeout=5.0,        # seconds, default 5.0
    max_retries=2,      # default 2
    fail_open=False,    # if True, ALLOW on network errors (default: False = fail closed)
)
```

---

## Decisions

| Decision | Meaning |
|----------|---------|
| `ALLOW` | Policy passed - run the tool |
| `DENY` | Policy blocked it - don't run |
| `ESCALATE` | Needs human review - route to your approval flow |

---

## Links

- [Sign up free → verdicter.dev](https://verdicter.dev)
- [Dashboard → app.verdicter.dev](https://app.verdicter.dev)
- [Documentation → docs.verdicter.dev](https://docs.verdicter.dev)
- [npm package → npmjs.com/package/verdicter](https://www.npmjs.com/package/verdicter)

---

MIT License © [Verdicter](https://verdicter.dev)
