Stripe MCP Server
Provides tools for Stripe payment integration, enabling creation and management of payment links, payment intents, products, prices, and customers.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Stripe MCP ServerCreate a payment link for a $20 tutoring session."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Stripe MCP Server
A Model Context Protocol (MCP) server that provides Stripe payment integration capabilities to Claude Desktop. This server enables you to create payment links, process payments, manage products and customers directly from Claude.
Features
Payment Links
Create payment links with products and prices
List and manage existing payment links
Update payment link settings
Support for billing address collection and promotion codes
Payment Processing
Create and confirm payment intents
Monitor payment status
Handle customer payment methods
Product & Price Management
Create and manage products
Set up pricing (one-time or recurring)
Product catalog management
Customer Management
Create and manage customer records
View customer payment history
Customer data management
Related MCP server: Stripe MCP
Setup
1. Install Dependencies
cd stripe_mcp
npm install2. Build the Server
npm run build3. Set Up Environment Variables
Create a .env file in the stripe_mcp directory:
STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key_hereYou can get your Stripe secret key from your Stripe Dashboard.
4. Configure Claude Desktop
Add the following to your Claude Desktop MCP configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"stripe": {
"command": "node",
"args": [
"/path/to/your/stripe_mcp/dist/index.js"
],
"env": {
"STRIPE_SECRET_KEY": "sk_test_your_stripe_secret_key_here"
}
}
}
}Replace /path/to/your/stripe_mcp/ with the actual path to your stripe_mcp directory.
Usage Examples
Create a Payment Link
// Create a simple payment link for a $20 service
create_payment_link({
line_items: [{
price_data: {
currency: "usd",
unit_amount: 2000, // $20.00 in cents
product_data: {
name: "Tutoring Session",
description: "1-hour math tutoring session"
}
},
quantity: 1
}],
billing_address_collection: "required",
allow_promotion_codes: true
})Create a Payment Intent
// Create a payment intent for direct processing
create_payment_intent({
amount: 5000, // $50.00 in cents
currency: "usd",
description: "Monthly subscription payment",
receipt_email: "customer@example.com"
})Create a Customer
// Create a customer record
create_customer({
email: "student@example.com",
name: "John Doe",
metadata: {
student_id: "12345"
}
})Available Tools
Payment Links
create_payment_link- Create new payment linkslist_payment_links- List existing payment linksget_payment_link- Get payment link detailsupdate_payment_link- Update payment link settings
Payment Processing
create_payment_intent- Create payment intentsconfirm_payment_intent- Confirm paymentsget_payment_intent- Get payment detailslist_payment_intents- List payment intents
Products & Prices
create_product- Create productslist_products- List productsget_product- Get product detailscreate_price- Create priceslist_prices- List prices
Customer Management
create_customer- Create customerslist_customers- List customersget_customer- Get customer detailsget_customer_payments- Get payment history
Development
Run in Development Mode
npm run devTest the Server
After building and configuring, restart Claude Desktop and you should see the Stripe tools available in your conversations.
Security Notes
Never expose your Stripe secret keys publicly
Use test keys during development
Set up webhooks in production for reliable payment status updates
Follow Stripe's security best practices
Support
For issues with this MCP server, please check:
Your Stripe API keys are correct
The server builds without errors (
npm run build)Claude Desktop configuration is properly set up
Environment variables are loaded correctly
For Stripe API questions, refer to the Stripe Documentation.
Available Tools
17 toolsconfirm_payment_intentC
Confirm a payment intent
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Payment intent ID | |
| return_url | No | URL to return to after payment | |
| payment_method | No | Payment method ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states that it confirms a payment intent, but does not mention potential side effects like charging the customer, the need for return_url, or what the response contains. This is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that is front-loaded and free of unnecessary wording. Although it is minimal, it is not verbose; it earns a score slightly above the minimum because it conveys the core purpose without being wordy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple schema but no output schema and no annotations, and the description is too brief to explain critical behavior such as return values, side effects, or when additional parameters like return_url are required. This is inadequate for a payment confirmation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: each parameter (id, return_url, payment_method) has a description in the input schema. The tool description adds no additional meaning beyond the schema, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Confirm' with the resource 'payment intent', clearly identifying the action and distinguishing it from sibling tools like get_payment_intent or create_payment_intent. However, it lacks any additional scope or nuance, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, and gives no context about prerequisites or workflow. An agent is left without direction on how to choose this tool among the payment-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_customerC
Create a customer
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Customer name | |
| No | Customer email | ||
| phone | No | Customer phone | |
| metadata | No | Additional metadata | |
| description | No | Customer description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavioral traits. It merely states "Create a customer" with no mention of side effects, required permissions, idempotency, response format, or what happens if the customer already exists. This is a significant gap for a create operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than effective conciseness. It offers no structural benefit or added information over the tool name itself, making it nearly tautological.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters (no required ones), no output schema, and no annotations. The description only restates the tool's name, providing no context about return values, side effects, or how this fits into the broader customer workflow. It is wholly inadequate for a create tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the parameters with descriptions, so the baseline is 3. The tool description adds no additional meaning beyond what the schema already provides. For instance, it does not explain how the parameters relate to the creation process or which are typically used together.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create) and the resource (customer), which distinguishes it from sibling tools that list, get, or update customers or other entities. However, it lacks any additional scoping or clarifying details, so it is clear but minimal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, use cases, or exclusions. For example, it does not clarify when to use create_customer instead of create_product or create_payment_intent, nor when a customer might already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_payment_intentC
Create a payment intent for processing payments
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Amount in cents | |
| currency | Yes | Currency code (e.g., usd) | |
| customer | No | Customer ID | |
| metadata | No | Additional metadata | |
| description | No | Description of the payment | |
| receipt_email | No | Email for receipt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavioral traits. It mentions 'processing payments' but does not describe side effects, lifecycle (e.g., intent must be confirmed later), authentication needs, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb 'Create' and contains no unnecessary words. It is concise and well-structured, though minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no annotations, and no output schema, the description is insufficiently complete. It does not explain the payment intent lifecycle or how it relates to sibling tools, leaving critical context missing for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter coverage with descriptions for all 6 fields, so the description adds no additional parameter meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a payment intent' with a specific verb and resource. It is distinct from siblings like create_payment_link, but lacks explicit differentiation (e.g., 'use this for initial payment setup').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like confirm_payment_intent or create_payment_link. The description merely states what it does, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_payment_linkB
Create a Stripe payment link for customers to pay
| Name | Required | Description | Default |
|---|---|---|---|
| metadata | No | Additional metadata for the payment link | |
| line_items | Yes | Items to include in the payment link | |
| allow_promotion_codes | No | Allow customers to enter promotion codes | |
| billing_address_collection | No | Whether to collect billing address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Create a Stripe payment link' and does not mention side effects, required permissions, return values (e.g., a payment link URL), or operational behavior beyond the verb itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant wording. It is front-loaded and efficiently states the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This tool has a complex nested object schema, no output schema, and no annotations. The description is too sparse to convey critical context such as what the tool returns (a payment link URL), how line_items work, or any operational prerequisites. It is inadequate for an agent to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with descriptions, so the baseline is 3. The tool description adds no parameter-specific meaning, relying entirely on the schema, which is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create), the resource (Stripe payment link), and the purpose (for customers to pay). It distinguishes this tool from sibling tools like create_payment_intent by specifying the payment link context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like create_payment_intent. The phrase 'for customers to pay' implies a hosted payment page but does not offer explicit exclusions or preferred scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_priceC
Create a price for a product
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Product ID | |
| currency | Yes | Currency code | |
| metadata | No | Additional metadata | |
| recurring | No | For subscription pricing | |
| unit_amount | No | Price in cents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It only repeats the tool's purpose without explaining side effects, idempotency, required permissions, or how recurring vs. one-time pricing behaves. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler. It is front-loaded with the action and resource. However, the extreme brevity is close to under-specification, so it does not earn a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite a rich input schema with nested objects and optional recurring/unit_amount fields, the description does not explain expected behavior when optional fields are omitted, nor the return value. The lack of annotations and output schema makes this incomplete for reliable tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 all parameters. The description adds no parameter-level meaning beyond what the schema provides, but the schema descriptions (e.g., 'Price in cents', 'For subscription pricing') are adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Create a price') and the resource ('for a product'). It is distinct from sibling tools like list_prices and create_product, which perform different operations on different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or scenarios where another tool (e.g., create_product or create_payment_link) would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_productC
Create a product
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Product name | |
| metadata | No | Additional metadata | |
| description | No | Product description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but 'Create a product' only restates the action. It doesn't specify side effects, required permissions, idempotency, or what the response contains, leaving the agent without crucial behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, which is generally good, but it's under-specified. It communicates the core action in three words, yet this brevity sacrifices valuable context that could be included without being verbose, such as noting required fields or use cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no output schema, and no annotations, the description is insufficient. It doesn't mention return values, error conditions, or how this fits into the broader product lifecycle, making it incomplete for an agent to invoke confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions cover 100% of the parameters (name, metadata, description), so the baseline is 3. The tool description adds no additional parameter semantics, but the schema already provides adequate meaning for each field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a product' clearly states the verb (create) and the resource (product), making the tool's primary purpose evident. However, it doesn't provide additional context to distinguish it from sibling create tools like create_price or create_customer, though the resource is explicitly different.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. While the name implies it's for creating products, the description doesn't mention any prerequisites, when not to use it, or compare it with related tools like create_price or create_payment_link.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customerC
Get customer details
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Customer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It does not mention what the tool returns, error behavior, authentication requirements, or any side effects. 'Get customer details' simply restates the tool's purpose without adding behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, front-loaded and free of extraneous words. It is appropriately concise for a simple retrieval tool, although it borders on under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single parameter, no output schema, and no annotations, the description should at least explain what 'details' includes or what kind of response to expect. It does not, and it also fails to differentiate from sibling tools, leaving the agent with minimal context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the only parameter 'id' with description 'Customer ID' (100% coverage). The description adds no additional meaning to the parameter, so the schema carries the full burden. Baseline 3 applies for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get customer details' uses a specific verb ('Get') and resource ('customer details'), clearly indicating a retrieval operation. It is distinguishable from siblings like 'get_customer_payments' and 'list_customers' by focusing on general customer information, though the term 'details' is somewhat vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'list_customers' or 'get_customer_payments'. There is no context about prerequisites, common use cases, or exclusions, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customer_paymentsB
Get payment history for a customer
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Limit number of results | |
| customer_id | Yes | Customer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description bears full responsibility for disclosing behavior. It only states the basic purpose and does not mention read-only nature, pagination, ordering, what constitutes 'payment history', or any side effects. For a read tool, the lack of detail is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It is concise and easy to parse, though it could benefit from slightly more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool lacks annotations and an output schema, so the description should explain return values or behavioral nuances to be complete. It does not describe what the payment history contains, how limit is applied, or any response structure, leaving significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (customer_id, limit) have descriptions in the schema. The tool description adds no additional parameter semantics beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get payment history for a customer' clearly identifies the verb (get) and resource (payment history) with a customer scope. It is unambiguous and distinct from sibling tools like get_payment_intent or get_payment_link, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a customer' implies this tool is used when you need a customer's payment records, especially given the customer_id parameter. However, it provides no explicit when-to-use guidance or differentiation from alternatives like list_payment_intents or get_payment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_payment_intentB
Get payment intent details
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Payment intent ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the full burden of behavioral disclosure. It only says 'Get payment intent details' and does not mention return format, error behavior, or whether the operation is read-only, which is a notable gap for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler words. It is front-loaded with the action and resource, and every word earns its place. Ideal for a simple retrieval tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (1 param, no output schema), the description is adequate but not complete. It doesn't describe the returned details (e.g., status, amount) or edge cases, which would be expected since no output schema exists. Overall, it meets the minimum viable threshold.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully covers the single parameter 'id' with description 'Payment intent ID', so schema coverage is 100%. The description adds no additional meaning to the parameter, thus receiving the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get payment intent details' clearly specifies the action (get) and resource (payment intent), and distinguishes it from siblings like confirm_payment_intent or get_payment_link. The verb and object are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as list_payment_intents or confirm_payment_intent. It does not state any exclusions or prerequisite conditions, leaving usage entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_payment_linkA
Get details of a specific payment link
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Payment link ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description alone must disclose behavioral traits, but it only states the action ('Get details') without any additional context about response format, error handling, idempotency, or authentication. Lacks the depth expected for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no superfluous words. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool, the description is sufficiently complete: it notes that details of a specific payment link are returned, which aligns with the one required parameter. It does not describe the output structure, but the absence of an output schema and the low complexity make this excusable. Slightly more context about return contents would elevate it to a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the single parameter 'id' with a clear description ('Payment link ID'), providing 100% schema coverage. The description itself adds no further parameter semantics beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get details of a specific payment link' uses a specific verb ('Get'), identifies the resource ('payment link'), and scopes it with 'specific', distinguishing it from sibling tools like list_payment_links and update_payment_link. It is concise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied: use this tool to retrieve a single payment link by ID, especially when paired with list_payment_links for enumeration. However, the description does not explicitly state when not to use it or mention any alternative tools, which limits guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productB
Get product details
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Product ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states 'Get product details', which implies a read operation but gives no information about return format, error handling, permissions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler, effectively communicating the tool's core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (one parameter, no output schema), the description is minimally sufficient but lacks details about what 'product details' includes or any related context; score of 3.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the required 'id' parameter with description 'Product ID', so the description does not need to add parameter details; baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description 'Get product details' clearly identifies a retrieval action for a product resource, distinguishing it from sibling tools like get_payment_link or create_product.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides no context on when to choose this over alternatives, such as list_products or get_customer; no prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_customersD
List customers
| Name | Required | Description | Default |
|---|---|---|---|
| No | Filter by email | ||
| limit | No | Limit number of results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description gives no behavioral information such as whether it returns all customers, supports pagination, or the format of the response. The description carries no burden of disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While extremely short, the description is under-specified rather than concise. It simply restates the tool name without adding useful information, so it does not 'earn its place.'
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and a minimal description, the context is severely lacking. Agents are not told what the returned data looks like, whether there is pagination, or any parameters' behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for both parameters (email and limit), so the baseline is 3. The description itself adds no further parameter context, but the schema suffices.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description "List customers" is a direct restatement of the tool name, providing no additional detail about the resource, scope, or behavior. It does not distinguish from sibling tools like get_customer or get_customer_payments beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool over alternatives. No mention of filters, pagination, or use cases is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_payment_intentsB
List payment intents
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Limit number of results | |
| customer | No | Filter by customer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits, but it only says 'List'. It does not disclose pagination behavior, default limits, ordering, or whether it returns only successful intents. The agent is left to infer the full behavior from the schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero wasted words. It communicates the essential purpose efficiently, matching the calibration example for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional params, no output schema), the description is minimally viable but has gaps: it lacks usage guidance, pagination details, and any differentiation from similar list tools. The schema helps, but the description alone does not fully equip an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('limit' and 'customer') clearly described in the input schema. The description adds no extra semantic detail beyond what the schema provides, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List payment intents' uses a specific verb (list) and explicit resource (payment intents), clearly distinguishing it from siblings like get_payment_intent (singular fetch) and create_payment_intent. It is unambiguous and directly states the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention that it is the standard way to fetch multiple intents, nor does it distinguish from list_payment_links or get_customer_payments. The description is purely a statement of function without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_payment_linksA
List existing payment links
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Limit number of results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure, but it only restates the tool's name without explaining scope, pagination, ordering, or response details. The 'existing' qualifier is ambiguous and lacks actionable context for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence with no redundant words. It efficiently communicates the purpose without unnecessary detail, which is ideal for a low-complexity tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and no output schema, but the description is still sparse. It does not mention whether the list is paginated, filtered by status, or includes any default behavior, leaving the agent to infer details from the sibling context. However, for a basic list operation, the core purpose is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'limit' is fully described in the schema with 'Limit number of results', so schema coverage is 100%. The description adds no additional parameter meaning, which is acceptable given the schema already documents it, but it also doesn't clarify how limit affects results (e.g., default, max).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List) and the resource (payment links), distinguishing it from sibling tools like get_payment_link, create_payment_link, and list_payment_intents. The verb is specific and matches the tool name's intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for fetching existing payment links, but provides no explicit guidance on when to use it over get_payment_link (to retrieve a single link) or list_payment_intents (to list intents instead). It is a minimal list operation with no mention of alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pricesC
List prices
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Limit number of results | |
| active | No | Filter by active status | |
| product | No | Filter by product ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only repeats the tool name and fails to mention read-only status, return format, pagination, or any side effects, which is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At only two words, the description is extremely concise but under-specified. It acts as a title rather than a functional description, offering no structure or additional information, which is closer to under-specification than effective brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three parameters, no output schema, and no annotations, the description is too minimal to contextualize the tool's behavior. It does not explain what a 'price' represents in this context or what the response will look like, leaving the agent with limited understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all three parameters (limit, active, product), achieving 100% coverage. The description adds no extra parameter meaning, but the baseline of 3 is appropriate given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('list') and the resource ('prices'), making the tool's purpose unambiguous. It differentiates from siblings like list_products or list_payment_links by naming the specific resource, though it offers no additional detail beyond the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of context, prerequisites, or exclusions, leaving the agent without direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsC
List products
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Limit number of results | |
| active | No | Filter by active status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states 'List products' and does not disclose the return format, default limit, inclusion of inactive products, or any side effects. The schema hints at an 'active' filter, but the description does not elaborate on behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and under-specified, essentially repeating the tool name without adding useful detail. While concise, it does not earn its place because it lacks the necessary information an agent needs to make informed decisions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has two optional parameters and no output schema. The description fails to explain what the response looks like, any default behavior, or how the parameters affect the result. For a list operation, this is incomplete and leaves critical gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for both parameters ('limit' and 'active'), covering 100% of parameters. The description adds no additional meaning about how these parameters affect results, so the schema handles the semantic load. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List products' uses a clear verb and resource, identifying the primary function. It distinguishes from sibling tools like 'list_prices' or 'list_customers' by naming the specific resource, but adds no extra scope or context beyond the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not mention when to use this tool versus alternatives like 'get_product' or 'list_prices', nor does it clarify whether this lists all products or only those matching the 'active' filter. There are no exclusions or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_payment_linkB
Update a payment link (activate/deactivate)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Payment link ID | |
| active | No | Whether the link is active | |
| metadata | No | Updated metadata |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states 'Update a payment link (activate/deactivate)' without explaining side effects, idempotency, permissions, behavior for missing IDs, or whether metadata replaces or merges. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is concise and to the point, efficiently conveying the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters, a nested metadata object, no output schema, and no annotations. The description is minimal, leaving out return behavior, error conditions, and permissions. While the schema covers parameter meanings, the behavioral context is too sparse for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 100% of the 3 parameters, so the baseline is 3. The description's parenthetical adds minor context about the 'active' parameter but does not clarify metadata merge/replace behavior or add meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update a payment link (activate/deactivate)' clearly states the verb and resource, with the parenthetical specifying the primary mutation actions. This distinguishes it from sibling tools like get_payment_link, create_payment_link, and list_payment_links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for updating existing payment links, but does not explicitly state when to use it versus creating or listing. It offers no exclusions, prerequisites, or alternative tool recommendations, leaving the agent to infer usage from the tool name and siblings.
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.
17 tool updates
v1.0.0- First observed
confirm_payment_intent - First observed
create_customer - First observed
create_payment_intent - First observed
create_payment_link - First observed
create_price - First observed
create_product - First observed
get_customer - First observed
get_customer_payments - First observed
get_payment_intent - First observed
get_payment_link - First observed
get_product - First observed
list_customers - First observed
list_payment_intents - First observed
list_payment_links - First observed
list_prices - First observed
list_products - First observed
update_payment_link
TDQS
Scored across 17 tools
Tools are clearly divided by resource (payment links, payment intents, products, prices, customers), but there is some potential overlap between payment links and payment intents, and between list_payment_intents and get_customer_payments. Descriptions help distinguish them, but an agent might occasionally misselect.
All tool names follow a consistent verb_noun pattern (e.g., create_payment_link, list_prices, get_customer), using lowercase snake_case throughout. This makes the API predictable and easy to navigate.
17 tools is slightly above the ideal range but still appropriate for Stripe's domain, covering payment links, intents, products, prices, and customers. Each tool addresses a distinct need, though a few could be consolidated without loss.
Core CRUD operations exist for payment links, products, and customers, but are incomplete: products and customers lack update/delete, prices lack a get endpoint, and payment intents lack cancel/refund capabilities. This creates workflow gaps for managing the full lifecycle.
Maintenance
Related MCP Connectors
Stripe payments for AI agents. Create links, verify, manage customers.
Create instxnt.xyz storefronts through Claude: add products, connect Stripe, go live.
Send invoices from Claude and ChatGPT. One sentence becomes a PDF with a Stripe payment link.
Stripe MCP Pack — read-only access to Stripe data via API key.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables natural language interaction with Stripe accounts to query customers, revenue, invoices, subscriptions, disputes, and issue refunds.29 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables integration with Stripe APIs through function calling, supporting operations on customers, products, invoices, subscriptions, and more.8,372 npmMIT
- AlicenseNot gradedqualityBmaintenanceLets AI agents accept US payments (cards, Apple Pay, Google Pay) via Stripe hosted checkout. Includes tools to create payment links and query payment status.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to accept payments in Poland via Stripe, providing tools to create hosted-checkout links and query payment status.MIT