Skip to main content

fianza-agent-sdk (Python)

Python SDK for AI agents to take and repay revenue-underwritten, uncollateralized USDC credit on Fianza (Stellar / Soroban).

An agent proves real revenue → Fianza 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 @fianza/agent-sdk; the two speak the same backend API and on-chain contracts.

PyPI

pip install fianza-agent-sdk

Quickstart

from stellar_sdk import Keypair
from fianza import FianzaAgent

# An agent holds its own Stellar key.
tl = FianzaAgent(
    Keypair.random().secret,
    api_base_url="https://trustline-rpxt.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.

FianzaAgent(
    secret,
    *,
    rpc_url=None,               # Soroban RPC (default: testnet)
    network_passphrase=None,    # default: testnet
    api_base_url=None,          # Fianza 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 FianzaError:

  • 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_credit would draw past max_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 fianza-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)

Source distribution for fianza-agent-sdk 0.2.0
File Size Uploaded Provenance Actions
fianza_agent_sdk-0.2.0.tar.gz 15.2 kB Without provenance Details for fianza_agent_sdk-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for fianza-agent-sdk 0.2.0
File Interpreter ABI Platform Actions
fianza_agent_sdk-0.2.0-py3-none-any.whl Python 3 none any Details for fianza_agent_sdk-0.2.0-py3-none-any.whl

Total release size: 29.8 kB

Release files / fianza_agent_sdk-0.2.0.tar.gz

Download URL fianza_agent_sdk-0.2.0.tar.gz
Size 15.2 kB
Tags Source
SHA-256 checksum
How to use checksums
444361229e30d9d242299d2ccb65c9bce925ad43cbacbe945d03c40703450684
BLAKE2b-256 checksum
How to use checksums
798e71533004c2dc1aaad9a96749798ffb56dea1db90ef1fda92d67564b8d031
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / fianza_agent_sdk-0.2.0-py3-none-any.whl

Download URL fianza_agent_sdk-0.2.0-py3-none-any.whl
Size 14.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e376631da8e6169841e9d336938f9cfdaec790c108beaf29da6896c106e07689
BLAKE2b-256 checksum
How to use checksums
a7d1af97a3b3b15931722123703d7b14bd6fdbceeeb58c1bc2445218aefc8a91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Security for fianza-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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page