list_product_rate_plan_charges
Fetch product rate plan charges for a given rate plan ID. Optionally include attributes, sort, order, and paginate results to manage billing details.
Instructions
List product rate plan charges for a product rate plan. GET /product-rateplans/{ratePlanId}/product-rateplan-charges. Product rate plan reference: ratePlanId (URI: /product-rateplans/{ratePlanId}). Optional: include, orderBy, sortBy, pageNo, itemPerPage.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ratePlanId | Yes | Product rate plan ID (URI: /product-rateplans/{ratePlanId}) | |
| include | No | Attributes to include | |
| orderBy | No | Sort column | |
| sortBy | No | Sort direction | |
| pageNo | No | Page number | |
| itemPerPage | No | Items per page |
Implementation Reference
- Handler function for the list_product_rate_plan_charges tool. Parses args using Zod schema, extracts ratePlanId and optional params, then calls the service layer's listRatePlanCharges function.
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 { ratePlanId, ...params } = parsed.data; return handleToolCall(() => chargeService.listRatePlanCharges(client, ratePlanId, params)); } - Zod schema for input validation of the list_product_rate_plan_charges tool. Accepts ratePlanId (required), include, orderBy, sortBy, pageNo, itemPerPage (optional).
const schema = z.object({ ratePlanId: z.string().min(1, "ratePlanId is required"), include: z.string().optional(), orderBy: z.string().optional(), sortBy: z.string().optional(), pageNo: z.number().int().min(1).optional(), itemPerPage: z.number().int().min(1).optional(), }); - Tool definition with name 'list_product_rate_plan_charges', description, and JSON Schema input properties for the MCP protocol.
const definition = { name: "list_product_rate_plan_charges", description: "List product rate plan charges for a product rate plan. GET /product-rateplans/{ratePlanId}/product-rateplan-charges. Product rate plan reference: ratePlanId (URI: /product-rateplans/{ratePlanId}). Optional: include, orderBy, sortBy, pageNo, itemPerPage.", inputSchema: { type: "object" as const, properties: { ratePlanId: { type: "string", description: "Product rate plan ID (URI: /product-rateplans/{ratePlanId})" }, include: { type: "string", description: "Attributes to include" }, orderBy: { type: "string", description: "Sort column" }, sortBy: { type: "string", description: "Sort direction" }, pageNo: { type: "number", description: "Page number" }, itemPerPage: { type: "number", description: "Items per page" }, }, required: ["ratePlanId"], }, }; - Service function listRatePlanCharges that makes the actual API call. Constructs query params from optional filters and performs GET /product-rateplans/{ratePlanId}/product-rateplan-charges.
export async function listRatePlanCharges( client: Client, ratePlanId: string, params?: ListRatePlanChargesParams ): Promise<PaginatedResponse<unknown>> { const search = new URLSearchParams(); if (params?.include) search.append("include", params.include); if (params?.orderBy) search.append("orderBy", params.orderBy ?? ""); if (params?.sortBy) search.append("sortBy", params.sortBy ?? ""); if (params?.pageNo != null) search.append("pageNo", String(params.pageNo)); if (params?.itemPerPage != null) search.append("itemPerPage", String(params.itemPerPage)); const q = search.toString(); return client.get<PaginatedResponse<unknown>>( `/product-rateplans/${ratePlanId}/product-rateplan-charges${q ? `?${q}` : ""}` ); } - src/tools/product_rate_plan_charges/index.ts:13-21 (registration)Registration of listRatePlanChargesTool in the registerProductRatePlanChargeTools function, which returns all product rate plan charge tools.
export function registerProductRatePlanChargeTools(): Tool[] { return [ listRatePlanChargesTool, getRatePlanChargeTool, createRatePlanChargeTool, updateRatePlanChargeTool, deleteRatePlanChargeTool, ]; }