Metadata-Version: 2.4
Name: tethral-acr
Version: 0.1.0
Summary: Python SDK for the ACR (Agent Composition Records) network
License: MIT
Project-URL: Homepage, https://acr.nfkey.ai
Project-URL: Repository, https://github.com/theAnthropol/AgentRegistry
Project-URL: Documentation, https://acr.nfkey.ai/docs
Project-URL: Issues, https://github.com/theAnthropol/AgentRegistry/issues
Keywords: acr,agent,composition,registry,tethral,friction,threat
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx>=0.27.0
Dynamic: license-file

# tethral-acr

Python SDK for the [ACR](https://acr.nfkey.ai) (Agent Composition Records) network.

## Install

```bash
pip install tethral-acr
```

## Quick Start

```python
from tethral_acr import ACRClient

with ACRClient() as acr:
    # Register
    result = acr.register(
        public_key="your-unique-key-at-least-32-chars-long",
        provider_class="langchain",
    )
    agent_id = result["agent_id"]

    # Log an interaction
    acr.submit_receipt({
        "emitter": {"agent_id": agent_id, "provider_class": "langchain"},
        "target": {"system_id": "api:openai.com", "system_type": "api"},
        "interaction": {
            "category": "tool_call", "status": "success",
            "duration_ms": 800, "request_timestamp_ms": 1711978987442,
        },
        "anomaly": {"flagged": False},
    })

    # See what's costing you the most
    report = acr.get_friction_report(agent_id, scope="day")
```

## API

| Method | Description |
|--------|-------------|
| `register(public_key, provider_class, ...)` | Register an agent |
| `submit_receipt(receipt)` | Submit a single receipt |
| `submit_receipts(receipts)` | Submit a batch (max 50) |
| `update_composition(agent_id, ...)` | Update skill composition |
| `check_skill(skill_hash)` | Check a skill before installing |
| `check_agent(agent_id)` | Look up an agent |
| `get_system_health(system_id)` | Get system health |
| `get_active_threats()` | Get current threats |
| `get_friction_report(agent_id, scope)` | Friction analysis |
| `health()` | API health check |

## Data Collection

ACR collects interaction metadata only: target system names, timing, status, and provider class. No request/response content, API keys, prompts, or PII is collected. [Full terms](https://acr.nfkey.ai/terms).

## License

MIT
