remove_subscription_rate_plan_charge
Delete a rate plan charge from a subscription to customize billing components. This modifies recurring charges on active subscriptions.
Instructions
Remove a rate plan charge from a subscription. DELETE /subscriptions/{subscriptionId}/rateplan-charges/{chargeId}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | Subscription ID (required) | |
| chargeId | Yes | Subscription rate plan charge ID to remove (required) |
Implementation Reference
- The handler function that validates inputs via Zod schema and calls the subscription service to remove a rate plan charge.
async function handler(client: Client, args: Record<string, unknown> | undefined) { const parsed = schema.safeParse(args); if (!parsed.success) { return errorResult(parsed.error.errors.map((e) => e.message).join("; ")); } const { subscriptionId, chargeId } = parsed.data; return handleToolCall(() => subscriptionService.removeSubscriptionRatePlanCharge(client, subscriptionId, chargeId) ); } - Zod input validation schema requiring subscriptionId and chargeId.
const schema = z.object({ subscriptionId: z.string().min(1, "subscriptionId is required"), chargeId: z.string().min(1, "chargeId is required"), }); - Tool definition with name 'remove_subscription_rate_plan_charge' and input schema for the MCP tool.
const definition = { name: "remove_subscription_rate_plan_charge", description: "Remove a rate plan charge from a subscription. DELETE /subscriptions/{subscriptionId}/rateplan-charges/{chargeId}.", inputSchema: { type: "object" as const, properties: { subscriptionId: { type: "string", description: "Subscription ID (required)" }, chargeId: { type: "string", description: "Subscription rate plan charge ID to remove (required)" }, }, required: ["subscriptionId", "chargeId"], }, }; - src/tools/subscriptions/index.ts:27-49 (registration)The tool is registered in the array returned by registerSubscriptionTools() (line 47).
export function registerSubscriptionTools(): Tool[] { return [ listSubscriptionsTool, getSubscriptionTool, createSubscriptionTool, updateSubscriptionTool, deleteSubscriptionTool, updateSubscriptionStatusTool, getSubscriptionUpcomingChargesTool, getSubscriptionInvoicesTool, getSubscriptionLogsTool, getSubscriptionExternalInvoicesTool, listSubscriptionRatePlansTool, getSubscriptionRatePlanTool, addSubscriptionRatePlanTool, updateSubscriptionRatePlanTool, removeSubscriptionRatePlanTool, getSubscriptionRatePlanChargeTool, addSubscriptionRatePlanChargeTool, updateSubscriptionRatePlanChargeTool, removeSubscriptionRatePlanChargeTool, ]; } - The service function that performs the DELETE HTTP request to /subscriptions/{subscriptionId}/rateplan-charges/{chargeId}.
export async function removeSubscriptionRatePlanCharge( client: Client, subscriptionId: string, chargeId: string ): Promise<Record<string, unknown>> { const result = await client.delete<Record<string, unknown>>( `/subscriptions/${subscriptionId}/rateplan-charges/${chargeId}` ); return Object.keys(result ?? {}).length ? result : { success: true, message: "Charge removed" }; }