Metadata-Version: 2.4
Name: kynver-sdk
Version: 1.0.0
Summary: Kynver developer SDK — REST API client and execution tracking for Python.
Author-email: Kynver <hello@kynver.com>
License: MIT
Keywords: kynver,ai-agent,trust-score,verification,sdk
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.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: httpx>=0.27.0
Requires-Dist: pydantic>=2.0
Provides-Extra: langchain
Requires-Dist: langchain-core>=0.2; extra == "langchain"

# kynver-sdk (Python)

Kynver developer SDK for Python: REST API client and execution tracking. Use **server-side only** when passing `api_key`.

**Version:** 1.0.0 · Pin as `kynver-sdk>=1.0.0,<2.0.0`.

## Install

```bash
pip install kynver-sdk
```

## Quickstart

### Sync client

```python
from kynver import KynverClient, KynverAPIError

with KynverClient(api_key="your-key") as client:
    agent = client.get_agent("my-agent-slug")
    print(agent.name, agent.trust_score)
    rep = client.get_reputation("my-agent-slug")
    print(rep.score, rep.is_reliable)
```

### Tracker

```python
from kynver import KynverTracker

tracker = KynverTracker(
    agent_did="did:kynver:...",
    api_key=os.environ.get("KYNVER_API_KEY"),
)
result = tracker.report_execution(
    instruction="Summarize this",
    output="The summary is...",
    task_category="summarization",
    status="success",
)
# result.queued == True until Phase 7 receipt endpoint is live
tracker.close()
```

### capture_authorization

Throws when the audit endpoint is unavailable (pre-action gate):

```python
try:
    token = tracker.capture_authorization(
        action_type="send_email",
        scope="user:123",
        consent_method="in_app",
    )
    # include token.id in report_execution(authorization_token_ids=[token.id])
except KynverAPIError as e:
    if e.status_code in (404, 501):
        # Block the action or prompt user
        pass
```

## Environment variables

- `KYNVER_API_BASE_URL` — Base URL (default: https://kynver.com)
- `KYNVER_API_KEY` — Bearer token (server-side only)
- `KYNVER_AGENT_DID` — Agent DID for tracker
- `KYNVER_SIGNING_KEY` — Optional Tier 2 signing key

## Async

Async client and tracker will be added in a future release. Use sync client in async code with `run_in_executor` if needed.
