Skip to main content
Glama

Check reversibility

check_reversibility
Read-onlyIdempotent

Evaluate one commitment’s cancellation/refund reversibility from transaction-specific checkout terms plus maintained policy evidence, without charging or creating durable state. Use before a purchase, booking, subscription, rental, service, ticket, digital purchase, or deposit when exit deadlines or loss matter; use list_supported_policies only for maintained-overlay coverage, and create_exit_manifest only after paidExitManifestAvailable=true. Do not use for purchase desirability, legal advice, chargeback decisions, or executing a cancellation. Supply checkout_terms whenever available because they control the transaction-specific assessment; expected_commitment_at moves deadline evaluation forward when the commitment is future-dated, and missing or conflicting evidence can return assessment=unknown rather than inventing an exit right.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
amountYesCommitment amount in major currency units, for example 125.50 for USD 125.50. Must be non-negative and uses currency below for all monetary interpretation.
regionNoOptional state, province, or region label when the commitment or merchant terms are region-specific.
countryNoOptional two-letter ISO 3166-1 alpha-2 country code, such as US. Used to scope maintained policy rules when geography matters.
currencyNoThree-letter ISO 4217 currency code for amount and all monetary checkout terms. Defaults to USD.USD
merchantYesMerchant, platform, provider, or counterparty name exactly enough to identify the commitment. Used to match maintained policy overlays; do not include account numbers, credentials, or secrets.
event_typeNoLifecycle event for this commitment. Use renewal for a recurring renewal, reservation for a booking event, deposit for a deposit event, or leave omitted for an initial commitment.initial
checkout_termsNoTransaction-specific cancellation, refund, renewal, charge, and loss terms observed for this exact commitment. Supply these whenever available; they control the transaction-specific assessment while maintained policy evidence remains contextual.
commitment_typeYesClosest category for the commitment being evaluated. This affects policy matching and should describe what the user is committing to, not the payment method.
client_referenceNoOptional caller-owned correlation reference. ExitProof stores only a SHA-256 hash; do not place secrets or sensitive personal data here.
purchase_channelNoWhere the commitment is being made or billed. Use apple or google_play when that billing platform controls cancellation/refund rules; use direct for the merchant itself.unknown
expected_commitment_atNoRFC 3339 timestamp with explicit timezone for when the commitment is expected to occur. ExitProof evaluates time windows at the later of now and this timestamp.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
reasonYesConcise evidence-grounded explanation of the assessment.
currencyYesNormalized three-letter currency code.
evidenceYesEvidence items supporting or limiting the assessment.
merchantYesNormalized merchant or platform name.
assessmentYesEvidence-bounded reversibility classification. unknown means current evidence is insufficient or conflicting.
caseDigestYesStable digest of the normalized commitment inputs used for this assessment.
amountMinorYesCommitment amount in minor currency units.
evaluatedAtYesTimestamp at which the commitment was evaluated.
limitationsYesImportant limits on what the assessment proves.
evidenceBasisNoWhether the assessment is based on checkout terms, maintained policy, both, or insufficient evidence.
evidenceStateNoCurrent evidence state, such as established, incomplete, conflicting, expired, or missing.
schemaVersionYesExitProof reversibility result schema version.
commitmentTypeYesNormalized commitment type.
decisionSupportNoDecision-support summary that does not decide whether the user should make the commitment.
reversibleUntilNoRecorded exit deadline when established, otherwise null.
evidenceConflictNoTrue when evidence conflicts and cannot safely support a confident paid result.
exitPackEligibilityNoReasoned actionability status for a future exit pack.
paidExitPackAvailableYesWhether the current evidence appears actionable enough for a later exit pack after a manifest exists.
currentExitEstablishedNoWhether current evidence establishes an exit route.
maximumStatedLossMinorNoMaximum stated loss in minor currency units when safely established, otherwise null.
paidExitManifestAvailableYesWhether current evidence passes the preflight required before create_exit_manifest can be challenged for payment.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed27 schema fields changed
    • addedInput schema / description
      Added value: +"One contemplated or existing commitment to evaluate. merchant, commitment_type, and amount are required. Transaction-specific checkout_terms are the strongest input when available; maintained policy evidence can add context but never overrides conflicting transaction-specific terms."
    • addedInput schema / properties / amount / description
      Added value: +"Commitment amount in major currency units, for example 125.50 for USD 125.50. Must be non-negative and uses currency below for all monetary interpretation."
    • addedInput schema / properties / checkout_terms / description
      Added value: +"Transaction-specific cancellation, refund, renewal, charge, and loss terms observed for this exact commitment. Supply these whenever available; they control the transaction-specific assessment while maintained policy evidence remains contextual."
    • addedInput schema / properties / checkout_terms / properties / auto_renews / description
      Added value: +"Whether the supplied transaction terms explicitly state that the commitment renews automatically."
    • addedInput schema / properties / checkout_terms / properties / cancellable / description
      Added value: +"Whether the supplied transaction terms explicitly state that the commitment can be canceled."
    • changedInput schema / properties / checkout_terms / properties / cancellation_deadline / description
      Previous value: -"RFC 3339 timestamp with explicit timezone."New value: +"RFC 3339 timestamp with explicit timezone for the stated cancellation deadline, even when cancellation may involve a loss."
    • addedInput schema / properties / checkout_terms / properties / cancellation_method / description
      Added value: +"Recorded method or path for cancellation/refund, such as an account page, support channel, or merchant instruction. This can make a later exit pack actionable."
    • addedInput schema / properties / checkout_terms / properties / cancellation_penalty_amount / description
      Added value: +"Stated cancellation penalty in major units of currency. Mutually exclusive with cancellation_penalty_percent."
    • addedInput schema / properties / checkout_terms / properties / cancellation_penalty_percent / description
      Added value: +"Stated cancellation penalty as a percentage from 0 to 100. Mutually exclusive with cancellation_penalty_amount."
    • addedInput schema / properties / checkout_terms / properties / charge_timing / description
      Added value: +"When the merchant states the charge will occur, such as immediately, at check-in, or 24 hours before renewal."
    • changedInput schema / properties / checkout_terms / properties / free_cancellation_until / description
      Previous value: -"RFC 3339 timestamp with explicit timezone."New value: +"RFC 3339 deadline with explicit timezone through which the supplied terms state cancellation is free."
    • addedInput schema / properties / checkout_terms / properties / nonrefundable_amount / description
      Added value: +"Amount explicitly stated as nonrefundable, in major units of currency."
    • changedInput schema / properties / checkout_terms / properties / observed_at / description
      Previous value: -"RFC 3339 timestamp with explicit timezone."New value: +"RFC 3339 timestamp with explicit timezone for when the caller observed these checkout terms."
    • addedInput schema / properties / checkout_terms / properties / refundable / description
      Added value: +"Whether the supplied transaction terms explicitly state that the committed amount is refundable."
    • addedInput schema / properties / checkout_terms / properties / renewal_interval / description
      Added value: +"Human-readable renewal interval from the supplied terms, such as monthly or annually. Use only when auto-renewal terms are stated."
    • addedInput schema / properties / checkout_terms / properties / source_url / description
      Added value: +"HTTP(S) source URL for the supplied transaction terms. ExitProof removes credentials, query parameters, and fragments before storing the URL."
    • changedInput schema / properties / client_reference / description
      Previous value: -"Optional caller-owned reference. ExitProof stores only a SHA-256 hash."New value: +"Optional caller-owned correlation reference. ExitProof stores only a SHA-256 hash; do not place secrets or sensitive personal data here."
    • addedInput schema / properties / commitment_type / description
      Added value: +"Closest category for the commitment being evaluated. This affects policy matching and should describe what the user is committing to, not the payment method."
    • addedInput schema / properties / country / description
      Added value: +"Optional two-letter ISO 3166-1 alpha-2 country code, such as US. Used to scope maintained policy rules when geography matters."
    • addedInput schema / properties / country / pattern
      Added value: +"^[A-Za-z]{2}$"
    • addedInput schema / properties / currency / description
      Added value: +"Three-letter ISO 4217 currency code for amount and all monetary checkout terms. Defaults to USD."
    • addedInput schema / properties / event_type / description
      Added value: +"Lifecycle event for this commitment. Use renewal for a recurring renewal, reservation for a booking event, deposit for a deposit event, or leave omitted for an initial commitment."
    • changedInput schema / properties / expected_commitment_at / description
      Previous value: -"RFC 3339 timestamp with explicit timezone."New value: +"RFC 3339 timestamp with explicit timezone for when the commitment is expected to occur. ExitProof evaluates time windows at the later of now and this timestamp."
    • addedInput schema / properties / merchant / description
      Added value: +"Merchant, platform, provider, or counterparty name exactly enough to identify the commitment. Used to match maintained policy overlays; do not include account numbers, credentials, or secrets."
    • addedInput schema / properties / purchase_channel / description
      Added value: +"Where the commitment is being made or billed. Use apple or google_play when that billing platform controls cancellation/refund rules; use direct for the merchant itself."
    • addedInput schema / properties / region / description
      Added value: +"Optional state, province, or region label when the commitment or merchant terms are region-specific."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Bounded reversibility assessment with evidence, loss/deadline information, limitations, and paid-operation eligibility flags.",
      +  "properties": {
      +    "amountMinor": {
      +      "description": "Commitment amount in minor currency units.",
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "assessment": {
      +      "description": "Evidence-bounded reversibility classification. unknown means current evidence is insufficient or conflicting.",
      +      "enum": [
      +        "fully_reversible",
      +        "conditionally_reversible",
      +        "low_reversibility",
      +        "effectively_irreversible",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "caseDigest": {
      +      "description": "Stable digest of the normalized commitment inputs used for this assessment.",
      +      "type": "string"
      +    },
      +    "commitmentType": {
      +      "description": "Normalized commitment type.",
      +      "type": "string"
      +    },
      +    "currency": {
      +      "description": "Normalized three-letter currency code.",
      +      "type": "string"
      +    },
      +    "currentExitEstablished": {
      +      "anyOf": [
      +        {
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Whether current evidence establishes an exit route."
      +    },
      +    "decisionSupport": {
      +      "additionalProperties": true,
      +      "description": "Decision-support summary that does not decide whether the user should make the commitment.",
      +      "type": "object"
      +    },
      +    "evaluatedAt": {
      +      "description": "Timestamp at which the commitment was evaluated.",
      +      "type": "string"
      +    },
      +    "evidence": {
      +      "description": "Evidence items supporting or limiting the assessment.",
      +      "items": {
      +        "additionalProperties": true,
      +        "description": "One evidence item used by ExitProof.",
      +        "properties": {
      +          "authority": {
      +            "description": "Authority label for the source.",
      +            "type": "string"
      +          },
      +          "evidenceOrigin": {
      +            "description": "Origin classification, such as caller_supplied or maintained_policy.",
      +            "type": "string"
      +          },
      +          "independentlyVerified": {
      +            "description": "Whether ExitProof independently verified this evidence item.",
      +            "type": "boolean"
      +          },
      +          "observedAt": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "When the evidence was observed, when available."
      +          },
      +          "sourceUrl": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Source URL when one is available."
      +          },
      +          "type": {
      +            "description": "Evidence type, such as checkout_terms or official_policy.",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "evidenceBasis": {
      +      "description": "Whether the assessment is based on checkout terms, maintained policy, both, or insufficient evidence.",
      +      "type": "string"
      +    },
      +    "evidenceConflict": {
      +      "description": "True when evidence conflicts and cannot safely support a confident paid result.",
      +      "type": "boolean"
      +    },
      +    "evidenceState": {
      +      "description": "Current evidence state, such as established, incomplete, conflicting, expired, or missing.",
      +      "type": "string"
      +    },
      +    "exitPackEligibility": {
      +      "additionalProperties": true,
      +      "description": "Reasoned actionability status for a future exit pack.",
      +      "type": "object"
      +    },
      +    "limitations": {
      +      "description": "Important limits on what the assessment proves.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "maximumStatedLossMinor": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Maximum stated loss in minor currency units when safely established, otherwise null."
      +    },
      +    "merchant": {
      +      "description": "Normalized merchant or platform name.",
      +      "type": "string"
      +    },
      +    "paidExitManifestAvailable": {
      +      "description": "Whether current evidence passes the preflight required before create_exit_manifest can be challenged for payment.",
      +      "type": "boolean"
      +    },
      +    "paidExitPackAvailable": {
      +      "description": "Whether the current evidence appears actionable enough for a later exit pack after a manifest exists.",
      +      "type": "boolean"
      +    },
      +    "reason": {
      +      "description": "Concise evidence-grounded explanation of the assessment.",
      +      "type": "string"
      +    },
      +    "reversibleUntil": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Recorded exit deadline when established, otherwise null."
      +    },
      +    "schemaVersion": {
      +      "const": "exitproof-reversibility.v1",
      +      "description": "ExitProof reversibility result schema version."
      +    }
      +  },
      +  "required": [
      +    "schemaVersion",
      +    "assessment",
      +    "merchant",
      +    "commitmentType",
      +    "amountMinor",
      +    "currency",
      +    "evaluatedAt",
      +    "reason",
      +    "evidence",
      +    "limitations",
      +    "paidExitManifestAvailable",
      +    "paidExitPackAvailable",
      +    "caseDigest"
      +  ],
      +  "type": "object"
      +}
  2. Changed11 schema fields changed
    • addedInput schema / properties / checkout_terms / properties / cancellation_deadline / description
      Added value: +"RFC 3339 timestamp with explicit timezone."
    • addedInput schema / properties / checkout_terms / properties / cancellation_deadline / format
      Added value: +"date-time"
    • addedInput schema / properties / checkout_terms / properties / free_cancellation_until / description
      Added value: +"RFC 3339 timestamp with explicit timezone."
    • addedInput schema / properties / checkout_terms / properties / free_cancellation_until / format
      Added value: +"date-time"
    • addedInput schema / properties / checkout_terms / properties / observed_at / description
      Added value: +"RFC 3339 timestamp with explicit timezone."
    • addedInput schema / properties / checkout_terms / properties / observed_at / format
      Added value: +"date-time"
    • addedInput schema / properties / currency / maxLength
      Added value: +3
    • addedInput schema / properties / currency / minLength
      Added value: +3
    • addedInput schema / properties / currency / pattern
      Added value: +"^[A-Za-z]{3}$"
    • addedInput schema / properties / expected_commitment_at / description
      Added value: +"RFC 3339 timestamp with explicit timezone."
    • addedInput schema / properties / expected_commitment_at / format
      Added value: +"date-time"
  3. First observed

TDQS

A4.9/5.0
Behavior5/5

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

The description adds behavioral context beyond the annotations: 'without charging or creating durable state' aligns with readOnlyHint/idempotentHint but is not stated in the annotations, and 'missing or conflicting evidence can return assessment=unknown rather than inventing an exit right' discloses a key failure mode. This enriches the safety profile already provided by annotations without contradicting it.

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 in the description earns its place: purpose, scope, alternatives, exclusions, and parameter prioritization are all covered in a compact block. The most important scoping statement is front-loaded, and no filler or redundancy is present.

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 the tool's complexity (11 parameters, nested objects, output schema), the description covers purpose, usage boundaries, sibling routing, failure behavior, and parameter prioritization. The presence of an output schema means return-value details need not appear in the description. Nothing an agent needs to call this tool correctly is missing.

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 100%, so the baseline is 3. The description adds actionable parameter guidance: 'Supply checkout_terms whenever available because they control the transaction-specific assessment' and 'expected_commitment_at moves deadline evaluation forward when the commitment is future-dated.' These go beyond the schema's field descriptions, earning an extra point.

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 opens with a specific verb and resource: 'Evaluate one commitment’s cancellation/refund reversibility from transaction-specific checkout terms plus maintained policy evidence' and immediately disambiguates from siblings by stating 'without charging or creating durable state' and later directing to list_supported_policies and create_exit_manifest for other purposes. An agent can distinguish this tool from its siblings without opening the schema.

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?

Explicit when-to-use ('Use before a purchase, booking, subscription, rental, service, ticket, digital purchase, or deposit when exit deadlines or loss matter'), when-not-to-use ('Do not use for purchase desirability, legal advice, chargeback decisions, or executing a cancellation'), and which alternative to pick ('use list_supported_policies only for maintained-overlay coverage, and create_exit_manifest only after paidExitManifestAvailable=true'). No inference is left to the agent.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources