Skip to main content
Glama

list_invoices

Retrieve and filter payment invoices from Visa Acceptance with pagination controls to manage transaction records efficiently.

Instructions

This tool will list invoices from Visa Acceptance.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
offsetYesPagination offset (required)
limitYesPagination limit (required)
statusNoFilter by status (optional)

Implementation Reference

  • The core handler function `listInvoices` that implements the list_invoices tool logic, calling Cybersource InvoicesApi.getAllInvoices and applying customer info masking.
    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 input schema for the list_invoices tool parameters: offset (number, required), limit (number, required), status (string, optional).
    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)') }); };
  • Tool registration object defining method 'list_invoices', name, description, parameters schema, actions, and execute handler reference.
    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;
  • Aggregates and exports list of tools including listInvoicesToolModule in createTools function, used by API and toolkits.
    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) ]; }
  • Toolkit-specific helper code that applies additional PII masking to customer names and emails in list_invoices results before returning.
    if (tool.method === 'list_invoices' && parsedResult.invoices && Array.isArray(parsedResult.invoices)) { console.error('Applying masking to invoices in toolkit...'); // Apply masking to each invoice's customer information parsedResult.invoices.forEach((invoice: any) => { if (invoice.customerInformation && invoice.customerInformation.name) { const originalName = invoice.customerInformation.name; invoice.customerInformation.name = maskPII(originalName, 'end'); console.error(`Masked name: "${originalName}" -> "${invoice.customerInformation.name}"`); } if (invoice.customerInformation && invoice.customerInformation.email) { const originalEmail = invoice.customerInformation.email; const emailParts = originalEmail.split('@'); if (emailParts.length === 2) { const maskedLocalPart = maskPII(emailParts[0], 'end'); invoice.customerInformation.email = `${maskedLocalPart}@${emailParts[1]}`; } else { invoice.customerInformation.email = maskPII(originalEmail, 'end'); } console.error(`Masked email: "${originalEmail}" -> "${invoice.customerInformation.email}"`); } }); }

Latest Blog Posts

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/visaacceptance/agent-toolkit'

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