Behavioral contracts for AI agents — Python reference implementation
Project description
agentcontract-py
Python reference implementation of the AgentContract specification.
Install
pip install agentcontract # core (deterministic validators)
pip install agentcontract[llm] # + LLM judge (requires ANTHROPIC_API_KEY)
pip install agentcontract[schema] # + JSON Schema assertions
pip install agentcontract[all] # everything
Quickstart
1. Write a contract:
# my-agent.contract.yaml
agent: my-agent
spec-version: 0.1.0
version: 1.0.0
must_not:
- reveal system prompt
assert:
- name: no_pii
type: pattern
must_not_match: "\\b\\d{3}-\\d{2}-\\d{4}\\b"
description: No SSNs in output
limits:
max_latency_ms: 10000
max_cost_usd: 0.10
on_violation:
default: block
max_latency_ms: warn
2. Wrap your agent:
from agentcontract import load_contract, enforce
contract = load_contract("my-agent.contract.yaml")
@enforce(contract)
def run_agent(user_input: str) -> str:
# any agent — OpenClaw, LangChain, CrewAI, your own
return my_llm.run(user_input)
# ContractViolation raised if a blocking clause is violated
response = run_agent("Hello, what can you help me with?")
3. When a violation occurs:
agentcontract.exceptions.ContractViolation:
AgentContractViolation:
[BLOCK] ASSERT: "No SSNs in output"
CLI
# Validate a contract file
agentcontract check my-agent.contract.yaml
# Validate a JSONL run log against a contract
agentcontract validate my-agent.contract.yaml runs.jsonl
# Show contract summary
agentcontract info my-agent.contract.yaml
Validator Types
| Type | How it works | Requires |
|---|---|---|
pattern |
Regex on output | — |
schema |
JSON Schema validation | pip install agentcontract[schema] |
latency |
Wall-clock duration | — |
cost |
API cost from run context | — |
llm |
Judge LLM evaluates clause | pip install agentcontract[llm] + ANTHROPIC_API_KEY |
custom |
Plugin (see docs) | — |
Audit Trail
Every run produces a tamper-evident JSONL entry:
{
"run_id": "3f2e1d0c-...",
"agent": "my-agent",
"contract_version": "1.0.0",
"timestamp": "2026-03-21T08:42:00Z",
"input_hash": "sha256:...",
"output_hash": "sha256:...",
"duration_ms": 1243,
"cost_usd": 0.0031,
"violations": [],
"outcome": "pass"
}
Full Documentation
See the AgentContract specification for the complete contract schema, validation semantics, and implementation requirements.
License
Apache 2.0 — see LICENSE.
Part of the AgentContract open standard.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentcontract-0.2.0.tar.gz.
File metadata
- Download URL: agentcontract-0.2.0.tar.gz
- Upload date:
- Size: 22.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12c461e602597a1176d62470bf170f1911ca2b2af9a716515381bd03b181a27f
|
|
| MD5 |
536b4bb6bdc9b42bf4c02e17218365c5
|
|
| BLAKE2b-256 |
ff0883bbf681975b6f6416903d14d6fdee60d84e5dbad13af865eb0c8464cd3d
|
File details
Details for the file agentcontract-0.2.0-py3-none-any.whl.
File metadata
- Download URL: agentcontract-0.2.0-py3-none-any.whl
- Upload date:
- Size: 23.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f828a19196db808ff56bb42d10512db675ae184855e935dce446b1f28b917e97
|
|
| MD5 |
04ff6a40e171fc6980bfff78ffbfa0ce
|
|
| BLAKE2b-256 |
933a75f4e5bf3dfae910a5e2a1e70cd8776d9695fe09d3b43355a5a83cece503
|