list_invoices
Retrieve and filter invoices on the Norman Finance MCP Server based on status, client name, date range, and limit. Simplify financial tracking and reporting.
Instructions
List invoices with optional filtering.
Args:
status: Filter by invoice status (draft, pending, sent, paid, overdue, uncollectible)
name: Filter by invoice (client) name
from_date: Filter invoices created after this date (YYYY-MM-DD)
to_date: Filter invoices created before this date (YYYY-MM-DD)
limit: Maximum number of invoices to return (default 100)
Returns:
List of invoices matching the criteria
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| from_date | No | ||
| limit | No | ||
| name | No | ||
| status | No | ||
| to_date | No |
Implementation Reference
- norman_mcp/tools/invoices.py:507-553 (handler)The MCP tool handler for 'list_invoices'. Decorated with @mcp.tool(), it retrieves a list of invoices from the Norman API endpoint, applying optional filters for status, name, date range, and limit.@mcp.tool() async def list_invoices( ctx: Context, status: Optional[str] = None, name: Optional[str] = None, from_date: Optional[str] = None, to_date: Optional[str] = None, limit: Optional[int] = 100 ) -> Dict[str, Any]: """ List invoices with optional filtering. Args: status: Filter by invoice status (draft, pending, sent, paid, overdue, uncollectible) name: Filter by invoice (client) name from_date: Filter invoices created after this date (YYYY-MM-DD) to_date: Filter invoices created before this date (YYYY-MM-DD) limit: Maximum number of invoices to return (default 100) Returns: List of invoices matching the criteria """ api = ctx.request_context.lifespan_context["api"] company_id = api.company_id if not company_id: return {"error": "No company available. Please authenticate first."} invoices_url = urljoin( config.api_base_url, f"api/v1/companies/{company_id}/invoices/" ) # Build query parameters params = {} if status: params["status"] = status if from_date: params["dateFrom"] = from_date if to_date: params["dateTo"] = to_date if limit: params["limit"] = limit if name: params["name"] = name return api._make_request("GET", invoices_url, params=params)