Skip to main content
Glama
udaykapur

stripe-mcp-server

by udaykapur

Stripe MCP Server

A local Model Context Protocol server for Stripe payment operations. 52 tools across 8 domains, with built-in PII redaction and input validation.

Built for AI-assisted development workflows where Stripe API access needs to be both comprehensive and safe by default.

Why this exists

Stripe's official remote MCP server (mcp.stripe.com) uses OAuth and includes doc search, but exposes a smaller toolset. This server runs locally, covers more of the Stripe API surface, and sanitises every response before it reaches the model context, so sensitive data never leaks into conversation history or logs.

This server

Stripe official

Transport

stdio (local)

HTTP (remote)

Auth

STRIPE_SECRET_KEY env

OAuth

Tools

52

Smaller subset

PII redaction

Built-in

Stripe-managed

Doc search

No

Yes

Idempotency keys

All mutating tools

Varies

Input validation

Strict schemas (Zod)

Varies

The two servers complement each other. Run both if you want operational tools plus doc search.

Related MCP server: Integrations MCP

Tools (52)

Customers (6)

create_customer, retrieve_customer, update_customer, delete_customer, list_customers, search_customers

Payments (11)

create_payment_intent, retrieve_payment_intent, confirm_payment_intent, capture_payment_intent, cancel_payment_intent, list_payment_intents, list_payment_methods, attach_payment_method, detach_payment_method, retrieve_charge, list_charges

Subscriptions (9)

create_subscription, retrieve_subscription, update_subscription, cancel_subscription, list_subscriptions, create_product, list_products, create_price, list_prices

Invoices (8)

create_invoice, retrieve_invoice, finalize_invoice, pay_invoice, void_invoice, list_invoices, retrieve_upcoming_invoice, create_invoice_item

Checkout (5)

create_checkout_session, retrieve_checkout_session, list_checkout_sessions, create_coupon, list_coupons

Refunds (3)

create_refund, retrieve_refund, list_refunds

Balance (5)

retrieve_balance, list_balance_transactions, list_payouts, list_disputes, retrieve_dispute

Webhooks (5)

create_webhook_endpoint, delete_webhook_endpoint, list_webhook_endpoints, list_events, retrieve_event

Resources (4)

Exposed as MCP resources (read-only, sanitised):

  • stripe://account - current account details

  • stripe://balance - balance by currency

  • stripe://webhook-endpoints - registered webhook endpoints

  • stripe://products - active product catalogue with default prices

Prompts (4)

Pre-built prompt templates for common integration tasks:

  • review_stripe_integration - security, error handling, and best-practice audit

  • setup_webhooks - end-to-end webhook implementation guide per framework

  • design_pricing - pricing model design with Stripe Products and Prices

  • troubleshoot_payment - diagnose failed payments, declines, and disputes

Security posture

Every Stripe API response is sanitised before reaching MCP output:

  • Secrets redacted: webhook signing secrets, PaymentIntent client_secret values, including inside expanded nested objects

  • PII masked: email addresses (shows first 2 chars + domain), phone numbers (shows last 4 digits), billing/shipping addresses fully redacted

  • URLs redacted: hosted invoice URLs and invoice PDF links (bearer-style access tokens)

  • Metadata redacted: values stripped, keys preserved for operator context

  • Unknown objects: unrecognised Stripe object types reduced to a minimal envelope (id, object, status, redacted: true) instead of passed through raw

  • Input validation: Stripe IDs, currency codes, webhook event names, API versions, checkout payment method types, and balance transaction types validated against Zod schemas. Enum validators are derived from the installed Stripe SDK's type declarations at startup; if those files change shape in a future SDK version, validators degrade to allow-all with a stderr warning rather than crashing

  • Idempotency: all mutating tools accept optional idempotency_key (except deletions, which Stripe treats as inherently idempotent)

  • Pinned API version: 2026-05-27.dahlia, set in src/stripe-client.ts

  • Bounded runtime: network retries capped at 0-5, timeout capped at 1-120 seconds

Setup

Prerequisites

  • Node.js 18+ for runtime. Node ^20.19.0 or >=22.12.0 for running tests (Vite/Vitest dev dependency requirement)

  • A Stripe account with API keys (dashboard.stripe.com/apikeys)

Install and build

git clone <repo-url>
cd stripe-mcp-server
npm install
npm run build

Environment

cp .env.example .env
# Edit .env with your Stripe secret key

Variable

Required

Default

Description

STRIPE_SECRET_KEY

Yes

-

Secret key (sk_test_…, sk_live_…) or restricted key (rk_test_…, rk_live_…)

STRIPE_MAX_NETWORK_RETRIES

No

2

Max retries on transient failures (0-5)

STRIPE_TIMEOUT_MS

No

30000

Request timeout in milliseconds (1000-120000)

Using restricted keys

For tighter security, use restricted keys (rk_*) instead of full secret keys. Minimum permissions per tool group:

Tool group

Required permissions

Customers

Customers: Read/Write

Payments

PaymentIntents, PaymentMethods, Charges: Read/Write

Subscriptions

Subscriptions, Products, Prices: Read/Write

Invoices

Invoices: Read/Write

Checkout

Checkout Sessions: Read/Write; Coupons: Read/Write

Refunds

Refunds: Read/Write (also needs Charges or PaymentIntents: Read)

Balance

Balance: Read; Payouts: Read; Disputes: Read

Webhooks

Webhook Endpoints: Read/Write; Events: Read

Grant only the groups you need. Read-only tools (list/retrieve) need only Read permission on their resource.

Wire into your MCP client

Claude Code (.mcp.json)

{
  "mcpServers": {
    "stripe": {
      "command": "node",
      "args": ["/absolute/path/to/stripe-mcp-server/dist/index.js"],
      "env": {
        "STRIPE_SECRET_KEY": "sk_test_..."
      }
    }
  }
}

VS Code (.vscode/mcp.json)

{
  "servers": {
    "stripe": {
      "command": "node",
      "args": ["/absolute/path/to/stripe-mcp-server/dist/index.js"],
      "env": {
        "STRIPE_SECRET_KEY": "sk_test_..."
      }
    }
  }
}

Other MCP clients

Any client that supports stdio transport can run this server. Point it at dist/index.js with STRIPE_SECRET_KEY in the environment.

Verification

npm test        # 42 tests (sanitisation, config validation, schema checks)
npm run build   # TypeScript compilation to dist/

Project structure

src/
  index.ts                   # Server entry point, tool/resource/prompt registration
  stripe-client.ts           # Stripe SDK singleton with pinned version and bounded config
  tools/
    balance.ts               # Balance and payout tools
    checkout.ts              # Checkout Session and coupon tools
    customers.ts             # Customer CRUD and search
    invoices.ts              # Invoice lifecycle tools
    payments.ts              # PaymentIntent and PaymentMethod tools
    refunds.ts               # Refund tools
    subscriptions.ts         # Subscription, Product, and Price tools
    webhooks.ts              # Webhook endpoint and event tools
  resources/index.ts         # MCP resources (account, balance, webhooks, products)
  prompts/index.ts           # MCP prompt templates
  utils/stripe-toolkit.ts    # Sanitisation, validation schemas, error formatting
tests/
  stripe-toolkit.test.ts     # Sanitisation and masking tests
  stripe-config-and-schemas.test.ts  # Config validation and schema tests

Design decisions

Sanitise by default, not by opt-in. Every Stripe object type has an explicit sanitisation path. Unknown object types are reduced rather than passed through. This means new Stripe object types added in future API versions are safe by default (they show id, status, and redacted: true until an explicit handler is added).

Validate from Stripe's own type definitions. Checkout payment method types, webhook event names, and API versions are loaded at startup from the installed Stripe SDK's TypeScript declaration files. When you upgrade the Stripe SDK, the validators update automatically. If the SDK restructures its type files in a future major version, validators degrade to allow-all with a stderr warning rather than crashing. The wildcard * webhook event is always rejected regardless of validator state.

No stored state. The server holds no data between requests beyond the Stripe SDK client singleton. All state lives in Stripe's API.

Licence

MIT

Available Tools

52 tools
attach_payment_methodAttach Payment MethodC

Attach a payment method to a customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
payment_method_idYesPayment method ID (pm_...)
customerYesCustomer ID to attach to (cus_...)
idempotency_keyNoOptional idempotency key for safe retries

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, and the description fails to disclose behavioral traits such as whether attaching a payment method sets it as default, if it requires special permissions, or what happens on conflict. The description carries the full burden for a mutation tool but provides only the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at one sentence, but its brevity leads to under-specification. It could benefit from structured details without being verbose.

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

Completeness2/5

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

For a mutation tool with no output schema and no annotations, the description should explain return behavior, side effects (e.g., setting default payment method), and error conditions. It lacks this context, making it incomplete despite the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already well-documented (patterns, required status). The description adds no additional parameter semantics beyond what the schema provides, scoring the baseline.

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?

The description clearly states the action (attach) and the resource (payment method to a customer), making the tool's purpose immediately understandable. It distinguishes from sibling tools like detach_payment_method by implying the opposite direction.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives like detach_payment_method or how it interacts with customer payment method settings. The absence of usage context forces the agent to infer based on name alone.

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

cancel_payment_intentCancel Payment IntentA
Destructive

Cancel a PaymentIntent. Can only cancel intents that are not already succeeded.

ParametersJSON Schema
NameRequiredDescriptionDefault
payment_intent_idYesPaymentIntent ID (pi_...)
cancellation_reasonNoReason for cancellation
idempotency_keyNoOptional idempotency key for safe retries

TDQS

A4/5.0
Behavior4/5

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

The description adds the important behavioral constraint about intent state beyond the destructiveHint annotation. It does not elaborate on side effects like idempotency or webhook triggers, but the core safety constraint is well communicated.

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?

Two sentences with zero redundancy. Every word serves a purpose: the verb, resource, and the critical state constraint.

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

Completeness4/5

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

Given the simplicity of the tool and no output schema, the description adequately covers the core purpose and a key limitation. It does not describe return values, but that is acceptable for a cancellation action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for all three parameters, so the baseline is 3. The description does not add additional semantic guidance beyond the schema's own definitions (e.g., pattern, enum).

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 clearly states the verb 'Cancel' on the resource 'PaymentIntent' and includes a key constraint ('not already succeeded'), distinguishing it from sibling tools like capture_payment_intent or confirm_payment_intent.

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 specifies that cancellation is only possible for intents that are not yet succeeded, which provides a clear precondition. However, it does not mention when to use alternatives (e.g., create_refund for succeeded intents) or explicitly state when not to use the tool.

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

cancel_subscriptionCancel SubscriptionA
Destructive

Cancel a subscription immediately or at the end of the current period.

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYesSubscription ID (sub_...)
cancel_at_period_endNoIf true, cancel at period end instead of immediately (default: immediate)
cancellation_detailsNoCancellation details
idempotency_keyNoOptional idempotency key for safe retries

TDQS

A3.5/5.0
Behavior3/5

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

Annotations indicate destructiveHint=true, and description adds timing nuance (immediate vs end of period). However, it does not disclose side effects like proration, refunds, or access loss.

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?

Single sentence, 11 words, front-loaded with action and key distinction. No wasted words.

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?

No output schema. Description provides high-level purpose but lacks details on return values, confirmation, or consequences beyond the destructive annotation. Adequate for a simple tool but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so description adds little beyond the schema. The description's mention of 'immediate or at the end of the current period' maps to cancel_at_period_end, but the schema already describes that parameter.

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?

Description uses verb 'Cancel' and resource 'subscription', clearly distinguishing two modes (immediate vs at period end). It uniquely identifies the tool among siblings like update_subscription or delete_customer.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., update_subscription for modifications). No when-not-to-use or prerequisite conditions provided.

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

capture_payment_intentCapture Payment IntentA
Destructive

Capture a previously authorized PaymentIntent (capture_method=manual). Optionally capture a partial amount.

ParametersJSON Schema
NameRequiredDescriptionDefault
payment_intent_idYesPaymentIntent ID (pi_...)
amount_to_captureNoAmount to capture in smallest currency unit. Omit to capture full authorization.
idempotency_keyNoOptional idempotency key for safe retries

TDQS

A4.4/5.0
Behavior4/5

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

Annotations include destructiveHint=true, so the description doesn't need to restate destructiveness. It adds that partial capture is optional. No contradictions. Could discuss side effects or authorization, but overall transparent.

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?

Two sentences, front-loaded with the main purpose, no fluff. Every sentence earns its place.

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

Completeness4/5

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

No output schema, but the tool is simple. Could mention return value (captured PaymentIntent), but the description is adequate for its complexity. Annotations and schema cover most needs.

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. The description adds value by explaining 'Optionally capture a partial amount' for amount_to_capture and 'safe retries' for idempotency_key, which clarifies usage beyond schema.

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 clearly states the verb 'capture', the resource 'PaymentIntent', and the specific condition 'previously authorized (capture_method=manual)'. It distinguishes from sibling tools like confirm_payment_intent or create_payment_intent.

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

Usage Guidelines4/5

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

It specifies when to use: for previously authorized PaymentIntents with manual capture. It does not explicitly state when not to use or list alternatives, but the context is clear enough for an AI agent to select correctly.

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

confirm_payment_intentConfirm Payment IntentA
Destructive

Confirm a PaymentIntent to initiate the payment. Optionally attach a payment method.

ParametersJSON Schema
NameRequiredDescriptionDefault
payment_intent_idYesPaymentIntent ID (pi_...)
payment_methodNoPayment method ID to use for confirmation
return_urlNoReturn URL for redirect-based payment methods
idempotency_keyNoOptional idempotency key for safe retries

TDQS

A3.5/5.0
Behavior3/5

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

Annotations indicate destructiveHint=true, so the tool is a write operation. The description adds that it initiates payment, but does not disclose potential side effects (e.g., charging the customer), idempotency behavior, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded and efficient. However, it could include a bit more context without becoming verbose.

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

Completeness2/5

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

With no output schema, the description should at least mention the return value (e.g., confirmed PaymentIntent object). It also lacks details on required PaymentIntent status and behavior for different payment methods.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds minor value by stating the payment method is optional, but does not elaborate on return_url or idempotency_key beyond what the schema provides.

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 clearly states the tool confirms a PaymentIntent to initiate payment, with an optional payment method attachment. It distinguishes from sibling tools like cancel_payment_intent and capture_payment_intent.

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 implies the tool is used to confirm a PaymentIntent, but does not specify when to use it versus alternatives like capture_payment_intent, nor does it mention prerequisites such as the PaymentIntent must be in a certain status.

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

create_checkout_sessionCreate Checkout SessionB

Create a Stripe Checkout session. Returns a URL to redirect customers to Stripe-hosted payment page.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes"payment" for one-time, "subscription" for recurring, "setup" for saving payment method
line_itemsNoLine items, max 20 (required for payment and subscription modes)
success_urlYesURL to redirect after successful payment
cancel_urlNoURL to redirect if customer cancels
customerNoExisting customer ID
customer_emailNoPre-fill email (ignored if customer is set)
metadataNoSession metadata
allow_promotion_codesNoAllow promotion code entry
trial_period_daysNoTrial days (subscription mode only)
payment_method_typesNoPayment methods (e.g. ["card", "us_bank_account"])
expires_atNoSession expiration as Unix timestamp (30min to 24hr from now)
idempotency_keyNoOptional idempotency key for safe retries

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only mentions behavior ('Creates... Returns a URL') but lacks details on side effects (e.g., idempotency, expiration, conditional requirements like line_items for certain modes). The schema provides param-level detail, but the description does not surface key aspects.

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?

The description is two sentences, minimal and focused, with no wasted text. It is front-loaded with the primary action and return value.

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

Completeness2/5

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

Given the tool's complexity (12 parameters, nested objects, conditional requirements) and no output schema, the description is incomplete. It fails to mention critical constraints like line_items being required for payment/subscription modes, session expiration, or idempotency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond what the schema already provides for parameters. It does not highlight important parameter interactions (e.g., mode-dependent fields).

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 clearly specifies the verb 'Create' and the resource 'Stripe Checkout session'. It distinguishes from sibling tools like create_payment_intent or create_subscription by naming the specific Stripe-hosted checkout flow.

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 implies usage for customer-facing payments by stating 'Returns a URL to redirect customers', but it does not explicitly state when to use this tool over alternatives such as create_payment_intent or create_subscription, nor does it provide exclusions.

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

create_couponCreate CouponB

Create a Stripe coupon for discounts on subscriptions or invoices.

ParametersJSON Schema
NameRequiredDescriptionDefault
percent_offNoPercentage discount (use this OR amount_off)
amount_offNoFixed amount discount in smallest currency unit
currencyNoCurrency for amount_off (required if using amount_off)
durationYesHow long the coupon applies
duration_in_monthsNoNumber of months (required when duration is "repeating")
nameNoCoupon display name
max_redemptionsNoMax times this coupon can be redeemed
redeem_byNoUnix timestamp after which coupon can no longer be redeemed
metadataNoMetadata
idempotency_keyNoOptional idempotency key for safe retries

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It only states the broad purpose and does not mention idempotency, rate limits, error scenarios, or what happens upon creation (e.g., unique constraints, validation).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant information. However, it could be structured to include more behavioral or usage context without being verbose.

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

Completeness2/5

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

Given the tool has 10 parameters, no output schema, and involves creating a resource with potential interactions (e.g., linking to subscriptions/invoices), the description lacks details about return value, error handling, and prerequisites, making it incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all parameters, so the baseline is 3. The description adds no additional context beyond the schema's parameter descriptions, earning the baseline score.

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 clearly states the verb 'create', the resource 'coupon', and the purpose 'for discounts on subscriptions or invoices', distinguishing it from sibling tools like 'create_subscription' or 'create_invoice'.

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

Usage Guidelines2/5

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 (e.g., using a promotion code or applying a discount directly on an invoice). No explicit 'when not to use' or alternative tool references are given.

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

create_customerCreate CustomerB

Create a new Stripe customer with optional email, name, phone, description, and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoCustomer email address
nameNoCustomer full name
phoneNoCustomer phone number
descriptionNoInternal description
metadataNoKey-value metadata pairs
payment_methodNoPayment method ID to attach
idempotency_keyNoOptional idempotency key for safe retries

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral burden. It mentions creation but omits important traits like idempotency (despite idempotency key parameter), authentication needs, rate limits, or return value. The idempotency key parameter hints at safe retries, but description doesn't explain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise sentence, efficient and front-loaded. However, it could be slightly more structured by listing all optional fields or mentioning idempotency. Minor improvement possible.

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

Completeness2/5

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

Given 7 parameters, no annotations, and no output schema, the description is minimal. It doesn't explain the creation process, prerequisites, response structure, or differentiate from siblings like search_customers or update_customer. Incomplete for a tool with complex context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already described. The tool description lists only a subset of fields (email, name, phone, description, metadata) and omits payment_method and idempotency_key. It adds no new semantics beyond the schema, warranting baseline 3.

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 clearly states 'Create a new Stripe customer' with specific verb and resource, and lists optional fields (email, name, phone, description, metadata). It distinguishes from sibling tools like delete_customer and update_customer.

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 implies usage when you need to create a customer, but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among the many sibling tools.

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

create_invoiceCreate InvoiceA

Create a draft invoice for a customer. Add invoice items before finalizing.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerYesCustomer ID (cus_...)
collection_methodNoPayment collection method
days_until_dueNoDays until due (for send_invoice)
descriptionNoInvoice description
metadataNoMetadata
auto_advanceNoAuto-finalize when ready (default true)
idempotency_keyNoOptional idempotency key for safe retries

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It mentions creating a draft but does not disclose other behaviors such as idempotency, error handling, or side effects like sending emails. The auto_advance parameter is not addressed.

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?

Two sentences, zero fluff. The description is front-loaded with the core purpose and includes a critical workflow hint. Every word earns its place.

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

Completeness2/5

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

Given the tool has 7 parameters (1 required, 6 optional with enums and defaults), no output schema, and no annotations, the description is too minimal. It does not explain success/failure states, return value, or how parameters interact. More detail is needed for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add any extra meaning beyond what the schema already provides for parameters. It does not explain usage of collection_method or days_until_due, but the schema descriptions are adequate.

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 clearly states the verb 'Create' and resource 'draft invoice', and distinguishes this tool from siblings like finalize_invoice and create_invoice_item by specifying the draft state and the need to add items before finalizing.

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

Usage Guidelines4/5

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

The description implies a workflow: create draft, then add items, then finalize. This provides context for when to use this tool versus alternatives. However, it does not explicitly state when not to use it or compare with other creation tools like create_payment_intent.

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

create_invoice_itemCreate Invoice ItemB

Add a line item to an invoice (or to the customer's next upcoming invoice).

ParametersJSON Schema
NameRequiredDescriptionDefault
customerYesCustomer ID (cus_...)
invoiceNoInvoice ID (in_...). Omit to add to next upcoming invoice.
priceNoPrice ID (price_...) - use this OR amount+currency
amountNoAmount in smallest currency unit (use with currency, not price)
currencyNoCurrency code (use with amount)
descriptionNoLine item description
quantityNoQuantity
metadataNoMetadata
idempotency_keyNoOptional idempotency key for safe retries

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the action without disclosing traits like mutation, idempotency, effects on invoice totals, or required permissions. This is insufficient for a create tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys the core function. It is concise, though could include more detail without losing brevity.

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

Completeness2/5

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

With 9 parameters, no output schema, and no annotations, the description is too brief. It does not describe the return value, the line item structure, or behavioral implications, leaving gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% parameter coverage with descriptions, so the description adds no additional meaning. It does not explain parameter relationships or provide usage tips beyond the schema.

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?

Description uses specific verb 'Add' and resource 'line item to an invoice' and distinguishes between adding to an existing invoice or the next upcoming invoice. This clearly differentiates it from sibling tools like create_invoice or finalize_invoice.

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?

Description implies usage (add line items to invoices) but does not explicitly provide when to use this tool versus alternatives, nor does it state when not to use it or list prerequisites.

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

create_payment_intentCreate Payment IntentB
Destructive

Create a Stripe PaymentIntent. Amount is in the smallest currency unit (e.g. cents for USD).

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount in smallest currency unit (e.g. 1000 = $10.00)
currencyYesThree-letter ISO currency code (e.g. "usd", "eur")
customerNoCustomer ID to associate
descriptionNoPayment description
payment_methodNoPayment method ID to use
confirmNoImmediately confirm the payment (default false)
automatic_payment_methodsNoEnable automatic payment methods (default true)
metadataNoMetadata key-value pairs
receipt_emailNoEmail to send receipt to
statement_descriptorNoStatement descriptor (max 22 chars)
capture_methodNo"automatic" (default) or "manual" for auth-then-capture
off_sessionNoSet true if payment is made without customer present
idempotency_keyNoOptional idempotency key for safe retries

TDQS

B3.2/5.0
Behavior3/5

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

The annotation destructiveHint=true indicates side effects, but the description does not elaborate on behaviors like automatic confirmation or manual capture. It adds only the currency unit note, which is already in the schema.

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?

The description is extremely concise with two sentences, no wasted words, and front-loaded with the core action.

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

Completeness2/5

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

Given the tool's 13 parameters and no output schema, the description lacks necessary context about return values, side effects, and workflow steps (e.g., what happens when confirm is true).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 13 parameters have schema descriptions (100% coverage), so the description's mention of currency unit is redundant. No additional parameter meaning is provided beyond what the schema already conveys.

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?

The description clearly states the tool creates a Stripe PaymentIntent, using a specific verb and resource. However, it does not differentiate from sibling tools like confirm_payment_intent or create_checkout_session, leaving room for ambiguity in context.

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

Usage Guidelines2/5

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, such as create_checkout_session or capture_payment_intent. There is no mention of prerequisites, limitations, or exclusions.

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

create_priceCreate PriceB

Create a new price for a product.

ParametersJSON Schema
NameRequiredDescriptionDefault
productYesProduct ID (prod_...)
unit_amountYesPrice in smallest currency unit (e.g. 1000 = $10.00)
currencyYesCurrency code (e.g. "usd")
recurringNoRecurring config (omit for one-time price)
activeNoWhether price is active
metadataNoMetadata
nicknameNoInternal nickname
idempotency_keyNoOptional idempotency key for safe retries

TDQS

B3.1/5.0
Behavior2/5

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

The description 'Create a new price for a product' implies a mutation but adds no behavioral traits beyond the verb. Annotations are absent, so the description carries full burden; yet it does not disclose idempotency, side effects, or error scenarios. Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no redundancies. However, given the tool's complexity (8 params, nested objects), the description is perhaps too brief to be fully informative, slightly limiting conciseness score from 5.

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

Completeness2/5

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

The tool requires nested objects (recurring), multiple required fields, and no output schema. The description provides zero context about return value, error cases, or behavior for one-time vs. subscription prices. Incomplete for a creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no further meaning or examples, meeting the baseline for high coverage.

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 clearly states the verb 'create' and resource 'price for a product', exactly matching the tool name. Among sibling tools like create_product or create_coupon, this distinguishes the tool's purpose unambiguously.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives like create_product or when not to use it. No prerequisites (e.g., product must exist) or context about idempotency key usage. The description is silent on usage conditions.

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

create_productCreate ProductC

Create a new Stripe product.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProduct name
descriptionNoProduct description
activeNoWhether the product is active (default true)
metadataNoMetadata
default_price_dataNoInline price creation
idempotency_keyNoOptional idempotency key for safe retries

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, and the description gives only the basic action. It fails to disclose behavioral traits such as idempotency key support, the impact of setting 'active' to false, or the side effects of including 'default_price_data' (which creates a price simultaneously).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at 4 words, which is efficient but arguably too terse. It front-loads the purpose well, but could include a brief note about inline pricing without losing conciseness.

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

Completeness2/5

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

Given the tool's complexity (6 parameters, nested objects, no output schema), the description is insufficient. It omits that 'default_price_data' creates a price, does not explain the idempotency_key's role, and provides no information about the return value or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage, so baseline is 3. The description adds no additional meaning beyond what the schema already provides, neither explaining parameter semantics nor giving usage examples.

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?

The description 'Create a new Stripe product' uses a clear verb+resource structure. However, there is no differentiation from sibling tools like 'create_price' which may be related, and the tool's ability to create an inline price is not highlighted.

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

Usage Guidelines2/5

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 (e.g., 'create_price' separately). The description does not mention prerequisites or typical use cases, leaving the agent without context for selection.

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

create_refundCreate RefundB
Destructive

Refund a charge or payment intent. Specify amount for partial refunds; omit for full refund.

ParametersJSON Schema
NameRequiredDescriptionDefault
payment_intentNoPaymentIntent ID to refund (pi_...)
chargeNoCharge ID to refund (ch_...) - use this or payment_intent
amountNoAmount to refund in smallest currency unit. Omit for full refund.
reasonNoReason for refund
metadataNoMetadata
idempotency_keyNoOptional idempotency key for safe retries

TDQS

B3.3/5.0
Behavior2/5

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

Annotations indicate destructiveHint=true, but the description does not elaborate on behavioral implications like irreversibility, impact on balances, or dispute risks. It adds minimal context beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, but could benefit from noting required parameters. It is appropriately sized for the tool's complexity.

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

Completeness2/5

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

Despite full schema coverage, the description omits critical constraints like the need to specify one of 'charge' or 'payment_intent', and does not explain inapplicability to certain payment states. It is insufficient for a complex tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; the description repeats the partial vs full refund guidance for 'amount' but adds little else. Baseline 3 is appropriate.

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 clearly states the action (refund) and the resources (charge or payment intent). It distinguishes this tool from sibling tools like 'create_payment_intent' and 'list_refunds'.

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 provides guidance on specifying amount for partial vs full refunds, but does not clarify that one of 'charge' or 'payment_intent' must be provided, nor does it discuss when to use this tool over alternatives like 'cancel_payment_intent'.

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

create_subscriptionCreate SubscriptionA
Destructive

Create a new subscription for a customer. Requires at least one price item.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerYesCustomer ID (cus_...)
itemsYesSubscription line items
default_payment_methodNoPayment method ID to use
trial_period_daysNoFree trial days
cancel_at_period_endNoCancel at end of current period
metadataNoMetadata key-value pairs
collection_methodNoHow to collect payment
days_until_dueNoDays until invoice is due (for send_invoice)
couponNoCoupon ID to apply
promotion_codeNoPromotion code ID to apply
idempotency_keyNoOptional idempotency key for safe retries

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true. Description adds no additional behavioral context beyond the creation action, such as triggers, side effects, or confirmation requirements. No contradictions with annotations.

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?

Single sentence, direct and front-loaded with verb and resource. No unnecessary words. Every word earns its place.

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

Completeness2/5

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

With 11 parameters, nested items, and no output schema, the description is insufficient. It does not explain typical workflow, prerequisites (e.g., customer must exist), or what happens upon creation (e.g., invoice generation, payment attempt). A more comprehensive description is needed for such a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers all 11 parameters with descriptions (100% coverage). The description adds no parameter-specific information beyond what schema provides, so baseline score of 3 is appropriate.

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?

Clearly states 'Create a new subscription for a customer' with a specific verb and resource. Requirement for at least one price item adds clarity. Distinguishes from siblings like cancel_subscription and update_subscription.

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?

Describes a precondition (requires at least one price item) but does not provide guidance on when to use this tool versus alternatives like create_checkout_session or create_invoice. No explicit when-to-use or when-not-to-use.

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

create_webhook_endpointCreate Webhook EndpointB
Destructive

Register a new webhook endpoint with Stripe.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesHTTPS URL that will receive webhook events
enabled_eventsYesEvent types to listen for, e.g. ["payment_intent.succeeded", "customer.subscription.deleted"].
descriptionNoEndpoint description
metadataNoMetadata
api_versionNoStripe API version for events (defaults to account version)
idempotency_keyNoOptional idempotency key for safe retries

TDQS

B3.1/5.0
Behavior2/5

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

The description provides only minimal context: 'Register a new webhook endpoint'. It does not disclose what response to expect, whether the call is idempotent, or any other behavioral traits beyond the destructiveHint annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise at one sentence. It is front-loaded with the purpose, but could be slightly more informative without becoming verbose.

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

Completeness2/5

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

The tool has no output schema and only the destructiveHint annotation. The description does not cover return values, error conditions, or setup requirements, leaving significant gaps for a creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 6 parameters have schema descriptions (100% coverage), so the description adds no additional meaning. Baseline score of 3 is appropriate.

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 clearly states the verb 'register', the resource 'webhook endpoint', and the target 'Stripe'. It effectively distinguishes this tool from siblings like 'delete_webhook_endpoint' and 'list_webhook_endpoints'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, typical use cases, or situations where another tool might be more appropriate.

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

delete_customerDelete CustomerA
Destructive

Permanently delete a Stripe customer. This cannot be undone. Active subscriptions will be canceled.

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYesStripe customer ID (cus_...)

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral context beyond the destructiveHint annotation: 'This cannot be undone. Active subscriptions will be canceled.' This informs the agent of irreversibility and 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. The most critical information (permanence, cancellation) is front-loaded. Excellent conciseness.

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

Completeness4/5

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

For a simple deletion tool with one parameter and no output schema, the description covers irreversibility and subscription cancellation, which are likely the most important behavioral aspects. It is complete enough for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (one parameter with pattern and description). The description does not add parameter-level details, but the schema is sufficient. Baseline 3 is appropriate.

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 clearly states 'Permanently delete a Stripe customer', which is a specific verb and resource. It distinguishes from sibling tools like update_customer or retrieve_customer by indicating permanent deletion and side effects.

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

Usage Guidelines4/5

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

The description implicitly guides usage by stating it's permanent and cancels subscriptions, but does not explicitly mention when not to use or suggest alternatives (e.g., deactivating via update). Sibling context helps, but more explicit guidance would improve.

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

delete_webhook_endpointDelete Webhook EndpointA
Destructive

Delete a webhook endpoint. Cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
webhook_endpoint_idYesWebhook endpoint ID (we_...)

TDQS

A3.8/5.0
Behavior3/5

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

The description adds the irreversibility context beyond the destructiveHint annotation, but does not elaborate on side effects or requirements.

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?

Two sentences with no redundant information; every word earns its place.

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

Completeness4/5

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

For a simple destructive tool with annotations, the description covers the essential behavior; could optionally mention post-deletion effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description does not add any parameter-specific meaning beyond what the schema provides.

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 clearly states the action (Delete) and resource (webhook endpoint). The name and description distinguish it from siblings like create_webhook_endpoint and list_webhook_endpoints.

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 provides a warning ('Cannot be undone') but does not explicitly state when to use this tool vs alternatives or include an explicit 'when-not'.

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

detach_payment_methodDetach Payment MethodA
Destructive

Detach a payment method from its customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
payment_method_idYesPayment method ID (pm_...)
idempotency_keyNoOptional idempotency key for safe retries

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true, so the description adds no extra behavioral context. The description does not state what happens to the payment method after detachment (e.g., whether it can be reattached).

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?

Single sentence, no wasted words, front-loaded with action and resource.

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

Completeness2/5

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

For a destructive operation, description lacks details on irreversibility, return value, or effects on customer. With no output schema, agents need more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description adds no new meaning beyond the schema's descriptions of payment_method_id and idempotency_key.

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?

Description clearly states the action (detach), resource (payment method), and relationship (from its customer). This distinguishes it from sibling tools like attach_payment_method.

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?

No explicit guidance on when to use or avoid this tool. The implication is that it complements attach_payment_method, but prerequisites or alternatives are not mentioned.

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

finalize_invoiceFinalize InvoiceA

Finalize a draft invoice so it can be paid. This transitions it from draft to open.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesInvoice ID (in_...)
auto_advanceNoAuto-advance to payment after finalization
idempotency_keyNoOptional idempotency key for safe retries

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so the description carries full burden. It states the state transition (draft to open) but does not disclose potential side effects, irreversibility, or required permissions. Adequate but could be more detailed.

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?

The description is two concise sentences with no fluff. Every word adds value, making it easy to parse quickly.

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?

No output schema exists, but the description does not mention what the tool returns (e.g., the finalized invoice object). For a simple state-changing tool, it is somewhat complete but lacks return value context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description does not add any information beyond what the schema's parameter descriptions already provide. Baseline of 3 is appropriate.

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 clearly states the action (finalize), the resource (draft invoice), and the outcome (transitions to open, can be paid). It distinguishes from sibling tools like create_invoice, void_invoice, and pay_invoice.

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

Usage Guidelines4/5

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

The description implies when to use: for draft invoices that need to become payable. It does not explicitly mention when not to use or alternatives like pay_invoice, but the context is clear enough.

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

list_balance_transactionsList Balance TransactionsA
Read-only

List balance transactions (charges, refunds, payouts, fees, etc.) with optional filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by transaction type: "charge", "refund", "payout", "adjustment", "transfer", etc.
payoutNoFilter by payout ID
sourceNoFilter by source ID (charge, refund, etc.)
limitNoResults per page
starting_afterNoPagination cursor
created_gteNoCreated at or after (Unix timestamp)
created_lteNoCreated at or before (Unix timestamp)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, and the description adds scope clarification but does not disclose additional behavioral traits like pagination or rate limits, which would be useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loading the purpose, though it could be slightly expanded without verbosity.

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?

Given no output schema and 7 parameters, the description is adequate but lacks details on return format or pagination behavior, leaving some gaps for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed parameter descriptions, so the tool description's mention of 'optional filtering' adds minimal extra meaning.

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 clearly states it lists balance transactions and provides examples of included types (charges, refunds, payouts, fees), distinguishing it from sibling tools like list_charges or list_refunds which focus on single types.

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 mentions optional filtering but does not explicitly guide when to use this tool versus sibling tools like list_charges or list_payouts, missing explicit usage context.

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

list_chargesList ChargesB
Read-only

List charges with optional filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerNoFilter by customer ID
payment_intentNoFilter by PaymentIntent ID
limitNoResults per page
starting_afterNoPagination cursor

TDQS

B3.2/5.0
Behavior3/5

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

The annotation readOnlyHint=true already signals this is a read-only operation. The description adds no further behavioral traits, such as pagination or default ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no filler. Efficient, but slightly terse; could benefit from additional context without becoming verbose.

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 simple list tool with good schema descriptions, the description is minimally adequate. However, it omits pagination details and does not explain the response format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions on each parameter. The description adds no additional meaning beyond 'optional filtering', so baseline 3 is appropriate.

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?

The description clearly states the tool lists charges with optional filtering. It uses a specific verb and resource, distinguishing it from other list tools by resource name.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. There is no mention of context or exclusion criteria, 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_checkout_sessionsList Checkout SessionsA
Read-only

List Checkout sessions with optional filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerNoFilter by customer ID
payment_intentNoFilter by PaymentIntent ID
subscriptionNoFilter by Subscription ID
statusNoFilter by session status
limitNoResults per page
starting_afterNoPagination cursor

TDQS

A3.6/5.0
Behavior3/5

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

The readOnlyHint annotation already indicates safe reading. The description adds no additional behavioral context (e.g., pagination defaults, rate limits), but does not contradict the annotation.

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?

A single, front-loaded sentence with no wasted words. Every element ('List', 'Checkout sessions', 'optional filtering') adds value.

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

Completeness4/5

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

The combination of schema (parameter descriptions) and annotations (readOnly) covers the tool's behavior well. Lacks explicit mention of return format or pagination nuances, but these are implied by the schema's pagination parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the input schema fully describes each parameter. The description's mention of 'optional filtering' is redundant but not harmful. Baseline 3 is appropriate.

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 clearly states the verb 'List' and the resource 'Checkout sessions', with a hint of optional filtering. This directly distinguishes it from other list_* sibling tools that target different resources.

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

Usage Guidelines2/5

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 list_payment_intents or list_invoices. The description does not mention any context-specific conditions or exclusions.

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

list_couponsList CouponsC
Read-only

List all coupons.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page
starting_afterNoPagination cursor

TDQS

C2.9/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=true, but the description adds no behavioral details beyond that. It does not mention pagination behavior, default sorting, or what happens with large result sets.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded, and contains no unnecessary words. However, it could include more useful information without harming conciseness.

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

Completeness2/5

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

The description is too minimal for effective use. It does not mention ordering, default limit, or what fields are returned, leaving gaps for an agent unfamiliar with the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters described. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

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?

The description 'List all coupons' clearly indicates the verb 'List' and the resource 'coupons'. It is straightforward but does not differentiate from other 'list_*' sibling tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus other list tools. The description lacks context about filtering, prerequisites, or alternative tools.

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

list_customersList CustomersA
Read-only

List Stripe customers with optional filtering by email, creation date, and pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoFilter by exact email address
limitNoNumber of results (1-100, default 10)
starting_afterNoCursor for pagination - customer ID to start after
created_gteNoFilter: created at or after this Unix timestamp
created_lteNoFilter: created at or before this Unix timestamp

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, indicating a read operation. Description confirms this with 'List'. No additional behavioral traits (e.g., rate limits, sorting) are disclosed. Consistent with annotations, no contradiction.

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?

Single concise sentence that clearly states the purpose and key features. No redundancy, every word adds value.

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?

Description is adequate for a straightforward list tool with well-described schema parameters, but lacks details on return data format, ordering, or pagination behavior. Since no output schema exists, some additional context could be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains each parameter. The description summarizes the filtering capabilities but does not add new meaning beyond what is in the schema. Baseline 3 is appropriate.

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?

Description clearly states verb (List), resource (Stripe customers), and optional filters (email, creation date, pagination). It distinguishes from sibling tools like retrieve_customer and search_customers, but does not explicitly differentiate, so not a 5.

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?

Description implies usage for listing customers with specific filters but provides no explicit when-to-use or when-not-to-use guidance. No mention of alternatives like search_customers. Adequate but lacks exclusions.

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

list_disputesList DisputesB
Read-only

List payment disputes (chargebacks).

ParametersJSON Schema
NameRequiredDescriptionDefault
chargeNoFilter by charge ID
payment_intentNoFilter by PaymentIntent ID
limitNoResults per page
starting_afterNoPagination cursor

TDQS

B3.4/5.0
Behavior3/5

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

The description is consistent with the readOnlyHint annotation, but adds no behavioral context beyond 'list', such as pagination or response structure, which is a gap for a list tool.

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?

The description is a single, efficient sentence with no unnecessary words, achieving maximum conciseness while conveying the core purpose.

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

Completeness2/5

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

Given the lack of an output schema, the description should explain that the tool returns a paginated list object, but it only states 'List payment disputes', leaving the agent to infer response details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since schema description coverage is 100%, the description does not need to add parameter details, but it also does not provide any additional context about how parameters like charge or limit affect the listing.

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 clearly states the verb 'list' and the resource 'payment disputes (chargebacks)', which immediately distinguishes it from sibling list tools like list_charges or list_refunds.

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

Usage Guidelines2/5

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 like retrieve_dispute, nor does it mention the filtering capabilities available through the parameters.

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

list_eventsList EventsA
Read-only

List recent Stripe events (webhook deliveries). Useful for debugging integrations.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by event type, e.g. "payment_intent.succeeded", "customer.created"
limitNoResults per page
starting_afterNoPagination cursor
created_gteNoCreated at or after (Unix timestamp)
created_lteNoCreated at or before (Unix timestamp)

TDQS

A3.5/5.0
Behavior3/5

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

The description adds minimal behavioral context beyond the readOnlyHint annotation, simply restating the basic function. No additional traits like rate limits or access needs are disclosed.

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?

The description is a single, front-loaded sentence that efficiently conveys the tool's purpose without any fluff or redundant information.

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?

With 5 parameters and no output schema, the description is brief and omits context like pagination, default sorting, or typical response structure, though the schema covers parameter details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters are fully described in the schema (100% coverage), so the description does not need to add parameter details. It provides no extra semantic value beyond the schema.

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?

The description clearly states it lists events (webhook deliveries) and mentions a use case (debugging), which distinguishes it from other list tools by resource. However, it does not explicitly differentiate from sibling list tools, preventing a 5.

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 implies usage for debugging integrations but provides no explicit guidance on when to use this tool vs alternatives, nor does it mention exclusion criteria or prerequisites.

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

list_invoicesList InvoicesB
Read-only

List invoices with optional filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerNoFilter by customer ID
subscriptionNoFilter by subscription ID
statusNoFilter by status
limitNoResults per page
starting_afterNoPagination cursor

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, so the agent knows it's safe. The description adds no additional behavioral context (e.g., pagination, rate limits, or what happens with no filters). Minimal value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is very short (4 words) and front-loaded. No wasted words, but could be slightly expanded to include more context without losing conciseness.

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

Completeness2/5

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

Given 5 parameters and no output schema, the description is minimal. It does not explain return values, pagination details, or how filtering interacts. Incomplete for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema provides full descriptions for all 5 parameters (100% coverage). The description adds no extra meaning beyond 'optional filtering', so it meets the baseline but does not enhance the schema.

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?

Description clearly states 'List invoices' and mentions optional filtering. The name and description together identify the resource and action, distinguishing it from other list tools. However, it does not explicitly differentiate from siblings like list_charges or list_subscriptions.

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?

Description implies you can list all invoices or apply filters, but provides no guidance on when to use this tool versus alternatives. No exclusions or when-not-to-use are mentioned.

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

list_payment_intentsList Payment IntentsC
Read-only

List PaymentIntents with optional filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerNoFilter by customer ID
limitNoResults per page (1-100)
starting_afterNoPagination cursor
created_gteNoCreated at or after (Unix timestamp)
created_lteNoCreated at or before (Unix timestamp)

TDQS

C2.9/5.0
Behavior2/5

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

Annotations declare readOnlyHint=true, but the description adds no additional behavioral context, such as pagination, idempotency, or lack of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, front-loaded sentence with no unnecessary words. Efficient but could benefit from slightly more context without losing conciseness.

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

Completeness2/5

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

No output schema provided, and the description does not explain return values or pagination behavior. For a list tool with 5 parameters, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all parameters described. The description adds 'optional filtering', which is already implied. Baseline 3 is appropriate.

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?

The description clearly states the action (list) and resource (PaymentIntents), with optional filtering. It is specific but does not differentiate from sibling tools like list_charges.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, such as retrieve_payment_intent for single items. The description only states functionality.

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

list_payment_methodsList Payment MethodsB
Read-only

List payment methods attached to a customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerYesCustomer ID (cus_...)
typeNoFilter by payment method type
limitNoResults per page

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already provide readOnlyHint=true. Description adds no additional behavioral context such as pagination, ordering, or response details. Does not disclose if only active methods are listed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no unnecessary words. Could be slightly more informative, but remains concise.

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 simple list tool with well-documented schema and readOnly annotation, description is adequate but lacks details about pagination behavior or response format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so schema already documents parameters. Description does not add new meaning beyond restating the overall purpose. Baseline 3 is appropriate.

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?

Description clearly states verb 'list' and resource 'payment methods' with scope 'attached to a customer'. Distinguishes from sibling tools like attach_payment_method and detach_payment_method.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. Does not mention exclusions or preferences among sibling list tools.

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

list_payoutsList PayoutsA
Read-only

List payouts to your bank account or debit card.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by payout status
limitNoResults per page
starting_afterNoPagination cursor
created_gteNoCreated at or after (Unix timestamp)
created_lteNoCreated at or before (Unix timestamp)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, which is consistent. Description adds minimal behavioral context (destination to bank/debit card) beyond annotations, but does not explain sorting, pagination beyond schema, or any 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single concise sentence with no redundant information. Every word adds value.

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

Completeness4/5

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

With 5 parameters all documented in schema and no output schema, the description is sufficient for understanding the tool's basic function. However, it could hint at pagination or ordering behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. Description provides no additional meaning beyond the schema's parameter descriptions.

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?

Description uses specific verb 'List' and resource 'payouts to your bank account or debit card', clearly distinguishing from sibling list tools like list_charges or list_invoices.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Does not mention prerequisites, exclusions, or typical use cases.

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

list_pricesList PricesB
Read-only

List prices with optional product filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
productNoFilter by product ID
activeNoFilter by active status
typeNoFilter by type
limitNoResults per page
starting_afterNoPagination cursor

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description adds minimal behavioral context. It mentions the optional product filter but does not disclose pagination or list nature, though these are covered in the schema. For a read-only list tool, the description is adequate but not rich.

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?

The description is a single sentence that is front-loaded with the verb. It is concise and contains no unnecessary words, earning every character.

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

Completeness2/5

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

Despite rich schema and annotations, the description lacks any mention of what the tool returns (e.g., a list of price objects). For a tool with no output schema, this omission makes it incomplete for an agent to understand the full context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description does not need to detail parameters. It adds some meaning by highlighting the product filter as optional, but does not explain other parameters like limit or starting_after. Baseline 3 is appropriate.

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 clearly states the verb 'list' and the resource 'prices', and mentions an optional product filter, which distinguishes it from siblings like list_products. It is specific and unambiguous.

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

Usage Guidelines2/5

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 the many other list_* siblings. It does not specify contexts or exclusions, leaving the agent without decision support.

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

list_productsList ProductsB
Read-only

List Stripe products.

ParametersJSON Schema
NameRequiredDescriptionDefault
activeNoFilter by active status
limitNoResults per page
starting_afterNoPagination cursor

TDQS

B3.3/5.0
Behavior3/5

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

The readOnlyHint annotation already declares the tool is safe. The description confirms a read operation but adds no additional behavioral traits (e.g., pagination behavior, rate limits). Since annotations cover the safety profile, a score of 3 is appropriate.

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?

Extremely concise—one sentence that communicates the core purpose. No unnecessary words, making it easy to parse quickly.

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 simple list operation with 3 parameters and full schema coverage, the description is adequate but lacks details about return format or pagination behavior, which would be helpful since there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the input schema already documents all parameters. The description does not add any extra meaning beyond the schema, hence baseline score of 3.

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?

The description clearly states it lists Stripe products. It uses a specific verb and resource, but it doesn't differentiate from sibling list tools like list_coupons or list_prices, though the resource name is distinct.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus other list tools. It lacks context about filtering or prerequisites.

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

list_refundsList RefundsB
Read-only

List refunds with optional filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
payment_intentNoFilter by PaymentIntent ID
chargeNoFilter by Charge ID
limitNoResults per page
starting_afterNoPagination cursor

TDQS

B3.3/5.0
Behavior3/5

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

The annotation readOnlyHint=true already indicates this is a safe read operation. The description simply restates the listing behavior without adding extra context like pagination, rate limits, or what happens with no results. It is adequate but not enriched beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—only one phrase—which is efficient and front-loaded. However, it is so brief that it misses opportunities to add valuable information without becoming verbose. Still, it earns a 4 for no waste.

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

Completeness2/5

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

Given the tool has four parameters and no output schema, the description lacks important details such as default behavior (e.g., ordering, maximum results), return format, or pagination cursor usage. It is incomplete for a comprehensive understanding, even with strong schema descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter already has a clear description in the schema. The tool description adds no additional meaning or context beyond what is in the schema, so baseline score of 3 is appropriate.

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?

The description clearly states 'List refunds with optional filtering,' which is a specific verb-resource combination. It distinguishes from siblings like create_refund and retrieve_refund, but could be more specific about the scope (e.g., all refunds) or default behavior.

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 implies when to use the tool (to list refunds with filters) but does not provide explicit guidance on when not to use it or mention alternative tools. Among many list siblings, no differentiation is given.

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

list_subscriptionsList SubscriptionsC
Read-only

List subscriptions with optional filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerNoFilter by customer ID
priceNoFilter by price ID
statusNoFilter by status
limitNoResults per page
starting_afterNoPagination cursor

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, so the agent knows it's safe. The description adds no behavioral context beyond that, such as pagination behavior or result ordering, which would be useful for a list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that is front-loaded with the core purpose. While brief, it contains no wasted words.

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

Completeness2/5

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

Given the tool has no output schema and 5 optional parameters, the description is too minimal. It does not explain what the tool returns, default behavior without filters, or pagination details, leaving gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with descriptions for all 5 parameters. The description adds no additional meaning beyond what's in 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List subscriptions with optional filtering,' specifying the verb and resource. However, it does not differentiate from sibling list tools, though list_subscriptions is the only subscription-specific list tool among them.

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

Usage Guidelines2/5

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 retrieve_subscription or other list tools. The description only mentions optional filtering without context.

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

list_webhook_endpointsList Webhook EndpointsA
Read-only

List all registered webhook endpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page
starting_afterNoPagination cursor

TDQS

A3.5/5.0
Behavior3/5

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

The readOnlyHint annotation already signals safe read-only behavior. The description does not add further behavioral context like pagination or ordering, but does not contradict the annotation.

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?

The description is a single, focused sentence that immediately states the tool's purpose. No unnecessary words.

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 simple list tool with two optional parameters and no output schema, the description is adequate but could benefit from mentioning that the response is a paginated list of webhook endpoint objects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for both parameters (limit, starting_after) with 100% coverage. The description adds no additional meaning beyond the schema.

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 clearly states the action ('list') and the resource ('all registered webhook endpoints'), effectively distinguishing it from sibling tools like list_customers or list_invoices.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, such as creating or deleting webhook endpoints, despite the availability of create_webhook_endpoint and delete_webhook_endpoint as siblings.

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

pay_invoicePay InvoiceA
Destructive

Attempt to pay an open invoice using the default payment method.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesInvoice ID (in_...)
payment_methodNoSpecific payment method to use
idempotency_keyNoOptional idempotency key for safe retries

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate destructive behavior. Description adds that it attempts to pay an open invoice, but lacks details on success/failure scenarios, idempotency, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, front-loaded sentence with no wasted words. Every word adds value.

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?

Adequate for a tool with full schema coverage and destructive annotation, but lacks details on return behavior, error conditions, and when the invoice is not open.

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 has 100% coverage. Description implies default payment method behavior when payment_method param is omitted, adding context beyond schema.

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?

Description clearly states the action (pay) and resource (invoice), and distinguishes from siblings like create_invoice, void_invoice, or finalize_invoice. The phrase 'open invoice' adds a precondition.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like finalize_invoice or void_invoice. No mention of prerequisites or exclusions.

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

retrieve_balanceRetrieve BalanceA
Read-only

Retrieve the current Stripe account balance, broken down by currency and status (available, pending).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description adds value beyond the annotation (readOnlyHint=true) by explaining the format of the return value (broken down by currency and status). No behavioral traits are hidden, and there is no contradiction with annotations.

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?

The description is a single, clear sentence with no redundant words. Every part adds value, and it is well front-loaded with the action and resource.

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

Completeness4/5

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

Given the tool has no parameters, a simple description is appropriate. It specifies what is returned (balance broken down by currency/status). However, it does not disclose the exact structure of the response object, which could be useful but is not critical for a read-only retrieval tool.

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?

The tool has zero parameters, so by the rubric baseline is 4. The description does not need to add parameter information, and it correctly uses the empty input schema.

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 uses a specific verb 'retrieve' and clearly identifies the resource as 'Stripe account balance', with added detail about breakdown by currency and status. This clearly distinguishes it from sibling tools which operate on specific entities like customers or payments.

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

Usage Guidelines4/5

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

The description implicitly indicates this tool is for fetching the overall account balance, with no parameters needed. It does not provide explicit when-to-use or when-not-to-use guidance, but given the simplicity and the context of sibling tools, the usage is clear enough.

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

retrieve_chargeRetrieve ChargeA
Read-only

Retrieve a charge by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
charge_idYesCharge ID (ch_...)

TDQS

A3.9/5.0
Behavior3/5

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

The description matches the readOnlyHint annotation, indicating a read-only operation. However, it does not add information beyond the annotation, such as behavior on missing ID or response format.

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?

The description is a single, clear sentence with no unnecessary words. It is appropriately concise for a simple tool.

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 simplicity (1 required parameter, no output schema, read-only annotation), the description is complete and sufficient for an agent to understand its purpose and usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the parameter with pattern and description (100% coverage). The description adds no additional semantic meaning beyond what the schema provides.

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 'Retrieve a charge by ID' uses a specific verb (Retrieve) and resource (charge), and clearly distinguishes from sibling tools like 'list_charges' which retrieves multiple charges.

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 implies the tool is for retrieving a single charge by ID, but lacks explicit guidance on when to use it over alternatives (e.g., when to use list_charges or other retrieve tools). No exclusions or context provided.

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

retrieve_checkout_sessionRetrieve Checkout SessionA
Read-only

Retrieve a Checkout session by ID. Includes payment status and customer details.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesCheckout session ID (cs_...)

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true. The description adds value by specifying the returned data (payment status and customer details), providing more behavioral context beyond the annotation.

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?

Two sentences, zero wasted words. Front-loads the action and then adds the key output detail. Highly concise and efficient.

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

Completeness4/5

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

For a simple read operation with one parameter and annotations present, the description is adequately complete. It covers the action, input, and output nature. However, it could mention that the session must exist or that it returns a 404 on failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for the single parameter session_id. The tool description does not add additional parameter meaning beyond what the schema provides.

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 clearly states the tool retrieves a Checkout session by ID and specifies the returned data includes payment status and customer details. This distinguishes it from sibling tools like list_checkout_sessions or create_checkout_session.

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?

No explicit guidance on when to use this tool versus alternatives. While the purpose is clear, the description does not mention when not to use it (e.g., for listing sessions) or suggest alternative tools.

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

retrieve_customerRetrieve CustomerA
Read-only

Retrieve a Stripe customer by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYesStripe customer ID (cus_...)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true. The description adds only that retrieval is by ID, which is minimal additional transparency. No details on error behavior or response format.

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?

One sentence that is perfectly front-loaded and contains zero unnecessary words.

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

Completeness4/5

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

For a simple retrieval with one parameter and no output schema, the description is largely complete. Minor gap: no mention of return structure or error cases, but acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description and pattern for customer_id. The tool description adds no further meaning beyond what the schema provides, resulting in baseline score.

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 clearly states the action (Retrieve), resource (Stripe customer), and method (by ID). It distinguishes from sibling tools like search_customers and list_customers.

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 implies use when you have a customer ID, but provides no explicit guidance on when not to use or alternatives. Context from siblings suggests its role, but that is not in the description itself.

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

retrieve_disputeRetrieve DisputeA
Read-only

Retrieve a dispute by ID with full details.

ParametersJSON Schema
NameRequiredDescriptionDefault
dispute_idYesDispute ID (dp_...)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds 'with full details', but does not disclose additional behavioral traits like idempotency or rate limits. With annotations covering safety, a score of 3 is appropriate.

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?

The description is a single, front-loaded sentence with no unnecessary words. Every word earns its place.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no output schema, clear annotations), the description is mostly complete. It could be improved by hinting at what 'full details' include, but it's sufficient for a basic retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter that has a description and pattern. The description's 'by ID' adds no new meaning beyond what the schema provides, so baseline 3 is correct.

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?

The description clearly states the verb 'retrieve' and the resource 'dispute by ID', and implies it returns full details. It distinguishes from the sibling 'list_disputes' by specifying a single dispute retrieval, though not explicitly.

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 implies usage for retrieving a specific dispute, but does not provide explicit guidance on when to use it vs alternatives or any exclusions. For a simple retrieval tool, usage is implied.

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

retrieve_eventRetrieve EventA
Read-only

Retrieve a single event by ID with full payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID (evt_...)

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true. The description adds 'with full payload', implying it returns all event data, which provides context beyond annotations. No contradictions.

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?

Single sentence, no unnecessary words. Properly front-loaded with the core action.

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

Completeness4/5

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

Given one parameter, 100% schema coverage, readOnlyHint annotation, and no output schema, the description is sufficient for a simple retrieval. Minor gap: no mention of error behavior for invalid IDs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'event_id', with pattern and description. The description adds 'Retrieve a single event by ID', but this does not add significant new semantics beyond the schema.

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 clearly states 'Retrieve a single event by ID with full payload', which uses a specific verb and resource, and distinguishes from sibling tools like list_events that retrieve multiple events.

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?

No explicit guidance on when to use this tool versus alternatives like list_events or other retrieve_ tools. The usage is implied but not clarified.

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

retrieve_invoiceRetrieve InvoiceA
Read-only

Retrieve an invoice by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesInvoice ID (in_...)

TDQS

A3.9/5.0
Behavior3/5

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

Annotations provide readOnlyHint=true, and the description aligns. No additional behavioral details beyond the annotation.

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?

One sentence, no unnecessary words. Front-loaded and concise.

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?

For a simple retrieval with one parameter and no output schema, the description is complete. No missing context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description does not add meaning beyond the schema. The parameter description in the schema is sufficient.

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 clearly states the action ('Retrieve') and resource ('an invoice by ID'). It distinguishes from sibling tools like 'retrieve_upcoming_invoice' and list tools.

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?

No explicit guidance on when to use this tool versus alternatives. The purpose is implied but not formally stated.

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

retrieve_payment_intentRetrieve Payment IntentA
Read-only

Retrieve a PaymentIntent by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
payment_intent_idYesPaymentIntent ID (pi_...)

TDQS

A3.5/5.0
Behavior3/5

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

The description does not add behavioral detail beyond the annotation 'readOnlyHint: true', which already informs the agent that the tool is safe and idempotent. The description could mention that it returns the PaymentIntent object, but lacking an output schema, the agent still has some uncertainty. A score of 3 reflects adequate transparency given annotation coverage.

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?

