Skip to content

Feature Request: Add subscription_schedules and charges support to the Stripe MCP connector #357

@freek-aizy

Description

@freek-aizy

Is your feature request related to a problem? Please describe.

Feature Request: Add subscription_schedules and charges support to the Stripe MCP connector

Summary

The current Stripe MCP connector is missing two commonly needed Stripe API resources:

  1. /v1/subscription_schedules — for fetching planned/future subscriptions
  2. /v1/charges — for fetching payment attempts including failed and Radar-blocked payments

Without these, AI assistants using the MCP connector have a significant blind spot in subscription billing and cash flow reporting workflows.


Problem

Subscription Schedules:

The current fetch_stripe_resources tool only supports the following prefixes: pi_, ch_, in_, price_, prod_, sub_, cus_. The prefix sub_sched_ is explicitly unsupported, returning No such subscription: 'sub_sched_...'.

This means any subscription created as a schedule (i.e. with a future start date via the Stripe Dashboard or API) is completely invisible to the MCP connector. In our case, this hides 15 planned subscriptions representing €38,250 in expected April billing — a meaningful gap for any revenue forecasting workflow.

Charges:

The search_stripe_resources tool lists charges as a supported resource type, but the underlying MCP API key does not have charges:read permissions by default, resulting in:

Permission error: The provided key 'ek_live_...' does not have the required
permissions for this endpoint.

Failed and Radar-blocked charges are critical for cash flow monitoring. Without this, teams cannot ask their AI assistant about payment failures, chargeback risks, or Radar rule outcomes.


Requested Changes

1. New tool: list_subscription_schedules

list_subscription_schedules(
  status: "not_started" | "active" | "completed" | "released" | "canceled",
  limit: int,              # 1–100
  starting_after: str      # cursor-based pagination
)

Maps to: GET /v1/subscription_schedules

Should return: schedule ID, status, customer, start date, phases (price, quantity, interval), and optionally enriched with product name.

2. Extend fetch_stripe_resources to support sub_sched_ prefix

Maps to: GET /v1/subscription_schedules/{id}

Allows fetching a single schedule by its ID — consistent with how sub_ IDs are handled today.

3. New tool: list_charges

list_charges(
  limit: int,              # 1–100
  created_gte: int,        # Unix timestamp
  created_lte: int,        # Unix timestamp  
  customer: str,           # optional filter
  starting_after: str      # cursor-based pagination
)

Maps to: GET /v1/charges

Should return: charge ID, status, amount, currency, customer, failure_message, outcome (type, reason, Radar rule), created timestamp.

4. Add starting_after pagination to all existing list_* tools

Currently all list tools have a hard cap of 100 records with no way to paginate. The Stripe API supports cursor-based pagination via starting_after. Without this, accounts with more than 100 subscriptions will silently miss records.


Impact

Gap Business impact
No subscription_schedules Future revenue is invisible — new customers with a scheduled start date don't appear in any MCP-based forecast
No charges access Failed payments and Radar blocks can't be queried — cash flow reporting is incomplete
No pagination Any account with 100+ subscriptions gets silently truncated data

Workaround We're Currently Using

As a temporary bridge, we built a standalone HTML artifact that calls /v1/subscription_schedules and /v1/charges directly from the browser using a Stripe Restricted Key (read-only). This works but requires a separate key and manual steps — it is not a sustainable solution.


Stripe API Reference


Environment

  • MCP connector: https://mcp.stripe.com/sse
  • Claude.ai (Anthropic) with Stripe MCP connector enabled
  • Live mode, EUR currency, Netherlands

Happy to test any implementation. Thanks for maintaining this connector , it's already very useful for the endpoints it does support.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions