Metadata-Version: 2.4
Name: dorc-client
Version: 0.1.0
Summary: Python SDK for dorc-engine HTTP API
Project-URL: Repository, https://github.com/dorc-io/dorc-clients
Project-URL: Issues, https://github.com/dorc-io/dorc-clients/issues
Author: DORC
License: Apache-2.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
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: Typing :: Typed
Requires-Python: >=3.9
Requires-Dist: httpx>=0.25.0
Requires-Dist: pydantic>=2.6.0
Requires-Dist: tenacity>=8.2.0
Provides-Extra: dev
Requires-Dist: build>=1.2.0; extra == 'dev'
Requires-Dist: pytest-httpx>=0.27.0; extra == 'dev'
Requires-Dist: pytest>=7.4.0; extra == 'dev'
Requires-Dist: ruff>=0.6.0; extra == 'dev'
Requires-Dist: twine>=5.0.0; extra == 'dev'
Description-Content-Type: text/markdown

## dorc-client (Python)

Contract-native Python SDK for DORC.

**Use MCP (JWT) by default.** Engine-direct mode (X-API-Key) is supported only as an explicit advanced option.

### Install

```bash
pip install dorc-client
```

### Environment variables

#### MCP mode (recommended)

- **`DORC_MCP_URL`**: base URL of dorc-mcp (example: `https://dorc-mcp-xxxxx.us-east1.run.app`)
- **`DORC_JWT`** (or `DORC_TOKEN`): JWT bearer token to send as `Authorization: Bearer <token>`

Tenant is derived by MCP from the JWT claims; the SDK **does not** take `tenant_slug` in MCP mode.

#### Engine-direct mode (advanced)

- **`DORC_BASE_URL`** (or legacy `DORC_ENGINE_URL`): base URL of dorc-engine
- **`DORC_TENANT_SLUG`**: required tenant slug (only for engine-direct)
- **`DORC_API_KEY`**: required for engine v0.1 (sent as `X-API-Key`)

### Usage

```python
import os
from dorc_client import DorcClient

os.environ["DORC_MCP_URL"] = "https://your-mcp-url.run.app"
os.environ["DORC_JWT"] = "<your oidc jwt>"

with DorcClient() as c:
    if not c.health():
        raise SystemExit("service not healthy")

    r = c.validate(candidate_content="# Example\n\nHello.")
    print(r.run_id, r.result)
```


