Invoice by Ouroboros Apps
Server Details
Freelance invoice line items, rates, due dates, and late terms for AI assistants
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- LAHutchins91/invoice-mcp
- GitHub Stars
- 0
- Server Listing
- Invoice by Ouroboros Apps
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 13 tools
Tools are largely distinct, with clear separation between draft-editing tools and the suggest/accept change mechanism. The main overlap is that suggest_invoice_change can mirror direct mutations (add_line, change_rate, etc.), but descriptions clarify the draft vs sealed workflow.
All tool names are snake_case and verb-first, following a predictable verb_noun pattern. However, some names are three-part (accept_invoice_change, quote_line_rate) and the verbs vary widely, so it's not perfectly uniform.
13 tools are well-suited for an invoice system with draft, line items, discounts, late terms, and an approval workflow. Each tool covers a distinct operation, and the count is within the ideal range.
The tool set covers the core invoice lifecycle from draft creation through sealing and post-approval suggestions. Notable gaps include no way to delete a line or change a line's unit after creation, which could force workarounds.
Available Tools
13 toolsaccept_invoice_changeaccept invoice changeADestructiveIdempotentInspect
Apply one suggested invoice change after the freelancer explicitly approves that change. Pass confirmed true only then. This is the path that may add a line, change a rate, apply a discount, or move the due date. Calling it is not a substitute for the freelancer's approval.
Inputs: changeId (required), confirmed (required), invoiceId (required). Returns: data
begin_invoicebegin invoiceAInspect
Start a draft invoice. Draft figures are not an approved commitment until seal_invoice. Currency is a three-letter code. Amounts later are minor units of that currency and are the freelancer's figures.
Inputs: title (required), number (required), currency (required), clientName (required). Returns: data
describe_linedescribe lineADestructiveInspect
Correct a line description while the invoice is still a draft. After approval, a different description is refused. Use suggest_invoice_change with add_line for a different line.
Inputs: lineId (required), invoiceId (required), description (required). Returns: data
list_invoiceslist invoicesARead-onlyIdempotentInspect
List the signed-in freelancer's invoices. Use a returned id with read_invoice. Do not guess an invoice.
Inputs: offset. Returns: data
offer_discountoffer discountADestructiveInspect
Record a discount the freelancer is putting on the invoice. kind none uses value 0. kind percent takes a whole number from 1 to 100. kind fixed takes a whole number of minor units. After the invoice is sealed, a different discount is refused until accept_invoice_change applies an apply_discount suggestion. Do not invent a discount.
Inputs: kind (required), note (required), value (required), invoiceId (required). Returns: data
place_lineplace lineADestructiveInspect
Add one line: description, quantity, rate in whole minor units, and unit hour, each, or day. After the invoice is sealed, a new line is refused until accept_invoice_change applies an add_line suggestion.
Inputs: unit (required), quantity (required), invoiceId (required), rateMinor (required), +1 more. Returns: data
quote_line_ratequote line rateADestructiveInspect
Set the rate already chosen for one line, as a whole number of minor units in the invoice currency. After the invoice is sealed, a different rate is refused until accept_invoice_change applies a change_rate suggestion.
Inputs: lineId (required), invoiceId (required), rateMinor (required). Returns: data
read_invoiceread invoiceARead-onlyIdempotentInspect
Read the invoice before answering. Quote only this record. Draft status is not an approved commitment. Proposed changes do not authorize a new line, a different rate, a discount, or a new due date.
Inputs: invoiceId (required). Returns: data
seal_invoiceseal invoiceADestructiveIdempotentInspect
Mark the current draft as the approved invoice. Pass confirmed true only after the freelancer explicitly approves the lines, quantities, rates, due date, late terms, and any discount already on the draft.
Inputs: confirmed (required), invoiceId (required). Returns: data
set_invoice_dueset invoice dueADestructiveInspect
Set the due date as a calendar day in YYYY-MM-DD form. After the invoice is sealed, a different date is refused until accept_invoice_change applies a move_due_date suggestion.
Inputs: dueOn (required), invoiceId (required). Returns: data
set_line_quantityset line quantityADestructiveInspect
Set the quantity on one line. After the invoice is sealed, a different quantity is refused until accept_invoice_change applies an adjust_quantity suggestion.
Inputs: lineId (required), quantity (required), invoiceId (required). Returns: data
suggest_invoice_changesuggest invoice changeAInspect
Record a suggested change. This does not change the invoice. kind add_line requires description, quantity, rateMinor, and unit. kind change_rate requires lineId and rateMinor. kind apply_discount requires discountKind, discountValue, and discountNote. kind move_due_date requires dueOn. kind adjust_quantity requires lineId and quantity. kind revise_late_terms requires graceDays, lateBasis, feeMinor, latePercent, and lateNote.
Inputs: kind (required), summary (required), invoiceId (required), unit, +13 more. Returns: data
write_late_termswrite late termsADestructiveInspect
Record late terms: grace days, and a basis of none, flat_fee, or percent_per_period. flat_fee uses feeMinor and a percent of 0. percent_per_period uses percent and a fee of 0. After approval, a different basis, grace, fee, or percent is refused until an accepted revise_late_terms suggestion.
Inputs: note (required), basis (required), percent (required), feeMinor (required), +2 more. Returns: data
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Freelance deposit and payment schedule for AI assistants
Freelance scope of work, rates, deadlines, and change orders for AI assistants
Freelance project milestones and acceptance criteria for AI assistants
Free client billing for AI assistants: hours, expenses, timers, invoices and payments.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to serve as the only interface for consultant and small-agency billing, recording clients, billable work, expenses and payments, and drafting and issuing invoices. It enforces billing rules server-side, numbering invoices, calculating totals, requiring exact-total approval before issue, and never rewriting an issued invoice.12 npm1MIT

sattle.me assistantofficial
AlicenseNot gradedqualityBmaintenanceEnables merchants to preview, create, list, and track invoices with line items, VAT, payment links, due dates, and PDFs using an assistant secret key, while ensuring payments go to the merchant's wallet and never spend funds.MIT- AlicenseAqualityCmaintenanceCreate free, no-signup invoices from your AI assistant — the create_invoice tool returns a link that opens blankinvoicemaker.com pre-filled, ready to download as a watermark-free PDF.269 npm1MIT
- AlicenseNot gradedqualityBmaintenanceDeposit by Ouroboros Apps (https://ouroborosapps.com). Freelance deposit and payment schedule: approved deposits, payment dates, and client wording; deposit waivers and date changes need approval. Connect by pasting https://deposit-continuity2.vercel.app/mcp into Claude, Cursor, Grok, or ChatGPT developer mode (OAuth). Docs: https://ouroborosapps.com/docs/deposit5 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.