The description is extremely concise (6 words) and front-loaded with the key action and resource. Every word is essential; there is no redundancy or filler.

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?

Given the tool's simplicity (one parameter, no output schema), the description is minimally viable. However, it lacks contextual cues such as that the PaymentIntent must exist or that the tool is best used after creation, which slightly reduces completeness for an agent unfamiliar with the domain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers the single parameter with a pattern and description ('PaymentIntent ID (pi_...)'), achieving 100% schema description coverage. The tool description adds no additional semantic detail about the parameter, so a baseline score of 3 is appropriate.

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 clearly states the action ('Retrieve') and the resource ('a PaymentIntent'), and specifies the key parameter ('by ID'). This explicitly distinguishes it from sibling tools like 'list_payment_intents' (which retrieves multiple) and other 'retrieve_*' tools for different resources.

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

Usage Guidelines2/5

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 when to use 'list_payment_intents' instead, nor does it mention any prerequisites or contextual conditions. This forces the agent to rely solely on the tool name and context.

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

retrieve_refundRetrieve RefundA
Read-only

Retrieve a refund by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
refund_idYesRefund ID (re_...)

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already mark readOnlyHint=true, so the description adds no new behavioral info. It correctly indicates a read operation but doesn't disclose any additional traits like rate limits or authentication needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that gets directly to the point. It is appropriately concise for a simple retrieval tool, though slightly more context could be added without bloat.

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

Completeness4/5

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

For a simple retrieval with one required parameter and no output schema, the description is sufficient. It tells the core function and how to identify the refund, though return format is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage with a regex pattern and description for the single parameter. The tool description adds no further semantics beyond what the schema already provides.

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 clearly states 'Retrieve a refund by ID,' which includes a specific verb and resource, and distinguishes this tool from siblings like 'list_refunds' or 'create_refund'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., 'list_refunds' for multiple refunds). The description lacks context about prerequisites or typical scenarios.

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

retrieve_subscriptionRetrieve SubscriptionA
Read-only

Retrieve a subscription by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYesSubscription ID (sub_...)

TDQS

A3.5/5.0
Behavior3/5

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

The description aligns with the annotation 'readOnlyHint: true' but adds no further behavioral details (e.g., what fields are returned, if any filtering applies). Since annotations already cover safety, no extra context is provided.

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?

The description is a single, front-loaded sentence with no filler. Every word is necessary and earned its place.

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?

Given a single parameter, annotations, and many sibling tools, the description is functional but minimal. It lacks details on output (no output schema) and doesn't differentiate from other retrieval tools, but suffices for a simple read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage (pattern and required for 'subscription_id'). The description repeats 'by ID' without adding meaning, so it meets the baseline for well-documented parameters.

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 clearly states the action ('Retrieve') and the resource ('a subscription by ID'). It immediately distinguishes itself from sibling tools like 'cancel_subscription' or 'list_subscriptions' by specifying retrieval by ID.

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

Usage Guidelines2/5

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 over alternatives (e.g., 'list_subscriptions' to find IDs or 'retrieve_upcoming_invoice' for upcoming charges). There is no mention of context or prerequisites.

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

retrieve_upcoming_invoiceRetrieve Upcoming InvoiceA
Read-only

Preview the next upcoming invoice for a customer. Useful for showing what will be charged.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerYesCustomer ID (cus_...)
subscriptionNoSubscription ID to preview

TDQS

A3.8/5.0
Behavior3/5

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

The readOnlyHint annotation already declares this as a safe read operation, so the description does not need to repeat that. The term 'Preview' aligns with the annotation, but the description adds no additional behavioral context beyond what the annotation provides (e.g., what happens if no upcoming invoice exists, or whether it requires specific permissions). It is adequate but not enriching.

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?

The description consists of two concise sentences with no unnecessary words. The first sentence immediately states the tool's core purpose, and the second adds a practical use case. Every sentence earns its place, making it highly efficient.

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

Completeness4/5

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

