once MCP server
Run a side effect exactly once under retries, redelivery, and concurrent workers.
0 stars17 downloads/wk
Reviews
Write oneNobody has reviewed once yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
once tools (4)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
once_beginAsk permission to run a side-effecting action exactly once.
once_completeReport that the action succeeded; stores `result` for future replays.
once_failReport that the action failed. allow_retry=True frees the key so a later attempt may execute; allow_retry=False records a terminal failure that future once_begin calls will replay as 'failed_previously'.
once_heartbeatExtend the lease while a long action is still genuinely running, so no other attempt takes it over mid-flight. Call every ~15s for multi-minute work. False means the lease is no longer yours — STOP the work; another attempt owns the action now.
Public scan report
scanner v0.1.10 · 2026-11-04 · same rubric, same numbers if you re-run it
- Code scan12 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 85 days ago12/15
- Maintainer identityregistry namespace matches repository owner6/10
How once compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 85/100
- higher than 70% of 48,243 servers
- Tools
- 4
- the typical server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- Downloads a week
- 17
- more than 5% of 12,306 servers with a package
What its tools let an agent do: 4 read
Install once in Claude Code, Cursor or VS Code
claude mcp add once-kernel -- uvx once-kernel
What the publisher says
From the once repository's README, as published. We do not edit it. Read it on GitHub
once
<!-- mcp-name: io.github.aurumflux20/once-kernel -->
Run any side effect exactly once — even when 1,000 callers demand it at the same instant.
⚡ once — STORM DEMO
1,000 concurrent attempts to charge order #777 ($49.00)
ACTUAL EXECUTIONS : 1 ← the whole point
served same answer : 1,000 / 1,000
elapsed : 0.1s
💰 double-spend prevented this run: $48,951.00That's not a mock — it's a live attack you can run right now:
pip install once-kernel
python -m once.demoThe problem
Networks retry. Users double-click. Queues redeliver. AI agents re-fire tools at machine speed. Any of these turns one payment into two, one email into three, one server into two hundred.
Most teams hand-roll an idempotency table — and most of those are quietly broken under concurrent load: two identical requests both pass the "already done?" check, then both execute. The bugs are subtle, the failures are money.
once is that table done right, once, for everyone — a tiny idempotency kernel with the four defenses hand-rolled versions miss:
- Atomic leader election — concurrent duplicates can't all pass the check; exactly one executes, the rest coalesce onto its result.
- Payload fingerprinting (RFC 8785) — same key with a different body is a hard IdempotencyConflict, never someone else's cached answer.
- Fence tokens + generations — a crashed worker's lease can be taken over, and when the "dead" worker wakes up late, it is locked out of corrupting the record.
- Honest failure states — a failed attempt frees the key for retry; an unknown outcome never silently re-runs.
Use it
from once import Once
o = Once()
def charge():
return gateway.charge(order_id="ord_1", amount_cents=4900)
# Retries, double submits, webhook redelivery, agent fan-out → runs ONCE
result = o.run("pay:ord_1", {"order": "ord_1", "amount_cents": 4900}, charge)One box, several processes, no database server — SQLite, nothing to install:
from once import Once
from once.sqlite import SqliteStore
o = Once(SqliteStore("/var/lib/myapp/once.db")) # schema auto-createdSurvives restarts and works across processes (WAL mode). The default MemoryStore does neither — it is per-process, so the moment you run a second worker each one keeps its own private idea of what already ran, and the guard silently stops guarding.
Several machines — share state through the Postgres you already run:
from once import Once
from once.pg import PostgresStore
o = Once(PostgresStore("postgresql://user:pass@host/db")) # table auto-createdAsync (FastAPI, agents) — sync side effects go to a worker thread, waiters park on the event loop (no thread-pool starvation under duplicate storms; there's a test that proves it):
from once import AsyncOnce
ao = AsyncOnce()
result = await ao.run("pay:ord_1", payload, charge)→ The full 5-minute guide
What you can rely on
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
once: common questions
- Is once MCP server safe?
- Yes, by our scan: it is graded A (85/100). Read the once safety report
- How do I install once?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does once need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is once maintained?
- The last commit was 86 days ago (2026-08-12). The latest release is v0.2.1.
- How does once compare with other MCP servers?
- safety score 85/100 (higher than 70% of 48,243 servers); tools 4 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.