mcpbeat Sign in

Ratchet MCP Server

by ratchetgate Your server? Claim it
answering

Ratchet is answering right now. Last checked 11 min ago. 261 installs a week from npm. It exposes 15 tools. Last commit 11 Sep 2026.

Your agent asks before it acts, so the same real-world action is attempted at most once.

Installs per day peak 297 · avg 14
a month agotoday
Uptime history 19 days of history · worst day 99%
19 days agonow
100.0%
Uptime 24h
91 of 91 checks
15
Tools
read from the server
381 ms
Response time
average over 24h
261
Installs / week
npm and PyPI

What changed 26

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 1 September 2026. No other catalogue keeps this.

7 Sep a tool changed version
3 Sep 9 tools disappeared ratchet_check_effect, ratchet_circuit_status, ratchet_effect_receipts and 6 more
3 Sep 9 tools appeared ratchet_extend_lease, ratchet_get_circuit, ratchet_get_effect and 6 more
3 Sep a tool changed the parameters it asks for2 times that day ratchet_begin_effect
3 Sep a tool description was rewritten ratchet_get_policy
3 Sep a tool changed version
2 Sep a tool description was rewritten ratchet_begin_effect
2 Sep a tool changed version
1 Sep a tool appeared ratchet_recall
and 1 more, back to 1 September 2026

What the code does

We read the source, 22 h ago · tools taken from the live server · rules 3dff92dd89df

Capabilities

What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.

File ships in the package but is absent from the source [пакет] bin/ratchet-mcp.mjs:1
этот файл ставится пользователю, но в репозитории его нет

Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.

This code can reach further than it looks

We found places where it runs commands, builds paths or queries from values it is given. None of that is a flaw by itself — it becomes one when the code changes, and code changes quietly between releases. We re-read it on every one.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 11 min ago.

run in your terminal
claude mcp add ratchet --transport http https://ratchetgate.com/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "ratchet": {
      "url": "https://ratchetgate.com/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.ratchet]
url = "https://ratchetgate.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "ratchet": {
      "url": "https://ratchetgate.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "ratchet": {
      "url": "https://ratchetgate.com/mcp"
    }
  }
}

