list_invoices
Retrieve and filter invoices from the Visa Acceptance platform using pagination parameters to manage and review billing information.
Instructions
This tool will list invoices from Visa Acceptance.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | Yes | Pagination limit (required) | |
| offset | Yes | Pagination offset (required) | |
| status | No | Filter by status (optional) |
Implementation Reference
- The main execute handler for the 'list_invoices' tool. It uses Cybersource REST client to call getAllInvoices API with offset, limit, and optional status filter, applies masking, and returns the result.export const listInvoices = async ( visaClient: any, context: VisaContext, params: z.infer<ReturnType<typeof listInvoicesParameters>> ) => { try { const invoiceApiInstance = new cybersourceRestApi.InvoicesApi(visaClient.configuration, visaClient.visaApiClient); const opts: { status?: string } = {}; if (params.status != null && params.status !== '') { opts.status = params.status; } console.log('Sending request with params:', JSON.stringify({ offset: params.offset, limit: params.limit, opts })); const result = await new Promise((resolve, reject) => { invoiceApiInstance.getAllInvoices( params.offset, params.limit, opts, (error: any, data: any, response: any) => { if (error) { console.error('Error in listInvoices:', JSON.stringify(error)); reject(error); } else { console.log('Response from getAllInvoices:', JSON.stringify(response)); resolve(data); } } ); }); const typedResult = result as any; let maskedResult = maskInvoicesCustomerInfo(typedResult); return maskedResult; } catch (error) { console.error('Failed to list invoices:', error); return 'Failed to list invoices'; } };
- Zod schema defining the input parameters for the list_invoices tool: offset (required number), limit (required number), status (optional string).export const listInvoicesParameters = ( context: VisaContext = {} as VisaContext ) => { return z.object({ offset: z.number().describe('Pagination offset (required)'), limit: z.number().describe('Pagination limit (required)'), status: z.string().optional().describe('Filter by status (optional)') }); };
- typescript/src/shared/invoices/listInvoices.ts:71-84 (registration)Tool registration object defining the 'list_invoices' method, its name, description, parameters schema, actions permissions, and execute handler. Exported as default module.const tool = (context: VisaContext): Tool => ({ method: 'list_invoices', name: 'List Invoices', description: listInvoicesPrompt(context), parameters: listInvoicesParameters(context), actions: { invoices: { read: true, }, }, execute: listInvoices, }); export default tool;
- typescript/src/shared/tools.ts:40-52 (registration)Aggregates and registers the listInvoicesToolModule (imported from './invoices/listInvoices') along with other tools into a Tool[] array via createTools function.export function createTools(context: VisaContext): Tool[] { return [ createInvoiceToolModule(context), updateInvoiceToolModule(context), getInvoiceToolModule(context), listInvoicesToolModule(context), sendInvoiceToolModule(context), cancelInvoiceToolModule(context), createPaymentLinkToolModule(context), updatePaymentLinkToolModule(context), getPaymentLinkToolModule(context), listPaymentLinkToolModule(context) ];