From c93831c0e144ca73ef1b920696a6420cb2cbc133 Mon Sep 17 00:00:00 2001 From: Som Samantray Date: Fri, 7 Aug 2026 23:07:07 +0530 Subject: [PATCH 1/2] fix(mcp): add per-tool descriptions to DXT manifest The DXT manifest's 23 tools were declared as bare {"name": ...} entries with no description, so a client reading only the manifest (before a live tools/list round-trip) got zero activation guidance. Adds a concise description to each tool, with an explicit safety note on the tools that move money or change customer-visible billing state. Fixes #455 --- tools/modelcontextprotocol/manifest.json | 46 ++++++++++++------------ 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/tools/modelcontextprotocol/manifest.json b/tools/modelcontextprotocol/manifest.json index a6a06ab3..18adeeda 100644 --- a/tools/modelcontextprotocol/manifest.json +++ b/tools/modelcontextprotocol/manifest.json @@ -30,29 +30,29 @@ } }, "tools": [ - {"name": "search_documentation"}, - {"name": "get_stripe_account_in"}, - {"name": "create_customer"}, - {"name": "list_customers"}, - {"name": "create_product"}, - {"name": "list_products"}, - {"name": "create_price"}, - {"name": "list_prices"}, - {"name": "create_payment_link"}, - {"name": "create_invoice"}, - {"name": "list_invoices"}, - {"name": "create_invoice_item"}, - {"name": "finalize_invoice"}, - {"name": "retrieve_balance"}, - {"name": "create_refund"}, - {"name": "list_payment_intents"}, - {"name": "list_subscriptions"}, - {"name": "cancel_subscription"}, - {"name": "update_subscription"}, - {"name": "list_coupons"}, - {"name": "create_coupon"}, - {"name": "update_dispute"}, - {"name": "list_disputes"} + {"name": "search_documentation", "description": "Search Stripe's documentation and knowledge base to answer questions about Stripe products, APIs, and integration guidance."}, + {"name": "get_stripe_account_in", "description": "Retrieve information about the connected Stripe account, such as its business profile and settings."}, + {"name": "create_customer", "description": "Create a new Stripe Customer record."}, + {"name": "list_customers", "description": "List existing Stripe Customers, optionally filtered by email."}, + {"name": "create_product", "description": "Create a new Stripe Product to sell or bill for."}, + {"name": "list_products", "description": "List existing Stripe Products."}, + {"name": "create_price", "description": "Create a Price (amount, currency, billing interval) for an existing Product."}, + {"name": "list_prices", "description": "List existing Prices."}, + {"name": "create_payment_link", "description": "Create a shareable Payment Link for a Price. This generates a real, live payment page — confirm the price and terms with the user before creating one."}, + {"name": "create_invoice", "description": "Create a draft Invoice for a Customer. This does not charge the customer until the invoice is finalized and sent — use finalize_invoice for that step."}, + {"name": "list_invoices", "description": "List existing Invoices."}, + {"name": "create_invoice_item", "description": "Add a line item (amount, description) to a draft Invoice."}, + {"name": "finalize_invoice", "description": "Finalize a draft Invoice so it can be sent to and paid by the customer. This is a customer-visible, effectively irreversible action — confirm the invoice's contents with the user first."}, + {"name": "retrieve_balance", "description": "Retrieve the current available and pending balance on the Stripe account."}, + {"name": "create_refund", "description": "Refund a Charge or PaymentIntent, in full or in part. This moves real money back to the customer and cannot be undone — confirm the amount and reason with the user first."}, + {"name": "list_payment_intents", "description": "List PaymentIntents (payment attempts), including their status."}, + {"name": "list_subscriptions", "description": "List existing Subscriptions."}, + {"name": "cancel_subscription", "description": "Cancel an existing Subscription. This stops future billing and is customer-visible — confirm with the user before canceling."}, + {"name": "update_subscription", "description": "Update an existing Subscription, such as changing its price or quantity. This can change what the customer is billed — confirm with the user first."}, + {"name": "list_coupons", "description": "List existing Coupons."}, + {"name": "create_coupon", "description": "Create a new Coupon that can be applied to future invoices or subscriptions."}, + {"name": "update_dispute", "description": "Submit or update evidence on a payment Dispute. This is submitted to the card network and is effectively final — confirm the evidence with the user before updating."}, + {"name": "list_disputes", "description": "List existing payment Disputes."} ], "license": "MIT", "repository": { From 04e8712ce82c0ec59617c26eca838c81c36af744 Mon Sep 17 00:00:00 2001 From: Som Samantray Date: Fri, 7 Aug 2026 23:14:10 +0530 Subject: [PATCH 2/2] fix(mcp): tighten safety wording on money-moving tool descriptions Code review turned up three wording gaps: create_invoice_item lacked the same non-billing reassurance as its sibling create_invoice; finalize_invoice undersold that it can trigger an immediate charge attempt; create_refund's confirm-first clause didn't require the agent to actually restate the amount/reason rather than accept a generic yes; cancel_subscription didn't mention that cancellation can itself issue a refund/credit depending on proration. --- tools/modelcontextprotocol/manifest.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/modelcontextprotocol/manifest.json b/tools/modelcontextprotocol/manifest.json index 18adeeda..879c3c4c 100644 --- a/tools/modelcontextprotocol/manifest.json +++ b/tools/modelcontextprotocol/manifest.json @@ -41,13 +41,13 @@ {"name": "create_payment_link", "description": "Create a shareable Payment Link for a Price. This generates a real, live payment page — confirm the price and terms with the user before creating one."}, {"name": "create_invoice", "description": "Create a draft Invoice for a Customer. This does not charge the customer until the invoice is finalized and sent — use finalize_invoice for that step."}, {"name": "list_invoices", "description": "List existing Invoices."}, - {"name": "create_invoice_item", "description": "Add a line item (amount, description) to a draft Invoice."}, - {"name": "finalize_invoice", "description": "Finalize a draft Invoice so it can be sent to and paid by the customer. This is a customer-visible, effectively irreversible action — confirm the invoice's contents with the user first."}, + {"name": "create_invoice_item", "description": "Add a line item (amount, description) to a draft Invoice. This does not charge the customer until the invoice is finalized."}, + {"name": "finalize_invoice", "description": "Finalize a draft Invoice, which can immediately attempt to charge the customer if the invoice is set to charge automatically. This is customer-visible and effectively irreversible — confirm the invoice's contents with the user first."}, {"name": "retrieve_balance", "description": "Retrieve the current available and pending balance on the Stripe account."}, - {"name": "create_refund", "description": "Refund a Charge or PaymentIntent, in full or in part. This moves real money back to the customer and cannot be undone — confirm the amount and reason with the user first."}, + {"name": "create_refund", "description": "Refund a Charge or PaymentIntent, in full or in part. This moves real money back to the customer and cannot be undone — state the exact amount and reason back to the user and get their explicit approval before calling this."}, {"name": "list_payment_intents", "description": "List PaymentIntents (payment attempts), including their status."}, {"name": "list_subscriptions", "description": "List existing Subscriptions."}, - {"name": "cancel_subscription", "description": "Cancel an existing Subscription. This stops future billing and is customer-visible — confirm with the user before canceling."}, + {"name": "cancel_subscription", "description": "Cancel an existing Subscription. This stops future billing, is customer-visible, and may issue an immediate refund or credit depending on proration settings — confirm the effect with the user before canceling."}, {"name": "update_subscription", "description": "Update an existing Subscription, such as changing its price or quantity. This can change what the customer is billed — confirm with the user first."}, {"name": "list_coupons", "description": "List existing Coupons."}, {"name": "create_coupon", "description": "Create a new Coupon that can be applied to future invoices or subscriptions."},