Wraps any MCP server: identical write-tool calls run once, and every tool call is audit-logged.
Runs on your machine from its package; the steps are below.

At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
uvx agentraas
MCP client config
{
"mcpServers": {
"agentraas-wrap": {
"command": "uvx",
"args": [
"agentraas"
]
}
}
}
The reliability layer for what AI agents do.
AgentRaaS sits between your agents and the APIs they act on. Every call runs once even when it is retried, is checked against what that agent may do, waits for a human when it is risky, and is recorded. Connect by webhook URL, SDK headers or MCP. Free to self-host with every feature.
Your n8n workflow calls Stripe. It times out, n8n retries, and the customer is charged twice. Your agent creates a HubSpot contact, the response is lost, the agent retries, and now there are two.
flowchart LR
Agent["Agent<br/>(n8n, Python, MCP)"] -->|request| P
subgraph P["AgentRaaS"]
direction TB
D["Deduplicate"] --> V["Policies and validation"] --> C["Circuit breaker"] --> A["Audit log"]
end
P -->|forwarded once| API["API<br/>(Stripe, Twilio, HubSpot, any URL)"]
409 while the first is still in flight.A call that times out after it was sent is treated as outcome unknown:
never retried, its slot kept, sent to the dead-letter queue. Every forwarded
call also carries Idempotency-Key: agentraas-<hash>, so providers that honor
it (Stripe and others) run it once even on a replay.
pip install agentraas runs entirely on your machine.
agentraas chaos --mock -- python my_agent.py # find calls that would run twice
from agentraas.local import exactly_once
@exactly_once()
def charge(customer, amount, idempotency_key=None):
return stripe.Charge.create(customer=customer, amount=amount, idempotency_key=idempotency_key).id
protect_tool for LangChain/LangGraph and CrewAI, protectTools for the
Vercel AI SDK (npm install agentraas).agentraas wrap -- <mcp server> gives any MCP server exactly-once write
tools and a log. In the official MCP Registry.Details: src/sdk/README.md, src/sdk-js.
git clone https://github.com/sumedhchatse/agentraas.git
cd agentraas
./install.sh
install.sh generates the secrets, builds the image (the first Rust build
takes a few minutes), starts Postgres, Redis and MinIO, and runs the
migrations. Then open http://localhost:13001/dashboard and register.
Kubernetes: a Helm chart is in infra/helm/. Render: one-click deploy.
On SELinux hosts, install.sh relabels the bind mounts. After changing files
by hand, recreate (podman-compose down && up -d) rather than restart.
Curated services (Stripe, Twilio, HubSpot, Shopify, Slack, PayPal and more in
config/services.json), or register any URL as a Custom Action, SSRF-guarded.
If you only call Stripe from your own code, its Idempotency-Key is enough.
AgentRaaS is for the rest: providers without one (most SaaS APIs and every
internal endpoint), no-code tools that can't set headers (n8n, Make, Zapier),
and one audit trail across every service an agent touches.
It fails closed. Nothing in the SDKs, the n8n node or the MCP gateway falls back to calling the API directly, because that is exactly the unguarded retry this product exists to stop. Treat it like a database on your critical path.
Latency: 2.1 to 2.4 ms added at the median, 2.9 to 3.7 ms at p95, measured
on one machine (Intel Core i3-12100, local stack, three runs of 500 calls) with
infra/scripts/bench-overhead.py. A retried duplicate is answered from cache.
Open source and free to self-host, with every feature, for any use inside your company, no action limit. AgentRaaS Cloud at agentraas.io runs it for you, pay as you go: every feature, the first 500 actions each month free, then $1 per 1,000 actions that run (duplicates, blocked calls and approval waits are never billed), up to a monthly cap you set. Paid usage opens soon; until then Cloud accounts get the free 500 a month. No plans or tiers.
cd src/api-gateway-rs
cargo test --workspace --features enterprise # unit tests
TEST_BASE_URL=http://localhost:13001 npm test # integration tests, real server
The integration tests send concurrent duplicates, replays and failures
through the built-in mockpay service, so no real API keys are needed.
mockpay so far).agentraas.io/docs has the API, the troubleshooting guide and self-hosting details.
The server is AGPL-3.0; its advanced features (SSO, approvals, DLP:
crates/api/src/ee/, crates/core/src/{dlp,hmac_verify}.rs,
compose.ee.yaml) are under the
Functional Source License, free for any use except a competing hosted service
and Apache-2.0 two years after each release. The SDKs are MIT/Apache-2.0.
See LICENSE.md.
CONTRIBUTING.md · SECURITY.md (report vulnerabilities privately, not as issues) · CODE_OF_CONDUCT.md
Built with Rust (Axum, Tokio, sqlx), Postgres and Redis.