Skip to main content
Glama

stripe

Official
by stripe
stripe-provider.ts3.53 kB
/** * Stripe AI SDK Provider * Integrates with Stripe's llm.stripe.com proxy for usage-based billing */ import {LanguageModelV2, ProviderV2} from '@ai-sdk/provider'; import {StripeLanguageModel} from './stripe-language-model'; import { StripeLanguageModelSettings, StripeProviderConfig, } from './types'; import {normalizeModelId} from './utils'; /** * Stripe Provider interface */ export interface StripeProvider extends ProviderV2 { /** * Create a language model with the given model ID * @param modelId - Model ID in Stripe format (e.g., 'openai/gpt-5', 'google/gemini-2.5-pro') * @param settings - Optional settings for the model */ (modelId: string, settings?: StripeLanguageModelSettings): LanguageModelV2; /** * Create a language model (alias for direct call) */ languageModel( modelId: string, settings?: StripeLanguageModelSettings ): LanguageModelV2; } /** * Create a Stripe provider instance * * @param config - Provider configuration options * @returns Stripe provider instance * * @example * ```ts * import { createStripe } from '@stripe/ai-sdk/provider'; * * const stripeLLM = createStripe({ * apiKey: process.env.STRIPE_API_KEY, * customerId: 'cus_xxxxx' // Optional default customer ID * }); * * const model = stripe('openai/gpt-5'); * ``` */ export function createStripe(config: StripeProviderConfig = {}): StripeProvider { const baseURL = config.baseURL || 'https://llm.stripe.com'; const createModel = ( modelId: string, settings: StripeLanguageModelSettings = {} ): LanguageModelV2 => { // Normalize the model ID to match Stripe's approved model list const normalizedModelId = normalizeModelId(modelId); // Merge provider-level and model-level customer IDs const mergedSettings: StripeLanguageModelSettings = { customerId: config.customerId, ...settings, }; return new StripeLanguageModel(normalizedModelId, mergedSettings, { provider: 'stripe', baseURL, headers: () => { const apiKey = config.apiKey || process.env.STRIPE_API_KEY; if (!apiKey) { throw new Error( 'Stripe API key is required. Provide it via config.apiKey or STRIPE_API_KEY environment variable.' ); } return { 'Content-Type': 'application/json', Authorization: `Bearer ${apiKey}`, 'User-Agent': `Stripe/v1 @stripe/ai-sdk/provider/0.1.0`, ...config.headers, }; }, }); }; const provider = function ( modelId: string, settings?: StripeLanguageModelSettings ) { if (new.target) { throw new Error( 'The Stripe provider function cannot be called with the new keyword.' ); } return createModel(modelId, settings); }; provider.languageModel = createModel; // Placeholder implementations for other model types (not yet supported) provider.textEmbeddingModel = () => { throw new Error('Text embedding models are not yet supported by Stripe provider'); }; provider.imageModel = () => { throw new Error('Image models are not yet supported by Stripe provider'); }; return provider as StripeProvider; } /** * Default Stripe provider instance * Uses STRIPE_API_KEY environment variable for authentication * * @example * ```ts * import { stripe } from '@stripe/ai-sdk/provider'; * * const model = stripe('openai/gpt-5', { * customerId: 'cus_xxxxx' * }); * ``` */ export const stripe = createStripe();

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/stripe/agent-toolkit'

If you have feedback or need assistance with the MCP directory API, please join our Discord server