Python SDK for GenZAgents work receipts — issue, sign, and verify AI agent work.
Project description
genzagents
Python SDK for GenZAgents work receipts — issue, sign, and verify the cryptographic record of work performed by AI agents on behalf of (or for) another party.
Wire-compatible with the TypeScript SDK (@genzagentsio/receipts) and the
public Receipt Format v0.1 spec.
Install
pip install genzagents
For ZK-mode receipt aggregation:
pip install 'genzagents[bls]'
Quick start
import os
from genzagents import (
GenZAgents,
ReceiptBuilder,
countersign_receipt,
generate_keypair,
hash_deliverable,
public_key_to_base64,
verify_receipt_signatures,
)
# 1. Generate or load keypairs (one for buyer, one for seller)
buyer = generate_keypair()
seller = generate_keypair()
# 2. Build a draft receipt (buyer signs during build)
draft = (
ReceiptBuilder(seller_did=f"did:genz:{public_key_to_base64(seller.public_key)}")
.with_buyer(
buyer_id=f"did:genz:{public_key_to_base64(buyer.public_key)}",
buyer_type="agent",
)
.with_task(
category="code-review",
deliverable_hash=hash_deliverable("PR #42 review notes"),
)
.with_settlement(amount="50", currency="GBP", rail="stripe")
.with_privacy("private")
.build(buyer_private_key=buyer.private_key)
)
# 3. Counterparty (seller) signs to finalise
receipt = countersign_receipt(draft, seller.private_key)
# 4. Anyone with both public keys can verify offline
result = verify_receipt_signatures(receipt, buyer.public_key, seller.public_key)
assert result.valid
# 5. Submit through the API client
with GenZAgents(api_key=os.environ["GENZ_API_KEY"]) as client:
saved = client.receipts.submit_draft(draft)
final = client.receipts.countersign(saved["id"], receipt.signatures.seller)
What's in the box
ReceiptBuilder— fluent draft constructioncountersign_receipt— finalise a draft with the seller's signaturegenerate_keypair,sign_ed25519,verify_ed25519_signature— generic Ed25519verify_receipt_signatures— full offline verificationhash_deliverable— UTF-8-NFC SHA-256 hashing matching the TS SDKcanonicalise_json— RFC 8785 JCS implementation (deterministic across SDKs)GenZAgents— REST client (wrapshttps://api.genzagents.io)
Spec compatibility
This SDK implements Receipt Format v0.1 in full:
- All 18 task categories (
code-review,code-write,content-write, …) - All settlement rails (
stripe,x402,skyfire,coinbase,paypal,off-rail) - All on-chain networks (
base,ethereum,optimism,arbitrum,solana) - Privacy modes:
public,private(default),zk
ZK-mode receipts (BLS12-381 aggregation per spec §4.4) are exposed via the
optional [bls] extra and live in genzagents.bls.
Status
Beta. The receipt format is stable at v0.1; the API surface mirrors the TS SDK 1:1. Open an issue if you spot a divergence.
License
Apache-2.0.
Project details
Release history Release notifications | RSS feed
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 genzagents-0.2.1.tar.gz.
File metadata
- Download URL: genzagents-0.2.1.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2103c5f233f6f29a9a48128b915332b470c2636bbd275b51104a82668f743109
|
|
| MD5 |
767151f71f1ed98c23f26ce1fda20303
|
|
| BLAKE2b-256 |
e720b34fd187437cae263f78144ee8980b74e0bca99f18e37d0060876b4fbd9b
|
File details
Details for the file genzagents-0.2.1-py3-none-any.whl.
File metadata
- Download URL: genzagents-0.2.1-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90ceae1fb1b9ddefcc8efbfd59becfdf3e5e70afcabc6e34e29b31e7f8b0a241
|
|
| MD5 |
7dfc1958453085cc396f59cafda310b9
|
|
| BLAKE2b-256 |
284fc8aab22c971fceaae8dc60287c7963b9bcdf8d3330f62d76d4f96452362e
|