com.ratchetgate/ratchet
REMOTE · RATCHETGATE.COM · 2 COMPONENTS · SCANNED SEP 25
Your agent asks before it acts, so the same real-world action is attempted at most once.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security94
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability66
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3167 tokens (~211/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management13
- Stability check failed: schema churn in the 22 days we've observed: 9 tool removals, 0 breaking changes, 0 auth/transport breaks, 9 additions. See how to fix → Fail
Tool Coverage88
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 64% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 15 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
How do I install the com.ratchetgate/ratchet MCP server?
com.ratchetgate/ratchet is a hosted endpoint at https://ratchetgate.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · ratchetgate.com
claude mcp add --transport http com-ratchetgate-ratchet 'https://ratchetgate.com/mcp'
{
"mcpServers": {
"com-ratchetgate-ratchet": {
"url": "https://ratchetgate.com/mcp"
}
}
} {
"servers": {
"com-ratchetgate-ratchet": {
"type": "http",
"url": "https://ratchetgate.com/mcp"
}
}
} [mcp_servers.com-ratchetgate-ratchet] url = "https://ratchetgate.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-ratchetgate-ratchet": {
"type": "remote",
"url": "https://ratchetgate.com/mcp",
"enabled": true
}
}
} openclaw mcp add com-ratchetgate-ratchet --url 'https://ratchetgate.com/mcp' --transport streamable-http
mcp_servers:
com-ratchetgate-ratchet:
url: "https://ratchetgate.com/mcp" {
"McpServers": {
"com-ratchetgate-ratchet": {
"Transport": "http",
"Url": "https://ratchetgate.com/mcp"
}
}
} assistant mcp add com-ratchetgate-ratchet -t streamable-http -u 'https://ratchetgate.com/mcp'
{
"mcpServers": {
"com-ratchetgate-ratchet": {
"type": "http",
"url": "https://ratchetgate.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 24 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13.
- 22 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7.
- 8 Sept 26 0
- Server version: 0.2.1 → 0.3.0 functional
- 4 Sept 26 −1
- Stability: 0.03 → fail ▼ security
- Tool “ratchet_check_effect” was removed ▼ security
- Tool “ratchet_circuit_status” was removed ▼ security
- Tool “ratchet_effect_receipts” was removed ▼ security
- Tool “ratchet_group_status” was removed ▼ security
- Tool “ratchet_heartbeat_effect” was removed ▼ security
- Tool “ratchet_prevented_loss” was removed ▼ security
- Tool “ratchet_recall” was removed ▼ security
- Tool “ratchet_reconcile” was removed ▼ security
- Tool “ratchet_usage” was removed ▼ security
- Tool “ratchet_get_policy” rewrote its description, which is the text the model reads security
- Server version: 0.2.0 → 0.2.1 functional
- New tool “ratchet_get_run” functional
- New tool “ratchet_extend_lease” functional
- New tool “ratchet_get_circuit” functional
- New tool “ratchet_get_effect” functional
- New tool “ratchet_get_group” functional
- New tool “ratchet_get_prevented_loss” functional
- New tool “ratchet_get_usage” functional
- New tool “ratchet_list_receipts” functional
- New tool “ratchet_reconcile_effects” functional
- “ratchet_begin_effect” reworded the description of “estimated_cost_micros” cosmetic
- 3 Sept 26 +1
- Tool “ratchet_begin_effect” rewrote its description, which is the text the model reads security
- Stability: unverified → 0.03 ▲ functional
- “ratchet_begin_effect” added an optional parameter “dimensions” cosmetic
- 2 Sept 26 +37
- Injection markers: unverified → pass ▲ security
- Transport: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Authorization: Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. security
- MCP protocol: unverified → fail ▼ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Schema quality: excellent functional
- First check of Destructive annotations: pass functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 63 functional
- First check of Schema quality: fail functional
- 31 Aug 26 38
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 24 Sept 2026 · Probed https://ratchetgate.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=ratchetgate.com | CN=YE1,O=Let's Encrypt,C=US | 31 Aug 2026 | 29 Nov 2026 | ECDSA 256 | ECDSA-SHA384 | 5c386d8f8095777a9da2deb430ce27c160b |
| SANs: ratchetgate.com | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of ratchetgate.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| ratchetgate.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer realm="ratchet", resource_metadata="https://ratchetgate.com/.well-known/oauth-protected-resource"
Bearer realm="ratchet", resource_metadata="https://ratchetgate.com/.well-known/oauth-protected-resource" | Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | geolocation=(), microphone=(), camera=() |
Protected resource metadata
| Document | https://ratchetgate.com/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://ratchetgate.com/mcp |
| Authorisation server | https://ratchetgate.com |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://ratchetgate.com/mcp | Verified | 200 | |
| http (plaintext) | http://ratchetgate.com/mcp | HTTPS enforced | 301 | https://ratchetgate.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
ratchet_begin_effect Ask permission to perform a side effect ~1,026
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | – | Identifier for you, the calling agent. |
| compensates_effect_id | string | – | Set when THIS call IS an undo, naming the effect it reverses. Comes from ratchet_unwind_group. |
| compensation | object | – | How to undo THIS step if the workflow has to be rolled back. Declare it now, while you still know what undoing means — it cannot be worked out later. Steps without one are permanent. |
| dimensions | object | – | Who or what this action is aimed at, most often the destination: {"counterparty":"acct_1234"}. SEND THIS whenever the action targets a specific recipient, account or customer. It is how a per-destina… |
| effect_type | string | yes | Namespaced kind of side effect, e.g. "email.send", "payment.charge", "github.pr.create". Policy is configured per type. |
| estimated_cost_micros | integer | – | What this action will cost at the third party, in micro-USD (1000000 = $1). ALWAYS SEND THIS when the action costs money. Spend ceilings are computed from it, and a ceiling with nothing declared agai… |
| group_key | string | – | Use when this action is one step of a multi-step workflow that must succeed or fail as a whole, e.g. "booking:trip_8812". Lets the whole unit be rolled back later. |
| idempotency_key | string | yes | Deterministic identifier for this specific logical action, e.g. "welcome-email:user_123" or "invoice:2026-08:acct_88123". The SAME action retried must produce the SAME key. |
| lease_seconds | integer | – | How long you expect the action to take. Report before this elapses or the effect becomes indeterminate. |
| payload | object | – | The action's parameters. Only a hash is stored — the raw content never persists. Reusing a key with different parameters is rejected, which catches key collisions. |
| run_id | string | – | Groups all effects from one task or run. |
| vendor | string | – | Which vendor performs this effect (e.g. "stripe", "square", "adyen"). Shapes vendor_idempotency_key so it satisfies that vendor's rules. |
No output schema declared.
No examples provided.
ratchet_extend_lease Say you are still working on an effect ~189
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.
| Name | Type | Req | Description |
|---|---|---|---|
| effect_id | string | yes | – |
| extend_seconds | integer | – | How much longer you need, from now. Clamped to the policy maximum. |
| lease_token | string | yes | – |
No output schema declared.
No examples provided.
ratchet_get_circuit Check whether surge containment is holding your work ~196
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
ratchet_get_effect Check whether an action has already been done ~126
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.
| Name | Type | Req | Description |
|---|---|---|---|
| effect_type | string | yes | Namespaced kind of side effect, e.g. "email.send", "payment.charge", "github.pr.create". Policy is configured per type. |
| idempotency_key | string | yes | – |
No output schema declared.
No examples provided.
ratchet_get_group Inspect a unit of work ~76
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.
| Name | Type | Req | Description |
|---|---|---|---|
| group_key | string | yes | – |
No output schema declared.
No examples provided.
ratchet_get_policy Read the policy for an effect type ~110
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.
| Name | Type | Req | Description |
|---|---|---|---|
| effect_type | string | yes | Namespaced kind of side effect, e.g. "email.send", "payment.charge", "github.pr.create". Policy is configured per type. |
No output schema declared.
No examples provided.
ratchet_get_prevented_loss What the gate has actually saved ~98
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
ratchet_get_run What have I already done in this run? ~156
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.
| Name | Type | Req | Description |
|---|---|---|---|
| run_id | string | yes | The run id you passed to ratchet_begin_effect for this task. |
No output schema declared.
No examples provided.
ratchet_get_usage Check plan, credit balance, and spend ~54
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
ratchet_list_effects List recent gated effects ~111
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.
| Name | Type | Req | Description |
|---|---|---|---|
| effect_type | string | – | Namespaced kind of side effect, e.g. "email.send", "payment.charge", "github.pr.create". Policy is configured per type. |
| limit | integer | – | – |
| run_id | string | – | – |
| state | string | – | – |
No output schema declared.
No examples provided.
ratchet_list_receipts Get signed proof of the decisions on an effect ~109
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.
| Name | Type | Req | Description |
|---|---|---|---|
| effect_id | string | yes | The effect to fetch receipts for. |
No output schema declared.
No examples provided.
ratchet_reconcile_effects Find real-world actions that bypassed the gate ~105
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.
| Name | Type | Req | Description |
|---|---|---|---|
| effect_type | string | yes | – |
| keys | array | yes | Idempotency keys your system should have used for those actions. |
No output schema declared.
No examples provided.
ratchet_report_effect Report the outcome of an effect you executed ~244
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.
| Name | Type | Req | Description |
|---|---|---|---|
| actual_cost_micros | integer | – | What it really cost, if different from the estimate. |
| effect_id | string | yes | – |
| failure_reason | string | – | Required when outcome is "failed". |
| lease_token | string | yes | – |
| outcome | string | yes | – |
| result | object | – | What the action produced (ids, confirmation numbers, links). Replayed verbatim to duplicate callers, so include what a retry would need. |
No output schema declared.
No examples provided.
ratchet_resolve_effect Settle an effect whose outcome was unknown ~134
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.
| Name | Type | Req | Description |
|---|---|---|---|
| effect_id | string | yes | – |
| evidence | string | – | How you verified the real outcome. Stored in the audit trail. |
| outcome | string | yes | – |
| result | object | – | – |
No output schema declared.
No examples provided.
ratchet_unwind_group Roll back a multi-step unit of work ~260
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.
| Name | Type | Req | Description |
|---|---|---|---|
| group_key | string | yes | The unit of work to roll back, e.g. "booking:trip_8812". |
| reason | string | – | Why it is being rolled back. Stored for the operator. |
No output schema declared.
No examples provided.
What is the com.ratchetgate/ratchet MCP server?
com.ratchetgate/ratchet is an MCP server listed in the public MCP registry as com.ratchetgate/ratchet. Your agent asks before it acts, so the same real-world action is attempted at most once. This page covers its hosted endpoint (https://ratchetgate.com/mcp).
Is the com.ratchetgate/ratchet MCP server safe to use?
com.ratchetgate/ratchet scores 77 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the com.ratchetgate/ratchet MCP server expose?
com.ratchetgate/ratchet exposes 15 tools: ratchet_get_circuit, ratchet_begin_effect, ratchet_report_effect, ratchet_extend_lease, ratchet_get_effect, and 10 more. Their descriptions and schemas cost roughly 2,994 tokens of context every time the server is loaded.
Does the com.ratchetgate/ratchet MCP server require authentication?
Yes. com.ratchetgate/ratchet asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the com.ratchetgate/ratchet MCP server still maintained?
com.ratchetgate/ratchet is still listed as active in the MCP registry. We last reached this channel on 24 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.