trustline-agent-sdk (Python)
Python SDK for AI agents to take and repay revenue-underwritten, uncollateralized USDC credit on TrustLine (Stellar / Soroban).
An agent proves real revenue → TrustLine underwrites it → the agent gets a credit
line it can draw against and repay, all from its own Stellar key. This is the
Python port of the TypeScript @trustline-agents/agent-sdk; the
two speak the same backend API and on-chain contracts.
pip install trustline-agent-sdk
Quickstart
from stellar_sdk import Keypair
from trustline import TrustLineAgent
# An agent holds its own Stellar key.
tl = TrustLineAgent(
Keypair.random().secret,
api_base_url="https://trustline.onrender.com",
)
tl.register() # one-time, on-chain
result = tl.underwrite(skip_proof=True) # backend scores + publishes on-chain
print(result["score"])
terms = tl.credit_line() # on-chain read (simulate-only)
print(terms) # CreditTerms(tier=..., limit_usdc=..., apr_bps=...)
if terms.limit_usdc > 0:
tl.borrow(1) # draw 1 USDC against the line
# ...do paid work...
tl.repay(1) # interest first (lender yield), then principal
A full runnable walkthrough (fresh keypair → Friendbot → faucet → register →
underwrite → borrow → repay) lives in examples/quickstart.py.
API
Construct with the agent's secret; contract ids are auto-resolved from the
backend /config unless you pass them explicitly.
TrustLineAgent(
secret,
*,
rpc_url=None, # Soroban RPC (default: testnet)
network_passphrase=None, # default: testnet
api_base_url=None, # TrustLine backend (default: http://localhost:8787)
contracts=None, # {"registry","creditLine","vault"} — else from /config
)
Underwriting (delegated to the backend)
| method | what it does |
|---|---|
revenue(from_ledger=None) |
live x402 revenue index for this agent |
underwrite(skip_proof=False, from_ledger=None) |
full pass: revenue → proof → score → publish |
onboard(skip_proof=False, from_ledger=None) |
register() then underwrite() |
On-chain reads (simulate-only)
| method | returns |
|---|---|
credit_line() |
CreditTerms(tier, limit_usdc, apr_bps) |
vault_state() |
VaultState(liquidity_usdc, principal_usdc, amount_owed_usdc, total_assets_usdc, yield_pool_usdc, limit_usdc, apr_bps) |
available_credit_usdc() |
remaining drawable credit (USDC) |
usdc_balance_usdc() |
this agent's spendable USDC |
On-chain writes (signed by the agent's key)
| method | what it does |
|---|---|
register() |
register in the score registry (one-time) |
borrow(usdc) |
draw against the credit line |
repay(usdc) |
repay (interest → lender yield, then principal) |
deposit(agent_address, usdc) |
LP: supply liquidity into another agent's isolated vault |
Each returns a TxResult(tx_hash, return_value, explorer_url).
Draw-on-402
resp = tl.pay_with_credit(url, price_usdc, max_draw=None, method="GET")
Pay for an x402-priced resource, auto-drawing any shortfall
from the credit line first. The agent never "decides to borrow" — it just
transacts, and the line silently covers what its cash can't. Returns a
requests.Response. Pass json_body=..., data=..., and headers=... for POST
bodies. This implements the x402 exact-Stellar scheme (SEP-41 transfer,
facilitator-sponsored) directly, so no extra dependency is required.
Errors
All SDK errors subclass TrustLineError:
ValidationError— bad input (amount, address).ApiError— backend returned non-2xx (.status,.method,.path,.body).TxError— an on-chain tx failed to simulate/submit/confirm (.contract_method,.detail).MaxDrawExceededError—pay_with_creditwould draw pastmax_draw(.need,.max_draw).
Pure helpers
to_stroops, from_stroops (USDC ↔ 7-decimal stroops), is_valid_stellar_address,
and credit_shortfall_usdc (the draw-on-402 math) are exported and unit-tested.
Development
pip install -e ".[dev]"
pytest
License
MIT
Metadata
Release files for trustline-agent-sdk 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| trustline_agent_sdk-0.2.0.tar.gz | 14.9 kB | Without provenance | Details for trustline_agent_sdk-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| trustline_agent_sdk-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for trustline_agent_sdk-0.2.0-py3-none-any.whl |
Total release size: 29.2 kB
Release files / trustline_agent_sdk-0.2.0.tar.gz
| Download URL | trustline_agent_sdk-0.2.0.tar.gz |
|---|---|
| Size | 14.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
042616bd936bd7df60db6d317db3b9678e7cab827db2dd23cf12be07f5a3b00d
|
|
BLAKE2b-256 checksum How to use checksums |
fae4bf3ad5f4e373aeff31213928b7c6b2c84362486d52e538ce01684258606a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / trustline_agent_sdk-0.2.0-py3-none-any.whl
| Download URL | trustline_agent_sdk-0.2.0-py3-none-any.whl |
|---|---|
| Size | 14.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f06309908448295ac0c2a1a316234b703d38564ede26022d1e3eecb84cb5915d
|
|
BLAKE2b-256 checksum How to use checksums |
691a9ec0d6973a4874bd2da11ae60da7c52d40faaa1f9db6e5424defb0ca05f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Security for trustline-agent-sdk 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.