command

Propose Customer Invoice

Workflow #3 — draft a customer invoice (AR) for approval; created in QBO only once a cleared human approves.

CommandCommand — approval-gatedkind: invoice-generationapprovers: admin · controller · ar-clerk

Overview

MCP tool propose_invoice — agent-callable, but it only queues: it creates a pending proposal (Proposal CreatedProposal CreatedEventv0.1.0A propose_* command queued a mutation: a Proposal now exists in status `pending` with a freshly-minted per-card widget t...Ownervisionary-engineeringMapView docs) on the Approval Bus (command service — owns the queue)Approval Bus (command service — owns the queue)Servicev0.1.0The command side: owns the proposal queue. propose_* only queue; a cleared human approves in the card; only then does th...Publishesproposal-created, proposal-approved +3Subscribespropose-vendor-bill, propose-bill-date-correction +6Ownervisionary-engineeringMapRepoView docs and returns the approval card. No vendor write happens here. Watch the full lifecycle: Propose Customer Invoice — command lifecyclePropose Customer Invoice — command lifecycleFlowv0.1.0One propose_invoice call end to end: queue → human approve → applier creates the QBO invoice from the approved lines.Ownervisionary-engineeringView flowView docs.

On approval InvoiceGenerationApplier (workflow #3)InvoiceGenerationApplier (workflow #3)Servicev0.1.0Applies an approved customer invoice: creates it in QBO with one SalesItemLineDetail per approved line.Publishesqbo-create-invoiceSubscribesproposal-approvedOwnervisionary-engineeringMapRepoView docs creates the invoice via QBO Create InvoiceQBO Create InvoiceCommandv0.1.0Creates a customer invoice from approved proposal lines.Ownervisionary-engineeringMapView docs (one SalesItemLineDetail per line).

Response shape note (CQRS): the tool returns the public pending proposal (id, kind, summary, status) so the host can render the approval card — the command’s real “return” is the proposal id; the mutation result only ever exists on the proposal record after a human approves.

Reading this page: a message page renders its contract and its one hop — who sends it, who receives it (that is EventCatalog’s grain: message = contract). The service page shows this workflow’s full fan-out (its sends); the flow shows the lifecycle step by step.

Input schema

Architecture diagram

Input (from the zod tool schema)

12 properties
customerIdstring
required
Min length: 1
customerNamestring
linesarray[object]
required
txnDatestring
dueDatestring
docNumberstring
memostring