Skip to main content
Glama

Zovo AR Aging Report

Generate customer statements

generate_customer_statements
Read-onlyIdempotent

Use this when the user wants customer statements (customer statement template, statement of account, open item statement) for customers who owe them money, from the same open invoices: typed, pasted CSV/TSV, or an attached CSV/XLSX export. Returns a PDF with one page per customer listing each open invoice with date, due date, amount, paid, open balance and days past due, an aging strip and the balance due, plus polite past-due reminder email drafts. Filter by customer names or overdue_only. Does not send statements or emails, and does not build an aging summary (use generate_aging_report).

Input Schema

NameRequiredDescriptionDefault
fileNoAn open invoices or A/R aging export (CSV, TSV or XLSX) from QuickBooks, Xero, FreshBooks, Wave or a spreadsheet, e.g. open_invoices.csv.
messageNoShort note printed on every statement, e.g. "Thank you for your business."
currencyNoCurrency code, e.g. "USD" (default), "CAD", "EUR". With a mixed-currency file, only this currency is aged.
invoicesNoOpen invoices: an array of objects like {customer:"Acme Corp", invoice_number:"INV-1042", invoice_date:"2026-08-01", terms:"Net 30", amount:1200, amount_paid:200}, or pasted CSV/TSV text with a header row, or one line per invoice like "Acme Corp, INV-1042, 2026-08-01, Net 30, 1200, paid 200". Give this or file.
remit_toNoPayment instructions printed on each statement, e.g. "ACH or check to Bright Path Design, 12 Main St".
customersNoOnly these customers, e.g. ["Acme Corp", "Globex"] or "Acme Corp, Globex". Default every customer with a balance.
as_of_dateNoAge the invoices as of this date, e.g. "2026-10-31". Default today in New York time.
sender_nameNoName to sign the reminder emails with, e.g. "Dana Lee".
company_nameNoYour business name for the report header and email sign-off, e.g. "Bright Path Design LLC".
overdue_onlyNotrue to make statements only for customers with past-due invoices. Default false.
default_termsNoTerms for invoices with no due date and no terms, e.g. "Net 30" (default) or 15.
company_addressNoYour address or contact lines for the statement header, e.g. "12 Main St, Austin TX 78701, billing@brightpath.com".

Output Schema

NameRequiredDescriptionDefault
kindYes
inputYes
notesYes
pagesYes
totalsYes
currencyYes
downloadsYes
remindersYes
as_of_dateYes
as_of_noteYes
statementsYes
reminders_totalYes
statements_countYes
statements_not_listedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds real context on top: it produces a PDF with one page per customer, an aging strip, balance due, and polite reminder email drafts, and clarifies that nothing is actually sent. That negative constraint is the most important behavioral disclosure. It stops short of mentioning size limits, pagination, or failure modes for unparseable files.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the trigger and the input modes before the return shape and the exclusions. Every clause does work, but the statement of what the PDF contains is long and partially duplicates the output schema rather than earning new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter tool with nested invoice objects and an output schema, the description covers what an agent needs to decide to call it: accepted input sources, default behavior for customers and as_of_date, the two useful filters, and what it deliberately does not do. Return values need not be explained further because an output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented in the schema and the baseline of 3 applies. The description adds some value by enumerating the three accepted input shapes for invoices/file (typed objects, pasted CSV/TSV, attached CSV/XLSX export) and by calling out the customers and overdue_only filters, but it does not add format or edge-case detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ("customer statements") and immediately pins down the domain with synonyms an agent would search for ("statement of account", "open item statement"). It also explicitly distinguishes itself from the sole sibling, generate_aging_report, so an agent can choose between them without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger ("Use this when the user wants customer statements ... for customers who owe them money") and explicit exclusions ("Does not send statements or emails, and does not build an aging summary (use generate_aging_report)"). The alternative is named along with the condition that selects it, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources