AgentRaaS
New: free CLI, Python library and MCP wrapper, no server needed →

A reliability layer between AI agents and the APIs they call.

Every call claims a slot in Redis (SET NX) before it is forwarded, so a retry or a parallel duplicate gets the first result back instead of a second charge. Policies, spend caps and human approval decide whether a call runs at all. Every decision is written to Postgres and exported to Prometheus and OpenTelemetry. Self-hosted and open source; about 2 ms added per call.

Open source: AGPL-3.0 server, MIT/Apache SDKs Any HTTP API or MCP tool Self-hosted: your keys never leave your servers
terminal
$ pip install agentraas
$ agentraas-chaos --mock -- python agent.py
agentraas-chaos: 6 write requests, 3 responses dropped after execution

  DUPLICATES: 1 action(s) executed more than once

    2x  POST /v1/charges  (body sha256 623f14d1b00d)

  Fix: ...

  Protected by an idempotency key: 2 retries
$ echo $?
1

Real output (fix suggestion shortened): the chaos tester run against a small sample agent that retries on network errors.

Works alongside (compatible with, not affiliated)
n8nFlowiseLangflowDifyLangChainCrewAIAutoGenClaude DesktopCursorMakeZapierOllamaLocalAI
Built for self-hosters

Not another SaaS gateway. A drop-in layer for the stack you already run.

Teams run n8n, Flowise, Langflow, Dify, Ollama and LocalAI on their own Docker infrastructure to cut SaaS fees and stay inside GDPR / EU AI Act data-residency rules. AgentRaaS sits inside that stack: one more Docker Compose service, zero data leaving infrastructure you control.

Reliability

Every write executes exactly once

Retries, timeouts and parallel duplicates get the first result back instead of a second charge, email or record.

Responsibility

Risky calls need a human yes

Refunds over a limit, bulk emails, anything you choose is held for approval in Slack, with budget and loop limits on every agent.

Accountability

One audit trail across services

Which agent called what, when, and with what result, across Stripe, your CRM and your own endpoints, in one log.

8
concurrent identical requests fired
1
executed for real
7
caught as duplicates
2.2ms
p50 added latency, self-hosted
Measured, not estimated: the duplicate counts come from the automated test suite (npm test), the latency from infra/scripts/bench-overhead.py. Clone the repo and run both to reproduce.
Open source · no server

Start in 60 seconds. No account, nothing to deploy.

Three free tools in one package. Find the calls your agent would run twice, fix them with a decorator backed by your own SQLite or Redis, and wrap any MCP server so its write tools run once. Add the server later, when your team wants the dashboard, audit trail and approvals.

1 · FIND agentraas-chaos
terminal
# drops the response to each write after it executes,
# then reports what your code ran twice
$ pip install agentraas
$ agentraas-chaos --mock -- python my_agent.py

  DUPLICATES: 1 action(s) executed more than once
    2x  POST /v1/charges
  Protected by an idempotency key: 2 retries

Exits non-zero on a duplicate, so it fails CI (how it works). GitHub Action: agentraas/agentraas/src/chaos-action@main

2 · FIX @exactly_once
agent.py
from agentraas.local import exactly_once

@exactly_once()  # SQLite by default, or RedisStore
def charge(customer, amount, idempotency_key=None):
    return stripe.Charge.create(
        customer=customer, amount=amount,
        idempotency_key=idempotency_key,  # same on every retry
    ).id

charge("cus_1", 4200)  # runs
charge("cus_1", 4200)  # cached, no second charge

Retries, concurrent duplicates and lost responses covered. Python and TypeScript (npm install agentraas, exactlyOnce).

3 · WRAP agentraas wrap

Put it in front of any MCP server in Claude Desktop, Cursor or any MCP client. An identical call to a write tool inside a 10-minute window returns the first result instead of running again, so a looping agent can't open the same issue or send the same email twice. Read-only tools always run. Every tool call lands in a local audit log.

Not sure which tools to worry about? agentraas scan reads your MCP config and lists the tools that can move money, delete data, run code or message people, without calling any of them. MCP safety scan

Listed in the official MCP Registry as io.github.agentraas/agentraas.

claude_desktop_config.json
{
  "mcpServers": {
    "github": {
      "command": "uvx",
      "args": ["agentraas", "wrap", "--",
               "npx", "-y", "@modelcontextprotocol/server-github"]
    }
  }
}
$ pip install agentraas Read the docs
The problem

Your agent didn't fail. The network did, and nobody told it.

Payment retry

Your n8n workflow hits Stripe. It times out. n8n retries.

The customer is charged twice, and you find out from a support ticket, not a log.

CRM duplicate

Your agent creates a HubSpot contact. The response is lost. It retries.

Two duplicate contacts, a messier pipeline, and a sales team that stops trusting the data.

Client update

Your agent sends a client a status update. The confirmation times out. It retries.

The client gets the same update twice, and starts wondering what else is off.

Team notification

Your agent posts an approval request to Slack. The webhook times out. It retries.

Your team approves the same request twice, or gets paged twice for one incident.

How it works

A dedup slot claimed atomically, before anything real happens.

01

Your agent sends the request to AgentRaaS instead of the API directly.

02

AgentRaaS atomically claims a dedup slot for that exact request in Redis.

03

First call: forwarded to the real API, and the result is cached.

04

Retry or duplicate: the cached result comes back. Never a second real execution.

Why not DIY idempotency keys?

Calling Stripe by hand? Its Idempotency-Key header is enough.

The case for AgentRaaS is narrower: not every provider has native idempotency (Twilio, Slack, most CRMs and your own endpoints don't), no-code tools can't set the header at all, and none of them give you one audit trail across services.

DIY idempotency keysAgentRaaS
Code changesModify every API call, only where the provider supports itChange the URL
No-code supportNot possible: no-code tools can't set custom headersPaste a webhook URL (n8n, Make, Zapier)
Providers without native idempotencyBuild your own dedup logic, per providerOne layer, same guarantee, every service
Multiple servicesDifferent logic per APIAll services, plus any custom endpoint
Credential managementBuild yourselfSelf-serve, encrypted at rest
Validation, circuit breaker, rate limitingBuild yourselfBuilt in
Audit trail, dashboardPer-provider at bestOne trail across every service you call
MCP-native

MCP is how agents call tools now. AgentRaaS speaks it natively.

A stalled MCP tool call gets retried just like a stalled HTTP request: same double-execution risk, different protocol. The MCP gateway applies the same atomic dedup guarantee to every tool call from Claude Desktop, Cursor, LangChain, AutoGen or CrewAI.

Webhook / HTTP

n8n, Make, Zapier or raw curl: change the target URL, nothing else.

POST /proxy/:service/:action

SDK-style REST

A clean per-service REST shape for scripts and internal tools.

POST /v1/sdk/:service/:action

Native MCP

JSON-RPC tool calls from any MCP client.

POST /mcp
MCP idempotency guard · /mcp
# agent calls a tool via MCP
POST /mcp
{"jsonrpc":"2.0","id":"call_82f1","method":"tools/call",
 "params":{"name":"stripe.createCharge",
           "arguments":{"amount":4200,"customer":"cus_9f2k"}}}

→ 200 OK  // first call: forwarded, result cached
{"result":{"status":"success","charge_id":"ch_1N..."}}

# network stalls, agent retries the identical call 400ms later

→ 200 OK  // slot already claimed: cached result, zero re-execution
{"result":{"status":"success","charge_id":"ch_1N...",
           "deduplicated":true}}
When AgentRaaS is down

Fail-closed by design, not fail-silent.

AgentRaaS sits in the request path. If it's unreachable, your call fails; it never silently succeeds un-deduped. There is no fallback anywhere in the SDK, the n8n node or the MCP gateway that quietly calls Stripe or Twilio directly. Routing around an outage would mean the exact retry-storm double charge this product exists to prevent, at the moment you'd least want it. Treat it like any other dependency on your critical path.

Measured, not marketing

Added latency, self-hosted single node (Intel Core i3-12100, 8 GB RAM): 500 sequential calls per run, three runs, real Postgres and Redis.

2.1-2.4msp50, forwarded
2.9-3.7msp95, forwarded
2.1-2.3msp50, duplicate
3.0-3.5msp95, duplicate

That's auth, the dedup claim, spend caps and the audit write, before the request leaves for the real API. A duplicate is answered from cache and never reaches it. Concurrent multi-client throughput numbers aren't published yet.

Where it's used

Any agent. Any workflow. Client-facing or internal.

AgentRaaS doesn't care what your agent is for, only that when it acts, it acts exactly once. If it can call an API, AgentRaaS can protect it.

Customer support agents

Resolve tickets, send replies, trigger refunds without a retry turning into two replies or two refunds.

Sales & CRM agents

Log leads, update deals, enrich contacts in HubSpot or Salesforce once per real event, not once per retry.

Scheduling & client updates

Book meetings, send confirmations, post status updates exactly the number of times you meant to.

Internal team & ops agents

Post to Slack directly, or Microsoft Teams via Custom Actions: trigger approvals and hand off work between systems, SSRF-guarded.

Commerce & fulfillment agents

Update inventory, create orders, notify shipping, protected the same way on Shopify or your own warehouse API.

Automation agencies

Put AgentRaaS in front of every client's Stripe, CRM or messaging API. Each client gets its own tenant with a white-label dashboard.

The platform

What the self-hosted server adds

Run the AgentRaaS server (free to self-host) when a library isn't enough: approvals, agent identity, and one audit trail across every service.

Agent Passport

Short-lived, scope-restricted credentials for each agent. Identity and the reliability guarantees applied to it are issued together and enforced before any action reaches an integration.

Self-serve credentials

Add your own Stripe, Twilio or any provider's keys, encrypted at rest.

Custom Actions

Register any endpoint, SSRF-guarded, and agents can call it too.

MCP native

A JSON-RPC gateway for Claude Desktop, Cursor and any MCP client.

Circuit breaker

Stops hammering a broken upstream. Trips open, recovers automatically.

Full audit trail

Who, what, when, status, duration. Searchable dashboard, CSV export.

Per-agent spend caps

Caps call count per agent, per service, for agents burning through a paid API faster than expected.

Local dev tunnel

Test real inbound webhooks against your machine. One command, live inspector.

Schema drift detection

Alerts the moment a response shape changes, before your agent misreads it.

Integrations

Works with what you already use.

StripeTwilioHubSpotCalendlyShopifyJiraZohoRazorpayWhatsAppZapierMakeAdyenMollieAirwallexXenditPayPalSalesforceSlackKlarnaPaystackGoCardlessOpn PaymentsResendSendGridGitHubNotionZendeskMicrosoft Teams*+ any endpoint

* via Custom Actions: not a pre-built connector, but reachable the same way as any endpoint. Register it once, agents call it by name.

Pricing

Free to self-host. Every team feature included.

For production, run AgentRaaS on your own servers: your API keys and your agents' data never leave them. Self-hosting is free with no action limit and no license key, human approvals and SSO included. AgentRaaS Cloud is the quickest way to try it: a free trial of 1,000 actions with every feature, best with test keys.

Cloud trial

Try it on our servers first
Free
1,000 actions once, every feature, no card.
  • Everything in Self-hosted and Enterprise
  • Nothing to install
  • Best with test or restricted API keys
  • Move to self-hosting any time
Start the free trial

Enterprise

For companies running many agents
Talk to us
Self-hosted with a license key, or on Cloud.
  • Everything in Self-hosted
  • Agent identity (short-lived, scoped agent credentials)
  • Inbound webhook receivers
  • White-label branding per client tenant
  • Unlimited seats, contract and invoicing
Contact us

Self-hosted AgentRaaS has no metering and no phone-home check. On Cloud, duplicates caught, blocked calls and approval waits are never counted. Refunds and cancellation.

The core server is AGPL-3.0. Team and Enterprise features are source-available: Team is free to self-host, Enterprise needs a license key. Full terms in LICENSE.md.

FAQ

Questions people actually ask

The short answers. Full detail is in the docs and LICENSE.md.

Do I need to pay anything?

No. Self-hosting is free, with no action limit and no license key: Community and Team features, human approvals and SSO included. The free tools (library mode, chaos tester, MCP wrap) need no account at all. Only Enterprise features (agent identity, inbound webhooks, white-label, secret references, unlimited seats) need a key; email hello@agentraas.io. Cloud starts with a free trial of 1,000 actions with every feature.

Is self-hosted really unlimited?

Yes. On your own infrastructure there is no cap, no metering and no phone-home check, and Team features need no key. Only Enterprise features need a license key, checked offline inside your server. Only AgentRaaS Cloud is metered, because it runs on our servers.

How does Cloud billing work?

A new Cloud account gets 1,000 actions once, with every feature, no card. Cloud is for trying AgentRaaS; for production, self-host it for free. To keep using Cloud after the trial, the plans are shown under Account in the dashboard. Duplicates AgentRaaS caught, calls blocked by a policy or limit, and calls waiting for approval are never counted. For a contract or SLA-backed support, email hello@agentraas.io.

Is my data safe if I self-host?

Self-hosted means your audit log, credentials, and traffic never leave infrastructure you control. We don't see any of it. Stored credentials are encrypted at rest (AES-256-GCM), PII/DLP redaction can run before anything touches the audit log, and the log is tamper-evident and SIEM-exportable for compliance-sensitive teams.

Do you support n8n, Make, or Zapier?

Yes. No-code tools work the same way code does: point the HTTP Request node at your AgentRaaS URL instead of the API directly. No custom node install required for any of them.

What happens if my agent retries a request?

AgentRaaS claims an atomic dedup slot in Redis before anything real happens. The first call gets forwarded and its result cached; any retry or duplicate, even a concurrent one, gets the cached result back instead of a second real execution. This is tested under real concurrent load, not just claimed (see src/api-gateway-rs/test/dedup.test.js).

Is this open source?

The core is. The server is AGPL-3.0 and the SDKs are MIT/Apache-2.0. The Team and Enterprise features (approvals, SSO, agent identity, inbound webhooks) are source-available: Team features are free to run in production on your own servers, Enterprise features need a license key. Releases up to 0.15.1 keep the Functional Source License they shipped under. See LICENSE.md for the exact terms.

What does "agentgateway-compatible" mean?

agentgateway (a Linux Foundation project) is an edge proxy for AI traffic: auth, RBAC, rate limiting, and observability across all your MCP/tool servers, not just AgentRaaS. If you already run it (or want to), AgentRaaS drops in as a backend behind it with zero code changes on either side. See Getting started for the one-command setup. Most self-hosters don't need this; it matters once you're managing more than one MCP server behind a shared gateway.

Find your agent's duplicate calls in one command.

Free, runs on your machine, nothing to sign up for.