agentraas (Python SDK)
Exactly-once execution for AI agents — a thin, dependency-light wrapper around AgentRaaS's SDK-style REST gateway. If your agent code calls Stripe, Twilio, HubSpot, or any other API directly, wrap it with this client so a retry — yours, your framework's, or a flaky network — never becomes a duplicate charge, a duplicate contact, or a duplicate message.
Works against any AgentRaaS deployment: self-hosted (./install.sh,
free and unlimited on every tier) or AgentRaaS Cloud.
Install
pip install agentraas
Quickstart
- Connect an agent from your AgentRaaS dashboard (+ Connect Agent) —
this gives you an
agentraas_key, plus yourorg_idandagent_id. - Add credentials for the service you're calling (Credentials panel) — AgentRaaS forwards to the real API using those, you never pass a raw upstream API key through this SDK.
import agentraas
client = agentraas.Client(
agentraas_key="ar_live_...",
org_id="acme-corp",
agent_id="billing-bot",
base_url="http://localhost:13000", # or your Cloud/self-hosted URL
)
result = client.call("stripe", "charge.create", {"amount": 5000, "currency": "usd"})
Or with dot-notation sugar:
stripe = client.service("stripe")
result = stripe.charge.create({"amount": 5000, "currency": "usd"})
Calling a Custom Action you've registered:
result = client.custom("my-internal-webhook", {"foo": "bar"})
Why org_id / agent_id matter
Omit them and every untagged SDK caller shares one unenforced identity server-side — your per-agent rate limit and audit trail won't tell your traffic apart from anyone else's. Set them once you've connected an agent from the dashboard; it takes two extra kwargs.
Retries are safe
AgentRaaS claims an atomic dedup slot server-side before forwarding
anything. If client.call(...) raises because of a timeout or a dropped
connection, calling it again with the same payload is safe — it either
completes normally or returns the cached result from the call that
actually went through. This SDK doesn't retry automatically; your own
retry logic (or your agent framework's) can be as aggressive as you want.
Error handling
from agentraas import AgentRaaSError
try:
client.call("stripe", "charge.create", {"amount": 5000, "currency": "usd"})
except AgentRaaSError as err:
print(err.status_code, err.req_id, str(err))
License
MIT — see LICENSE. (The AgentRaaS server itself is open-core; see the main repo for its licensing.)
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 agentraas-0.2.0.tar.gz.
File metadata
- Download URL: agentraas-0.2.0.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb282ff1ae5544409c1d26f16804d48b94b00fdbc6a8e65ed2b5d81c5b4c6d57
|
|
| MD5 |
a0331da4fcbcb83468b3dfa493b10af1
|
|
| BLAKE2b-256 |
d415541a516e82234a82c29d415d2c6f95f9fabf52472c77bb9008d0aecfd95e
|
File details
Details for the file agentraas-0.2.0-py3-none-any.whl.
File metadata
- Download URL: agentraas-0.2.0-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2dab95f6657dcd38d48ce27194f8fc17808f2065915171cfd9ec8b2f55bb05ab
|
|
| MD5 |
68fa0f288b2d7e501dabdf69c400d1fa
|
|
| BLAKE2b-256 |
845ccacb9f452117bad121641c740a4b6a1464ed7ca899d7f0b3a29a9210bb8b
|