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; if you only need maintained-overlay coverage use list_supported_policies, and use create_exit_manifest only after this result says paidExitManifestAvailable=true. Do not use for purchase desirability, legal advice, chargeback decisions, or executing a cancellation. Transaction-specific checkout_terms control the transaction-specific assessment when supplied; 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?

Beyond annotations, the description discloses that the tool does not charge or create durable state, that transaction-specific checkout_terms control the assessment, and that missing or conflicting evidence can return assessment=unknown rather than inventing a right. This is valuable behavioral context not present in the annotations. No contradiction with annotations is present.

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 dense sentences with no wasted words. The main function is front-loaded, followed by usage boundaries, alternatives, and finally the unknown-result behavior. Every sentence contributes essential information.

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?

Given the tool's complexity, the rich input schema, the annotations, and the output schema, the description covers the essential context: purpose, usage timing, exclusions, alternatives, input prioritization, and fallback behavior. Nothing critical for correct invocation 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 coverage is 100%, so the baseline is 3. The description adds meaningful parameter-level guidance by emphasizing that checkout_terms control the transaction-specific assessment and that maintained policy evidence is only contextual. This helps the agent prioritize inputs, which goes beyond the schema itself.

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 verb and resource: 'Evaluate one commitment’s cancellation/refund reversibility' from transaction-specific checkout terms plus policy evidence. It also distinguishes itself from sibling tools like list_supported_policies and create_exit_manifest, making the tool's purpose unambiguous.

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 provides explicit when-to-use guidance ('Use before a purchase, booking, subscription...') and explicit when-not-to-use guidance ('Do not use for purchase desirability, legal advice, chargeback decisions...'). It also names alternatives with clear conditions, such as using list_supported_policies for overlay coverage and create_exit_manifest only after paidExitManifestAvailable=true.

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