This one needs environment variables set before it will start: RATCHET_API_KEY (Ratchet API key. Create one free at https://ratchetgate.com/console), RATCHET_BASE_URL (Override to point at a self-hosted instance.). The author declared them in the registry entry; get the values from the project itself.

Available tools 15

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

ratchet
ratchet_begin_effect
Call this IMMEDIATELY BEFORE performing any side effect that touches the outside world (sending a message, charging a card, creating a resource, writing to someone else's system). Returns a decision you MUST obey. If the response carries budget_warning, a spend ceiling exists but nothing was counted toward it — surface that to the operator rather than ignoring it. If it carries integration_warning, you have been beginning effects without reporting them: call ratchet_report_effect after every action, and tell the operator, because the effects already begun will start being blocked. Decisions: - "execute": you hold the lease. Perform the action now, then call ratchet_report_effect. If the response carries vendor_idempotency_key, send that key to the vendor as ITS own idempotency key (the response says where it goes). Where enforced is true the vendor itself will then refuse a duplicate, which protects the action even if some other caller skips this gate entirely. - "duplicate": this action ALREADY HAPPENED. Do NOT perform it. Use the returned `result` as though you had just done the work. - "in_flight": another process is doing it right now. Do NOT perform it. Wait `retry_after_seconds` and ask again. - "blocked": an earlier attempt may or may not have taken effect. Do NOT perform it. Tell the user what is unresolved, or verify at the vendor and call ratchet_resolve_effect. - "approval_required": a human must approve. Do NOT perform it. - "denied": policy or budget refused it. Do NOT perform it. The idempotency_key must be derived deterministically from the work itself so that a retry of the same logical action produces the same key. Never use a random value or the current time.
ratchet_extend_lease
Call this periodically during a long action you were authorised to perform, before the lease expires. It tells Ratchet you are alive and extends your hold. Use it when work turns out to take longer than the lease you asked for — a slow vendor, a large export, a retrying upload. Without it, the lease expires while you are still working, the effect is recorded as having an UNKNOWN outcome, and your report is then refused. If it fails with lease_expired or lease_lost, STOP. Your hold is gone and the outcome is already recorded as unknown. Do not keep going and do not retry the action — call ratchet_begin_effect to find out where things actually stand.
ratchet_get_circuit
Call this when a begin returned "approval_required" or "denied" and the reason mentions a circuit breaker. A breaker opens when an effect type is being performed far more often than its configured hourly ceiling — usually because something is looping. What to do with the answer: - If a breaker is open, STOP creating effects of that type. Retrying will not help and each attempt is recorded. - resets_at tells you when it closes itself. If it is null, a human opened it deliberately and only a human will close it — do not wait, and do not poll. - Report the reason to your operator and stop. Do not attempt to work around it by renaming the effect type, splitting the work across keys, or using a different idempotency key: that defeats a safety control that exists to protect the people your actions reach. - effect_type "*" means every effect type in the workspace is stopped.
ratchet_get_effect
Look up the recorded state of an action WITHOUT reserving a lease and without consuming your plan allowance. Use it to answer "did I already do this?" — for example when resuming after a crash, or when a user asks whether something went through. To actually perform work, use ratchet_begin_effect instead; this tool never grants permission.
ratchet_get_group
Shows every step in a multi-step unit of work: what succeeded, what can still be undone, what has already been undone, what is irreversible, and what has an unknown outcome. Use it to answer "where did this workflow actually get to?" after a crash, without changing anything.
ratchet_get_policy
Shows how this workspace has configured a given effect type: whether it is allowed, how long a lease lasts, the attempt ceiling, spend limits, the approval threshold above which an action waits for a human, and — most importantly — what happens when an attempt ends indeterminate. Check this before designing a retry strategy.
ratchet_get_prevented_loss
Counts duplicate actions refused in the last 30 days and what they would have cost. Only counts refusals where a cost was declared on the effect, so it under-reports rather than flatters. IMPORTANT: pass estimated_cost_micros on ratchet_begin_effect or this reads zero — the number is only as good as what callers declare. This is money not spent at your vendors, never money paid to Ratchet.
ratchet_get_run
Recall the work already gated under a run id, before doing anything that might repeat it. Call this FIRST when resuming a task — after a restart, a handoff, or when your context has been compacted and you are no longer certain what you did. It returns what succeeded with the recorded results, what is still in flight, what failed, and — separately, because it is the only category that can hurt you — what has an unknown outcome. Anything under "done" has already happened: use its result rather than performing it again. Costs about a seventeenth of the context of listing the same effects.
ratchet_get_usage
Returns the current plan, remaining included effects for the month, prepaid credit balance, and today's declared external spend against each budget ceiling. Use it to warn a user before a long run exhausts an allowance or a budget.
ratchet_list_effects
Review recent effects for this workspace, optionally filtered by state or run. Use it to find unresolved work — filter by state "indeterminate" to see every action whose outcome is unknown and still needs verification.
ratchet_list_receipts
Returns a signed receipt for every decision made about one effect, refusals included. Each signature is over the exact bytes in `body` and verifies offline against the Ed25519 key published at /.well-known/ratchet-receipt-key — you do not have to trust this server to check them. Use this when a human asks you to PROVE an action was or was not authorised, rather than asserting it.
ratchet_reconcile_effects
Given the idempotency keys for actions a vendor says actually happened, returns which ones went through Ratchet and which it has never seen. The unseen ones are code paths that acted WITHOUT asking, so a retry there can act twice — a bug the operator almost certainly does not know about. Send references only; never send credentials.
ratchet_report_effect
Call this IMMEDIATELY AFTER performing an action that ratchet_begin_effect authorised. Pass the lease_token you were given. Report "succeeded" with a result — future duplicate callers replay that result instead of repeating the action. Report "failed" ONLY when you are certain the action did NOT reach the outside world (for example, a validation error before the request was sent). That permits a clean retry. If you are UNSURE whether it went through — a timeout, a dropped connection, an ambiguous error — do NOT report anything. Say so to the user. Letting the lease lapse records an honest "indeterminate", which is far safer than a false "failed" that licenses a duplicate.
ratchet_resolve_effect
Use ONLY after you have checked the third-party system and now know what really happened to an effect that was left "indeterminate". Record "succeeded" if the action did occur, "failed" if it did not, or "cancelled" to abandon it. Include how you verified it in `evidence`. Never guess: resolving incorrectly is exactly the duplicate or lost action this service exists to prevent.
ratchet_unwind_group
Call this when a multi-step workflow fails partway and the steps that already succeeded must be undone — a booking made but not paid for, a resource created but not configured. Returns the exact compensations to perform, in the order to perform them, which is the REVERSE of the order they succeeded in. Undoing forwards can strand a step that depended on an earlier one. Ratchet does NOT perform the compensations. For each step: call ratchet_begin_effect with the step's suggested_idempotency_key and compensates_effect_id, do the real undo, then call ratchet_report_effect. Gating the undo is what stops a retry from refunding twice. Read `unresolved` first. If any effect in the group has an unknown outcome, STOP and resolve it before undoing anything around it. Read `irreversible` too: those steps succeeded and declared no way to undo themselves, so a human has to decide what to do about them. Say so plainly rather than implying the rollback was complete.

Tools removed

Tools this server used to expose. Anything built against them stopped working on the day they went.

ratchet_check_effect
removed 3 Sep 2026
ratchet_circuit_status
removed 3 Sep 2026
ratchet_effect_receipts
removed 3 Sep 2026
ratchet_group_status
removed 3 Sep 2026
ratchet_heartbeat_effect
removed 3 Sep 2026
ratchet_prevented_loss
removed 3 Sep 2026
ratchet_recall
removed 3 Sep 2026
ratchet_reconcile
removed 3 Sep 2026
ratchet_usage
removed 3 Sep 2026

Endpoints

URLTransportStateLatencyChecked
https://ratchetgate.com/mcp streamable-http answering 397 ms 11 min ago

Alternatives to Ratchet

same job, measured the same way
VERAX
by verax-ai

The body an agent asks before it acts: decide, approve, and keep a signed record on your machine.

208 installs/wk local only
Veritap
by veritap

Check whether a real-world fact can be verified before an agent acts on it. Free, no auth.

75 installs/wk 6 tools answering
Rapidly
by rapidly

Test the idea before you build it. Rapidly works inside your AI agent.

answering
Kaval
by usekaval

Verify the facts an agent's action depends on before it acts — ALLOW, REVIEW, or BLOCK.

360 installs/wk local only
Kaval
by lufemc

Verify the facts an agent's action depends on before it acts — ALLOW, REVIEW, or BLOCK.

local only
Failecho
by failecho

Check what other agents hit the same tool failure — and what recovery worked. Ask before retrying.

358 installs/wk 4 tools answering
R
poolproof — checks before you commit money
by poolproof

Who launched it, what exit really costs, is the pool what it claims. Facts only, no advice.

9 tools answering
AgentMesh
by agentmesh

Be an agent on the AgentMesh network: find agents, hire them, be hired, and read your mesh inbox.

answering

Ratchet — questions

Answers built from our own checks of this server.

What can Ratchet do?
It exposes 15 tools, read directly from the server on our last check. Among them: ratchet_begin_effect, ratchet_extend_lease, ratchet_get_circuit, ratchet_get_effect, ratchet_get_group, ratchet_get_policy and 9 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is Ratchet working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 381 ms. The bar chart above shows every period we have measured.
Did Ratchet ever remove tools?
Yes. ratchet_check_effect, ratchet_circuit_status, ratchet_effect_receipts, ratchet_group_status and 5 more are no longer exposed — we recorded the date each one disappeared. A tool vanishing usually means a breaking change for anything that depended on it.
How do I connect Ratchet?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Ratchet need an API key?
No. Ratchet completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 15 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Ratchet?
It answers our handshake in 381 ms on average, which is faster than 40% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
How many people use Ratchet?
The npm package ratchet-mcp was installed 261 times in the last week. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is Ratchet open source?
Yes — it is published under the Apache-2.0 licence, written in TypeScript, 0 stars on GitHub and 3 open issues. The source link is on this page, so you can read exactly what it does with your data before you connect it.