Skip to main content
Glama
r28ai

stripe-billing-ops-mcp

by r28ai

stripe_refunds_create

Refund a Stripe charge or payment intent fully or partially. Provide amount for partial refunds, omit for full, and add reason and metadata for tracking.

Instructions

Refund a charge. Provide either charge or payment_intent. Omit amount to refund the full sum.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
amountNoA positive integer in the smallest currency unit representing how much to refund. Defaults to the entire charge. Cents, not dollars: $15.00 is 1500, and 15 refunds fifteen cents. Multiply a decimal amount by 100.
chargeNoThe identifier of the charge to refund.
reasonNoThe reason for the refund. If set to 'fraudulent', the associated payment is marked as fraudulent.
metadataNoSet of key-value pairs attached to the refund.
paymentIntentNoThe identifier of the PaymentIntent to refund.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.6/5.0
Behavior3/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true, so the description carries most of the behavioral burden. It usefully discloses the default-to-full-amount behavior and the mutual exclusivity of charge/payment_intent, but says nothing about irreversibility, idempotency, or how partial vs full refunds affect the underlying charge.

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 short sentences, front-loaded with the core action, then the two operative constraints. Zero filler and nothing buried.

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

Completeness3/5

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

For a mutation tool with thin annotations (no destructiveHint) and no output schema, the description covers the key parameter constraints but omits meaningful behavioral context: that refunds are irreversible state changes, whether they can be repeated safely, and what happens to the parent charge. Adequate but with clear gaps.

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 baseline is 3, but the description adds a real constraint the schema does not express: charge and payment_intent are alternatives (provide either one), which prevents an agent from populating both. The amount default is restated from the schema, so the gain is modest.

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 specific verb+resource ('Refund a charge') that no sibling tool duplicates, so an agent can identify it immediately. It doesn't explicitly contrast with a sibling, but none of the listed siblings is a competing refund operation.

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

Usage Guidelines3/5

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

The description gives invocation guidance ('Provide either charge or payment_intent', 'Omit amount to refund the full sum') rather than tool-selection guidance. It never says when this tool is preferred over alternatives or what prerequisites apply (e.g. charge must be uncaptured/refundable).

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