remove_subscription_rate_plan
Remove a rate plan from an existing subscription. Specify the subscription ID and rate plan ID to delete.
Instructions
Remove a rate plan from a subscription. DELETE /subscriptions/{subscriptionId}/rateplans/{ratePlanId}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| subscriptionId | Yes | Subscription ID (required) | |
| ratePlanId | Yes | Subscription rate plan ID to remove (required) |
Implementation Reference
- Tool handler for remove_subscription_rate_plan. Parses subscriptionId and ratePlanId from args, validates with Zod schema, then delegates to subscriptionService.removeSubscriptionRatePlan.
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, ratePlanId } = parsed.data; return handleToolCall(() => subscriptionService.removeSubscriptionRatePlan(client, subscriptionId, ratePlanId) ); } - Zod schema and MCP input definition for remove_subscription_rate_plan. Requires subscriptionId and ratePlanId (both strings).
const schema = z.object({ subscriptionId: z.string().min(1, "subscriptionId is required"), ratePlanId: z.string().min(1, "ratePlanId is required"), }); const definition = { name: "remove_subscription_rate_plan", description: "Remove a rate plan from a subscription. DELETE /subscriptions/{subscriptionId}/rateplans/{ratePlanId}.", inputSchema: { type: "object" as const, properties: { subscriptionId: { type: "string", description: "Subscription ID (required)" }, ratePlanId: { type: "string", description: "Subscription rate plan ID to remove (required)" }, }, required: ["subscriptionId", "ratePlanId"], }, }; - src/tools/subscriptions/index.ts:27-49 (registration)Registration of remove_subscription_rate_plan via removeSubscriptionRatePlanTool in the registerSubscriptionTools() array.
export function registerSubscriptionTools(): Tool[] { return [ listSubscriptionsTool, getSubscriptionTool, createSubscriptionTool, updateSubscriptionTool, deleteSubscriptionTool, updateSubscriptionStatusTool, getSubscriptionUpcomingChargesTool, getSubscriptionInvoicesTool, getSubscriptionLogsTool, getSubscriptionExternalInvoicesTool, listSubscriptionRatePlansTool, getSubscriptionRatePlanTool, addSubscriptionRatePlanTool, updateSubscriptionRatePlanTool, removeSubscriptionRatePlanTool, getSubscriptionRatePlanChargeTool, addSubscriptionRatePlanChargeTool, updateSubscriptionRatePlanChargeTool, removeSubscriptionRatePlanChargeTool, ]; } - src/tools/subscriptions/index.ts:65-65 (registration)Re-export of removeSubscriptionRatePlanTool from the subscription tools index.
export { removeSubscriptionRatePlanTool } from "./removeSubscriptionRatePlan.js"; - Core service function that executes the DELETE /subscriptions/{subscriptionId}/rateplans/{ratePlanId} HTTP request via the client.
/** Remove a rate plan from a subscription. DELETE /subscriptions/{id}/rateplans/{ratePlanId} */ export async function removeSubscriptionRatePlan( client: Client, subscriptionId: string, ratePlanId: string ): Promise<Record<string, unknown>> { const result = await client.delete<Record<string, unknown>>( `/subscriptions/${subscriptionId}/rateplans/${ratePlanId}` ); return Object.keys(result ?? {}).length ? result : { success: true, message: "Rate plan removed" }; }