Skip to main content
Glama

Server Details

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

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
thearchitect0x-glitch/ratchet
GitHub Stars
0
Server Listing
ratchet-mcp

TDQS

A4.4/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a distinct phase or concern of the effect lifecycle: beginning, extending, reporting, resolving, reconciling, unwinding, and inspecting. Even the several read-oriented tools are clearly separated by scope: single effect, run, group, policy, usage, and receipt listing.

Naming Consistency5/5

All tools share the ratchet_ prefix and follow a consistent verb_noun pattern: begin_effect, extend_lease, get_run, list_effects, report_effect, unwind_group. There are no mixed naming conventions or vague generic verbs.

Tool Count5/5

Fifteen tools is at the upper edge of the ideal range, but each one covers a necessary part of the idempotency and effect-tracking domain: gating, lease maintenance, reporting, resolution, reconciliation, investigation, and workflow unwinding. No tools feel redundant or ornamental.

Completeness5/5

The surface covers the full lifecycle of an externally visible effect: begin, extend, report, resolve, reconcile, and compensating rollback via unwind. It also provides the necessary inspection and policy tools for crash recovery, retries, budget checks, and proof of authorization, leaving no obvious dead ends.

Available Tools

15 tools
ratchet_begin_effectAsk permission to perform a side effectAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idNoGroups all effects from one task or run.
vendorNoWhich vendor performs this effect (e.g. "stripe", "square", "adyen"). Shapes vendor_idempotency_key so it satisfies that vendor's rules.
payloadNoThe 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.
agent_idNoIdentifier for you, the calling agent.
group_keyNoUse 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.
dimensionsNoWho 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-destination ceiling can exist at all — "no more than $200 to any one counterparty per day" — and only a keyed hash of the value is stored, so Ratchet counts the destination without ever being able to read it. Declaring can only tighten: it never removes a limit. If begin is refused with dimension_required, the operator has made a dimension mandatory for this effect type and you must send it.
effect_typeYesNamespaced kind of side effect, e.g. "email.send", "payment.charge", "github.pr.create". Policy is configured per type.
compensationNoHow 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.
lease_secondsNoHow long you expect the action to take. Report before this elapses or the effect becomes indeterminate.
idempotency_keyYesDeterministic 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.
compensates_effect_idNoSet when THIS call IS an undo, naming the effect it reverses. Comes from ratchet_unwind_group.
estimated_cost_microsNoWhat 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 against it never fires — the operator would be relying on a limit that cannot trigger. If the response contains budget_warning, that is exactly what has happened: tell the operator. Ratchet does not collect this money; it only counts it. It can also route the action to a human: an operator may set an approval threshold, and an action whose declared cost reaches it comes back approval_required instead of execute — so declaring accurately is what keeps large actions reviewable. Where a threshold is set, omitting this is refused with cost_required rather than allowed.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There is no output schema and annotations only carry readOnlyHint:false, so the description bears the full behavioral burden — and it is exhaustive. It discloses exactly what happens for each returned decision, that Ratchet does not collect money but only counts it, that only hashes of dimensions are stored, that raw payload content never persists, and how vendor_idempotency_key propagates. No ambiguous side effects are left undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with bullets, decision lists, and code blocks, but noticeably verbose — budget_warning is explained twice, the deterministic idempotency-key rule appears twice, and several sentences restate the same guarantees. Every sentence mostly earns its place given the complexity, but trimming redundancy would tighten it without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully defines the return contract — every possible decision value ('execute', 'duplicate', 'in_flight', 'blocked', 'approval_required', 'denied') and its required follow-up. The complex nested objects (payload, compensation, dimensions) and nuanced fields (lease_seconds, group_key, compensates_effect_id) are each explained with concrete examples, leaving no gap an agent needs to guess about.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds substantial meaning beyond it: it tells when parameters are mandatory in practice ('ALWAYS SEND THIS when the action costs money', 'SEND THIS whenever the action targets a specific recipient'), explains the deterministic key requirement, how vendor shapes the key, how dimensions enable per-destination ceilings, and why omitting cost is refused with cost_required. This goes well past the baseline for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States an explicit verb ('Ask permission'), a specific resource ('side effect'), and the action's scope ('perform') — 'Ask permission to perform a side effect' unambiguously names what the tool does. It also implicitly separates itself from siblings like ratchet_report_effect (which reports the effect) so an agent can pick the right call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit timing — 'Call this IMMEDIATELY BEFORE performing any side effect' — and explicit when-not-to-use behavior for each decision value (duplicate, in_flight, blocked, approval_required, denied). It names the sibling tools to call next (ratchet_report_effect, ratchet_resolve_effect, ratchet_unwind_group), giving clear alternatives rather than leaving them implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_extend_leaseSay you are still working on an effectAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
effect_idYes
lease_tokenYes
extend_secondsNoHow much longer you need, from now. Clamped to the policy maximum.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description reveals important consequences: lease expiry records the effect as UNKNOWN, the report is refused, the hold is gone, and retrying is prohibited. This is rich behavioral context and does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary call instruction, followed by concrete trigger examples and a compact failure-handling protocol. Every sentence contributes necessary operational information without filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a safety-critical keep-alive tool, it covers when to call, why it matters, what happens on failure, and what to do next. The only notable gap is the untold semantics of the two required parameters, which keeps it just short of fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%: extend_seconds is described, but the required effect_id and lease_token are not. The description never explicitly explains what these parameters mean or where an agent should obtain them, relying instead on general lease/effect jargon, so it does not fully compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action: periodically call to extend a lease during a long authorized action. It clearly distinguishes this from sibling lifecycle tools by naming ratchet_begin_effect as the recovery path and framing this tool as the keep-alive/extend operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit conditions for use ('when work turns out to take longer than the lease you asked for') with concrete examples, and explicit conditions for stopping ('If it fails with lease_expired or lease_lost, STOP'). It also names the alternative to call instead, ratchet_begin_effect.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_get_circuitCheck whether surge containment is holding your workA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as readOnly, idempotent, and non-destructive. The description adds valuable behavioral context beyond annotations, including why breakers open, what resets_at null means (human-opened breaker), and what effect_type '*' signifies. This gives the agent enough understanding to interpret results safely.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the exact trigger condition and organized into scannable bullet points. Each bullet provides actionable, non-redundant guidance. The length is justified because the tool guides critical safety behavior around circuit breakers.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, zero-parameter tool with no output schema, the description covers everything an agent needs: when to call, how to interpret key response fields, what actions to take, and what not to do. The additional safety context about human-opened breakers and wildcard effect_type makes it complete for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the baseline is 4. The description does not need to explain parameters, but it does clarify important response semantics like resets_at and effect_type '*', which indirectly helps the agent understand what information the tool returns. There is no parameter ambiguity to resolve.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states this tool is for checking circuit breaker status after a begin call returns 'approval_required' or 'denied' with a breaker-related reason. It distinguishes this from siblings by focusing on the circuit breaker concept and its operational implications. The title also reinforces a specific, check-only purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to call: 'Call this when a begin returned "approval_required" or "denied" and the reason mentions a circuit breaker.' It also provides strong when-not guidance, such as 'Retrying will not help' and 'do not wait, and do not poll' when resets_at is null, plus explicit prohibitions against workarounds.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_get_effectCheck whether an action has already been doneA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
effect_typeYesNamespaced kind of side effect, e.g. "email.send", "payment.charge", "github.pr.create". Policy is configured per type.
idempotency_keyYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds meaningful behavioral facts beyond those annotations: it does not reserve a lease, does not consume plan allowance, and never grants permission. It stops short of describing the return payload or possible state values, which is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three focused sentences, front-loaded with the core purpose and non-behaviors. Every sentence adds information, and there is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read tool with strong annotations, the description covers when to use it, why, and what it does not do. The only notable gap is that no output schema exists and the description does not mention possible return states or not-found behavior, so an agent may not know what response to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers effect_type well with a detailed description and examples, but idempotency_key has no description. The tool description itself adds no parameter-level meaning beyond referring to an "action," so it does not compensate for the missing idempotency_key semantics. At exactly 50% schema coverage, this lands at a mid score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: "Look up the recorded state of an action." It also explicitly names the sibling tool it is not (ratchet_begin_effect), making the purpose immediately distinguishable from similar effect tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete use cases: resuming after a crash and answering whether an action went through. It also explicitly tells the agent when NOT to use it, pointing to ratchet_begin_effect for actual work and stating this tool never grants permission.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_get_groupInspect a unit of workA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_keyYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only, idempotent, and non-destructive; the description reinforces that with 'without changing anything' and adds useful state-semantics context (undoable, undone, irreversible, unknown). This goes beyond simply restating the annotations, though it does not address auth or rate-limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences front-load the core behavior before the use case, and every phrase earns its place. The description is easy to scan and free of filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only inspection tool with no output schema, the description covers the tool's purpose, output categories, and canonical use case. It leaves minor gaps around group_key semantics and error behavior, but nothing critical for deciding to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only a string type and no description for group_key, and the description never names or explains the parameter. An agent must infer that group_key identifies the unit of work from the tool name; the description does not define its form, how to obtain it, or any constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action and resource: it 'shows every step in a multi-step unit of work' and enumerates exactly which categories of step state are reported. This makes it easy to distinguish from sibling inspection tools like get_run or get_effect, which target different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger context: use it to answer 'where did this workflow actually get to?' after a crash. It does not, however, contrast itself with sibling inspection tools or state when not to use it, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_get_policyRead the policy for an effect typeA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
effect_typeYesNamespaced kind of side effect, e.g. "email.send", "payment.charge", "github.pr.create". Policy is configured per type.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only, idempotent, and non-destructive; the description adds concrete behavioral detail about what policy fields are returned, including indeterminate handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One focused sentence conveys resource, policy contents, and usage guidance without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only tool, the description fully enumerates the policy aspects returned and provides an actionable usage hint, making it self-sufficient despite the lack of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter effect_type is fully described with a namespaced format and concrete examples, matching the 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Shows'/'Read') and resource ('policy for an effect type'), and the detailed policy elements distinguish it clearly from sibling getter tools like ratchet_get_effect or ratchet_get_group.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to 'Check this before designing a retry strategy', giving a clear use case for when to call this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_get_prevented_lossWhat the gate has actually savedA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive, so the bar is lower. The description adds valuable extra context beyond those: it under-reports rather than flatters, it depends on caller-declared costs, and the number represents avoided vendor spend, not money paid to Ratchet. This goes well beyond the annotation defaults and gives the agent a clear mental model of the tool's behavior and caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient and front-loaded: the first sentence states the core purpose, the second explains the under-reporting behavior, the third gives the critical dependency in an 'IMPORTANT' callout, and the fourth clarifies the financial meaning. Every sentence earns its place; there is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description covers all essential information: what is counted, the time window, the source of the data, the reliability caveat, and the interpretation of the result. An agent would know exactly when to call this tool and what to expect. It also anticipates the common misuse of misinterpreting the number as actual revenue.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema trivially covers 100% of them. With no parameters to explain, the baseline for this dimension is 4. The description does not need to add parameter details, and it correctly references a parameter on a sibling tool (estimated_cost_micros) which is not this tool's parameter. Nothing is missing here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('counts') and a clear resource ('duplicate actions refused in the last 30 days'), and states exactly what it measures (refusals and their would-be cost). It also clarifies the semantics of the number ('money not spent at your vendors, never money paid to Ratchet'), which distinguishes it from any payment-related tool. This is unambiguous and differentiates it from siblings like ratchet_get_usage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a critical prerequisite for meaningful use: 'pass estimated_cost_micros on ratchet_begin_effect or this reads zero'. It also clarifies the context (prevented loss) and the under-reporting behavior. However, it does not explicitly name an alternative tool or state when not to use this one, so it lacks the explicit exclusions seen in the highest tier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_get_runWhat have I already done in this run?A
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesThe run id you passed to ratchet_begin_effect for this task.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only, idempotent, and non-destructive, but the description adds important behavioral detail: it separates succeeded, in-flight, failed, and unknown outcomes, and flags unknown outcomes as the only category that can hurt the caller. It also discloses the relative cost of listing the same effects, which is valuable for an agent optimizing context usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core instruction, then explains return categories, safety semantics, and cost — all in a compact, well-organized block. Every sentence adds operational value, and the warning about unknown outcomes is placed where it matters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description tells the agent what categories of results to expect and how to interpret them. It covers when to call the tool, what it returns, what to avoid repeating, and why the unknown category is important — more than enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description references the run id's origin ('the run id you passed to ratchet_begin_effect'), adding a small linkage beyond the schema. This is useful but does not substantially extend the parameter meaning; the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'recall the work already gated under a run id.' It clearly distinguishes itself from the broader listing tools by focusing on the run-level view and enumerating the exact outcome categories returned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to call this FIRST when resuming a task after restart, handoff, or context compaction, and warns against doing anything that might repeat prior work. This gives an agent a clear trigger condition and operational precedence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_get_usageCheck plan, credit balance, and spendA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safe read behavior is covered. The description adds useful nuance: it reports 'remaining included effects for the month' and 'today's declared external spend,' implying temporal scoping and a possible difference between declared and actual spend. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence front-loads the return contents, and the second immediately gives a practical use case. Every word contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only tool with rich annotations, the description is complete: it names all major return components and explains why an agent would call it. No output schema exists, but the listed data elements are sufficient for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters and the schema description coverage is 100%, so parameter semantics are trivially satisfied. The baseline for a zero-parameter tool is 4, and the description adds relevant context about what the returned information is used for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Returns') and the resource ('current plan, remaining included effects, prepaid credit balance, today's declared external spend'). It distinguishes this read-only usage/credit tool from the sibling circuit/effect/group tools through its specific focus on plan, credit, and spend data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes explicit when-to-use guidance: 'Use it to warn a user before a long run exhausts an allowance or a budget.' It does not name alternative tools or state when not to use it, but the context is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_list_effectsList recent gated effectsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
stateNo
run_idNo
effect_typeNoNamespaced kind of side effect, e.g. "email.send", "payment.charge", "github.pr.create". Policy is configured per type.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds useful behavioral context: results are workspace-scoped, time-bound ('recent'), and it defines the operational meaning of 'indeterminate' as outcome unknown and still needing verification. There is no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, with the core action front-loaded ('Review recent effects'), followed by optional scoping and a concrete use case. No wasted words; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The essential invocation context is covered: what is listed, the workspace scope, available filters, and a concrete use case. Annotations cover safety and idempotency. With no output schema, the return shape is left implied, and siblings are not explicitly differentiated, but for a simple list tool this is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25%, so the description must compensate. It adds meaning for state (including the indeterminate semantics) and run ('filter by run'). effect_type already has a schema description, and limit is self-evident. Some parameter detail is still left to inference, but the added guidance is meaningful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb ('Review') and resource ('recent effects for this workspace'), and frames a specific diagnostic use case ('find unresolved work'). It is unambiguous as a list/read tool, though it does not explicitly contrast with sibling tools such as ratchet_effect_receipts or ratchet_check_effect, so it stops short of perfect sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use: 'Use it to find unresolved work' and recommends a concrete filter ('state indeterminate'). It also notes optional filters by state or run. It does not list when-not-to-use or alternative sibling tools, so it does not earn a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_list_receiptsGet signed proof of the decisions on an effectA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
effect_idYesThe effect to fetch receipts for.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/idempotentHint/destructiveHint annotations, the description adds substantial behavioral context: receipts are signed, signatures cover exact bytes in `body`, verification works offline against a published Ed25519 key, and the server does not need to be trusted. This meaningfully informs the agent about what the tool guarantees.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three focused sentences with no wasted words. The core behavior is front-loaded, then the cryptographic detail, then the practical use case. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only single-parameter tool with no output schema, the description sufficiently explains what is returned, what each receipt proves, how verification works, and when the tool should be invoked. Nothing essential is missing for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage and already documents `effect_id` as 'The effect to fetch receipts for'. The description mentions fetching receipts for 'one effect', which aligns with the parameter, but does not add additional semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Returns'), a specific resource ('signed receipt for every decision made about one effect'), and a notable inclusion ('refusals included'). This clearly distinguishes it from sibling tools like ratchet_list_effects or ratchet_get_effect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Use this when a human asks you to PROVE an action was or was not authorised'. It contrasts with the alternative behavior of merely asserting something, though it does not name a specific sibling tool as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_reconcile_effectsFind real-world actions that bypassed the gateA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keysYesIdempotency keys your system should have used for those actions.
effect_typeYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavioral context: it warns that unseen keys correspond to code paths that acted without asking and that retrying can cause duplicate side effects. It also gives an explicit operational instruction to send references only and never credentials.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no wasted words: the operation, the practical risk, and the security constraint are each addressed. The most important semantic is front-loaded, and the guidance is directly actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, no-output-schema tool with strong annotations, the description covers the operation, the business rationale, and the risk model. The main gap is the undocumented 'effect_type' parameter, which prevents the description from being fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: only 'keys' has a description, while 'effect_type' is undocumented. The description clarifies that keys are the vendor-reported idempotency keys, but never explains what effect_type means or what values it accepts. The description partially compensates for the missing schema coverage but leaves a required parameter meaningfully unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('returns') and resource ('idempotency keys for actions a vendor says actually happened') and clearly separates the two outcomes: went through Ratchet vs. never seen. This distinguishes it from sibling tools like ratchet_list_effects or ratchet_get_effect, which inspect stored effects rather than reconcile external facts against them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended scenario is explicit: you have idempotency keys from a vendor and want to find actions that bypassed Ratchet. The description does not name alternative tools or state when not to use it, but the context is clear enough that an agent can infer this is for reconciliation rather than for inspecting a single effect or listing effects.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_report_effectReport the outcome of an effect you executedAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
resultNoWhat the action produced (ids, confirmation numbers, links). Replayed verbatim to duplicate callers, so include what a retry would need.
outcomeYes
effect_idYes
lease_tokenYes
failure_reasonNoRequired when outcome is "failed".
actual_cost_microsNoWhat it really cost, if different from the estimate.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses critical behavioral consequences beyond the annotations: successful reports are replayed to duplicate callers, a false 'failed' can license a duplicate action, and an unreported uncertain outcome safely records 'indeterminate' via lease expiration. This is exactly the kind of safety-relevant context an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the most important instruction, uses short imperative sentences, and every sentence carries weight. The formatting with line breaks makes the success/failure/unsure branches easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with six parameters and no output schema, the description gives sufficient behavioral context to call it correctly. Minor gaps remain around effect_id and actual_cost_micros, but the core decision logic and required parameters are thoroughly covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds valuable semantics for the outcome parameter and the result object, explaining when 'succeeded' vs 'failed' is appropriate and that results are replayed verbatim. It also mentions the lease_token. However, it does not explicitly explain effect_id or actual_cost_micros, though the schema and context partially cover them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: report the outcome of an effect after it has been executed, specifically after ratchet_begin_effect authorized it. It distinguishes itself from the begin/check/resolve siblings by focusing on post-execution reporting and by naming the exact triggering condition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: call immediately after the action, report 'succeeded' normally, report 'failed' only when certain the action did not reach the outside world, and do not report anything if uncertain. This gives the agent a precise decision procedure and even specifies the alternative behavior — letting the lease lapse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_resolve_effectSettle an effect whose outcome was unknownAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
resultNo
outcomeYes
evidenceNoHow you verified the real outcome. Stored in the audit trail.
effect_idYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond annotations by explaining that this mutates the effect's disposition, that it must be based on verified facts, and that incorrect resolution has serious consequences. It does not detail reversibility, idempotency, or return behavior, but annotations are sparse and the description carries the safety-critical context well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, all load-bearing, with the critical precondition front-loaded. No filler, no repetition of the schema, and every sentence contributes to correct invocation behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the essential correctness context: when to call, what outcomes mean, how to provide evidence, and the danger of guessing. It leaves out return/error behavior and the purpose of the `result` field, but for a settlement action the provided context is largely sufficient for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Clarifies the outcome enum by mapping each value to a real-world state ('succeeded' if the action occurred, 'failed' if not, 'cancelled' to abandon), and explains evidence as verification stored in the audit trail. However, schema description coverage is only 25% and the description does not explain the `effect_id` parameter or the nested `result` object, so it only partially compensates for low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('resolve') and resource ('effect'), and defines the exact purpose: settling an effect whose outcome was left indeterminate. The description makes the tool's domain distinct from siblings like check, report, or begin by focusing on recording the verified real outcome.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit precondition: use ONLY after checking the third-party system and now knowing what happened. It also gives a firm when-not: never guess, because incorrect resolution causes duplicate or lost actions. This is clear usage guidance even though sibling tools are not named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ratchet_unwind_groupRoll back a multi-step unit of workAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoWhy it is being rolled back. Stored for the operator.
group_keyYesThe unit of work to roll back, e.g. "booking:trip_8812".

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses critical behavior: it returns a plan rather than executing the undos, requires a specific interleaved compensations protocol, and explains the reversal order rationale. It also exposes edge-case behavior around unresolved and irreversible effects, and warns against implying a complete rollback when it is not.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence adds essential operational value: when to use, what it returns, what it does not do, the required follow-up calls, and the important caveats. The description is dense but not padded, and the trigger condition is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The definition is complete for a complex coordination tool with no output schema: it explains return semantics (compensations in reverse order), the required interaction with sibling tools, the reason for the order, and the unresolved/irreversible fields the agent must inspect. No critical operational detail appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents group_key and reason. The description does not add meaningful parameter-specific detail beyond referring to 'group' and 'steps,' so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific trigger ('multi-step workflow fails partway') and a clear function: return the exact compensations to perform in reverse order. It also distinguishes this tool from its siblings by explicitly saying 'Ratchet does NOT perform the compensations' and referencing ratchet_begin_effect/ratchet_report_effect as follow-up calls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The first sentence tells the agent exactly when to call this tool, and the description provides the full follow-up sequence: call ratchet_begin_effect, perform the undo, call ratchet_report_effect. It also gives explicit conditional guidance: read unresolved first and stop if an effect has an unknown outcome, and surface irreversible steps to a human.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedratchet_begin_effect1 field changed
      • changedInput schema / properties / estimated_cost_micros / description
        Previous value: -"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 against it never fires — the operator would be relying on a limit that cannot trigger. If the response contains budget_warning, that is exactly what has happened: tell the operator. Ratchet does not collect this money; it only counts it."New value: +"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 against it never fires — the operator would be relying on a limit that cannot trigger. If the response contains budget_warning, that is exactly what has happened: tell the operator. Ratchet does not collect this money; it only counts it. It can also route the action to a human: an operator may set an approval threshold, and an action whose declared cost reaches it comes back approval_required instead of execute — so declaring accurately is what keeps large actions reviewable. Where a threshold is set, omitting this is refused with cost_required rather than allowed."
  2. 18 tool updates
    • Removedratchet_check_effect
    • Removedratchet_circuit_status
    • Removedratchet_effect_receipts
    • Addedratchet_extend_lease
    • Addedratchet_get_circuit
    • Addedratchet_get_effect
    • Addedratchet_get_group
    • Addedratchet_get_prevented_loss
    • Addedratchet_get_run
    • Addedratchet_get_usage
    • Removedratchet_group_status
    • Removedratchet_heartbeat_effect
    • Addedratchet_list_receipts
    • Removedratchet_prevented_loss
    • Removedratchet_recall
    • Removedratchet_reconcile
    • Addedratchet_reconcile_effects
    • Removedratchet_usage
  3. 1 tool update
    • Changedratchet_begin_effect1 field changed
      • addedInput schema / properties / dimensions
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "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-destination ceiling can exist at all — \"no more than $200 to any one counterparty per day\" — and only a keyed hash of the value is stored, so Ratchet counts the destination without ever being able to read it. Declaring can only tighten: it never removes a limit. If begin is refused with dimension_required, the operator has made a dimension mandatory for this effect type and you must send it.",
        +  "type": "object"
        +}
  4. 1 tool update
    • Addedratchet_recall
  5. 14 tool updates
    • First observedratchet_begin_effect
    • First observedratchet_check_effect
    • First observedratchet_circuit_status
    • First observedratchet_effect_receipts
    • First observedratchet_get_policy
    • First observedratchet_group_status
    • First observedratchet_heartbeat_effect
    • First observedratchet_list_effects
    • First observedratchet_prevented_loss
    • First observedratchet_reconcile
    • First observedratchet_report_effect
    • First observedratchet_resolve_effect
    • First observedratchet_unwind_group
    • First observedratchet_usage

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A local human-in-the-loop gate for AI agents that blocks actions until human approval, with timeout defaulting to denial.
    20 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides a human-approval tool for MCP-compatible agents, pausing execution until a human approves or edits the action, with every decision logged.
    2
    2 npm
    2
    MIT
  • F
    license
    A
    quality
    A
    maintenance
    Exactly-once execution for irreversible agent actions: an agent claims the right to run an effect, and a retry after a lost response returns the sealed result instead of charging again. 12 tools over stdio, including a gateway mode where the agent holds a single-use ticket and never the provider key.
    9
    50 PyPI
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.