Given the tool's simplicity (two parameters, read-only, no output schema), the description covers the essential purpose and a typical use case. It does not explicitly mention that the subscription parameter is optional or what the return object contains, but the core functionality is clear. The lack of output schema is compensated by the inferred return type (invoice preview). Mild gaps exist but are not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides descriptions for both parameters (customer ID and subscription ID) with regex patterns, achieving 100% coverage. The description does not add any extra meaning or clarification beyond what the schema already states. With complete schema coverage, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Preview' and identifies the resource 'next upcoming invoice for a customer,' clearly distinguishing it from sibling tools like retrieve_invoice (which retrieves a specific invoice) and list_invoices (which lists all invoices). The additional sentence 'Useful for showing what will be charged' reinforces the intended use case.

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 states it is 'useful for showing what will be charged,' which provides some context for when to use it. However, it lacks explicit guidance on when not to use it or what alternatives exist (e.g., retrieve_invoice for existing invoices, or create_invoice to generate). The guidance is implied but not fully explicit.

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

search_customersSearch CustomersA
Read-only

Search Stripe customers using the Search API. Query syntax: field~"value" or field:"value". Searchable fields: email, name, phone, metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesStripe search query, e.g. 'email~"test"' or 'name:"John Doe"' or 'metadata["key"]:"value"'
limitNoMax results (1-100)

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the tool's read-only nature is known. The description adds no further behavioral traits (e.g., rate limits, pagination). It does not contradict annotations.

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?

Two concise sentences covering purpose, query syntax, and searchable fields. No unnecessary words; each sentence provides essential information.

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

Completeness4/5

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

The description covers query usage and fields well, but does not describe the response format. However, given the low complexity and good parameter/schema coverage, it is nearly complete for invocation.

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%, and the description adds value by explaining the query syntax and listing searchable fields, which goes beyond the schema's parameter descriptions.

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 clearly states the tool searches Stripe customers via the Search API, specifies query syntax and searchable fields, and distinguishes it from sibling tools like list_customers (returns all) and retrieve_customer (by ID).

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

Usage Guidelines4/5

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

The description explains how to construct queries using the Search API syntax, which guides usage. It does not explicitly state when not to use it or compare with alternatives, but the context is clear enough for differentiation.

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

update_customerUpdate CustomerC

Update an existing Stripe customer's details.

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYesStripe customer ID (cus_...)
emailNoNew email address
nameNoNew name
phoneNoNew phone number
descriptionNoNew description
metadataNoMetadata to merge (set value to empty string to remove a key)
default_payment_methodNoDefault payment method ID for invoices
idempotency_keyNoOptional idempotency key for safe retries

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose behavioral traits such as whether updates are partial or full overwrite, how metadata merging works, or idempotency implications. The schema hints at merging metadata but description omits this.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no waste. However, given the tool's complexity (8 parameters, nested objects), it could include a bit more context without becoming verbose. Still efficient.

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

Completeness2/5

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

With 8 parameters, nested objects, no output schema, and no annotations, the description is too sparse. It does not indicate how updates are applied (partial vs full), how to clear fields, or mention idempotency. Context signals show high schema coverage but the description compensates little.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for parameters, so the description adds no extra meaning beyond 'update details'. Baseline 3 is appropriate since schema already documents each parameter.

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?

The description clearly states 'Update an existing Stripe customer's details', which is a specific verb and resource. It distinguishes from sibling tools like 'create_customer' and 'retrieve_customer' by focusing on updating, not creating or retrieving.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives. No mention of prerequisites (e.g., customer must exist), nor any explicit when-not-to-use advice. Sibling tools include creation and retrieval, but no comparative hints.

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

update_subscriptionUpdate SubscriptionB

Update a subscription. Can change items, payment method, trial, cancellation behavior, and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYesSubscription ID (sub_...)
itemsNoUpdated line items
cancel_at_period_endNoCancel at end of period
default_payment_methodNoNew default payment method
metadataNoMetadata to update
proration_behaviorNoHow to handle prorations
trial_endNoTrial end timestamp or "now" to end immediately
couponNoCoupon ID to apply
idempotency_keyNoOptional idempotency key for safe retries

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It fails to disclose behavioral traits such as idempotency (though an idempotency_key parameter exists), potential side effects like proration or invoicing, permission requirements, or state constraints (e.g., cannot update canceled subscriptions). The list of changeable aspects is helpful but insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise and front-loaded with the action and changeable aspects. It could be more structured (e.g., listing parameters in a bullet format) but is efficient overall.

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

Completeness2/5

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

Given the tool's complexity (9 parameters, nested objects, no output schema), the description is incomplete. It does not explain return values, behavioral outcomes of different parameter combinations (e.g., proration_behavior, trial_end), or the overall effect of an update, which is necessary for an AI agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds a high-level summary of changeable categories (items, payment method, etc.) but does not elaborate on parameter semantics beyond what the schema already provides, and it omits parameters like proration_behavior, coupon, and idempotency_key.

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 clearly states the verb 'Update' and resource 'subscription', and lists the types of changes (items, payment method, trial, cancellation behavior, metadata), distinguishing it from related tools like create_subscription or cancel_subscription.

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

Usage Guidelines2/5

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 (e.g., create_subscription, cancel_subscription), nor does it specify preconditions or exclusions. The context of modifying an existing subscription is implied but not explicitly stated.

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

void_invoiceVoid InvoiceA
Destructive

Void a finalized invoice. Cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesInvoice ID (in_...)
idempotency_keyNoOptional idempotency key for safe retries

TDQS

A3.8/5.0
Behavior4/5

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

Description adds 'Cannot be undone' beyond the destructiveHint annotation, emphasizing irreversibility. No contradictions.

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?

Two-sentence description is extremely concise with no wasted words. Clear and front-loaded.

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

Completeness4/5

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

Simple tool with two parameters. Description covers key behavior and irreversibility. Lacks mention of resulting invoice status or side effects, but adequate for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, including pattern and optionality. Description adds no additional parameter meaning beyond what schema already provides.

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?

Explicitly states the verb 'Void' and resource 'finalized invoice'. Clearly distinguishes from sibling tools like finalize_invoice, pay_invoice, and cancel_subscription.

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

Usage Guidelines2/5

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

No guidance on when to use vs. alternatives (e.g., refund, credit note). Does not specify conditions or prerequisites beyond invoice being finalized.

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.

  1. 52 tool updatesv1.0.0
    • First observedattach_payment_method
    • First observedcancel_payment_intent
    • First observedcancel_subscription
    • First observedcapture_payment_intent
    • First observedconfirm_payment_intent
    • First observedcreate_checkout_session
    • First observedcreate_coupon
    • First observedcreate_customer
    • First observedcreate_invoice
    • First observedcreate_invoice_item
    • First observedcreate_payment_intent
    • First observedcreate_price
    • First observedcreate_product
    • First observedcreate_refund
    • First observedcreate_subscription
    • First observedcreate_webhook_endpoint
    • First observeddelete_customer
    • First observeddelete_webhook_endpoint
    • First observeddetach_payment_method
    • First observedfinalize_invoice
    • First observedlist_balance_transactions
    • First observedlist_charges
    • First observedlist_checkout_sessions
    • First observedlist_coupons
    • First observedlist_customers
    • First observedlist_disputes
    • First observedlist_events
    • First observedlist_invoices
    • First observedlist_payment_intents
    • First observedlist_payment_methods
    • First observedlist_payouts
    • First observedlist_prices
    • First observedlist_products
    • First observedlist_refunds
    • First observedlist_subscriptions
    • First observedlist_webhook_endpoints
    • First observedpay_invoice
    • First observedretrieve_balance
    • First observedretrieve_charge
    • First observedretrieve_checkout_session
    • First observedretrieve_customer
    • First observedretrieve_dispute
    • First observedretrieve_event
    • First observedretrieve_invoice
    • First observedretrieve_payment_intent
    • First observedretrieve_refund
    • First observedretrieve_subscription
    • First observedretrieve_upcoming_invoice
    • First observedsearch_customers
    • First observedupdate_customer
    • First observedupdate_subscription
    • First observedvoid_invoice

TDQS

A3.7/5.0

Scored across 52 tools

Disambiguation5/5

Each tool targets a distinct Stripe resource or action (e.g., customers, payment intents, subscriptions, invoices). Tool names clearly indicate the operation and entity, making them easy to differentiate.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., create_customer, list_invoices, retrieve_balance). No mixing of conventions or ambiguous verbs.

Tool Count4/5

With 52 tools, the set is large but justified by Stripe's extensive API surface. Each tool covers a necessary operation, though some could be consolidated (e.g., search_customers vs. list_customers). Still, the scope is reasonable for a comprehensive integration.

Completeness5/5

The tool set provides near-complete coverage of Stripe's core operations: CRUD for customers, products, prices, payment intents, subscriptions, invoices, charges, refunds, disputes, coupons, and webhooks. Advanced operations like search, balance retrieval, and checkout sessions are included. Only minor gaps (e.g., no update_invoice) exist.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server providing over 390 tools across 66 providers, including major SaaS platforms like GitHub, Slack, and Stripe. It enables AI assistants to interact directly with a wide array of public APIs and utility services through a single interface.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for the Stripe API with 10 tools covering payments, customers, invoices, and subscriptions. Generated with MCPForge. Destructive and financial operations require human approval.
    37
    MIT