{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_57ngt4admtsg","handle":"invoice","url":"https://wellknown.network/agents/invoice","links":{"self":"https://wellknown.network/agents/invoice/record.json","html":"https://wellknown.network/agents/invoice","markdown":"https://wellknown.network/agents/invoice/record.md","api":"https://wellknown.network/api/v1/agents/invoice","status":"https://wellknown.network/api/v1/agents/invoice/status","claim":"https://wellknown.network/agents/invoice/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/invoice/claim.json","badge":"https://wellknown.network/agents/invoice/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/invoice/history","tools":"https://wellknown.network/api/v1/agents/invoice/tools"},"ard":{"identifier":"urn:air:invoice-continuity2.vercel.app:server:invoice","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Invoice by Ouroboros Apps","summary":"Freelance invoice line items, rates, due dates, and late terms for AI assistants","description":"Freelance invoice line items, rates, due dates, and late terms for AI assistants","publisher":{"name":"LAHutchins91","url":null},"homepage":"https://ouroborosapps.com/docs/invoice","repository":"https://github.com/LAHutchins91/invoice-mcp","version":"1.0.3","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://invoice-continuity2.vercel.app/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-08T21:21:26.684264Z","publishedAt":"2026-10-08T21:21:26.684264Z","registryName":"io.github.LAHutchins91/invoice"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"documents.invoice-processing","name":"Invoice Processing","confidence":1,"provenance":"derived"},{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":0.525,"provenance":"derived"}],"categories":["documents","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-11T20:24:24.306Z","lastProbedAt":"2026-10-11T20:24:24.306Z","statusComputedAt":"2026-10-11T20:26:20.101Z","reliability30d":{"probes":18,"successRate":1,"p50Ms":142,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":18,"ok":18,"authBoundaryOk":0,"serviceOk":18,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-11T20:24:24.306Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":146,"error":null,"detail":{"tools":[{"name":"list_invoices","description":"List the signed-in freelancer's invoices. Use a returned id with read_invoice. Do not guess an invoice."},{"name":"begin_invoice","description":"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 c"},{"name":"read_invoice","description":"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"},{"name":"place_line","description":"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_inv"},{"name":"describe_line","description":"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 "},{"name":"quote_line_rate","description":"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 unt"},{"name":"set_line_quantity","description":"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."},{"name":"set_invoice_due","description":"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_d"},{"name":"write_late_terms","description":"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 "},{"name":"offer_discount","description":"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 nu"},{"name":"seal_invoice","description":"Mark the current draft as the approved invoice. Pass confirmed true only after the freelancer explicitly approves the lines, quantities, rates, due date, late t"},{"name":"suggest_invoice_change","description":"Record a suggested change. This does not change the invoice. kind add_line requires description, quantity, rateMinor, and unit. kind change_rate requires lineId"},{"name":"accept_invoice_change","description":"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, ch"}],"toolCount":13,"toolsHash":"215f25587ba2be8d482aaec8b8394eb73442a3aabd883e676d54c67a9ae5dd2a","serverName":"Invoice","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T13:24:13.405Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":141,"error":null,"detail":{"tools":[{"name":"list_invoices","description":"List the signed-in freelancer's invoices. Use a returned id with read_invoice. Do not guess an invoice."},{"name":"begin_invoice","description":"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 c"},{"name":"read_invoice","description":"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"},{"name":"place_line","description":"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_inv"},{"name":"describe_line","description":"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 "},{"name":"quote_line_rate","description":"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 unt"},{"name":"set_line_quantity","description":"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."},{"name":"set_invoice_due","description":"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_d"},{"name":"write_late_terms","description":"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 "},{"name":"offer_discount","description":"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 nu"},{"name":"seal_invoice","description":"Mark the current draft as the approved invoice. Pass confirmed true only after the freelancer explicitly approves the lines, quantities, rates, due date, late t"},{"name":"suggest_invoice_change","description":"Record a suggested change. This does not change the invoice. kind add_line requires description, quantity, rateMinor, and unit. kind change_rate requires lineId"},{"name":"accept_invoice_change","description":"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, ch"}],"toolCount":13,"toolsHash":"215f25587ba2be8d482aaec8b8394eb73442a3aabd883e676d54c67a9ae5dd2a","serverName":"Invoice","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T06:23:02.881Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":128,"error":null,"detail":{"tools":[{"name":"list_invoices","description":"List the signed-in freelancer's invoices. Use a returned id with read_invoice. Do not guess an invoice."},{"name":"begin_invoice","description":"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 c"},{"name":"read_invoice","description":"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"},{"name":"place_line","description":"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_inv"},{"name":"describe_line","description":"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 "},{"name":"quote_line_rate","description":"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 unt"},{"name":"set_line_quantity","description":"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."},{"name":"set_invoice_due","description":"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_d"},{"name":"write_late_terms","description":"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 "},{"name":"offer_discount","description":"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 nu"},{"name":"seal_invoice","description":"Mark the current draft as the approved invoice. Pass confirmed true only after the freelancer explicitly approves the lines, quantities, rates, due date, late t"},{"name":"suggest_invoice_change","description":"Record a suggested change. This does not change the invoice. kind add_line requires description, quantity, rateMinor, and unit. kind change_rate requires lineId"},{"name":"accept_invoice_change","description":"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, ch"}],"toolCount":13,"toolsHash":"215f25587ba2be8d482aaec8b8394eb73442a3aabd883e676d54c67a9ae5dd2a","serverName":"Invoice","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T00:26:43.819Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":127,"error":null,"detail":{"tools":[{"name":"list_invoices","description":"List the signed-in freelancer's invoices. Use a returned id with read_invoice. Do not guess an invoice."},{"name":"begin_invoice","description":"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 c"},{"name":"read_invoice","description":"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"},{"name":"place_line","description":"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_inv"},{"name":"describe_line","description":"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 "},{"name":"quote_line_rate","description":"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 unt"},{"name":"set_line_quantity","description":"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."},{"name":"set_invoice_due","description":"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_d"},{"name":"write_late_terms","description":"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 "},{"name":"offer_discount","description":"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 nu"},{"name":"seal_invoice","description":"Mark the current draft as the approved invoice. Pass confirmed true only after the freelancer explicitly approves the lines, quantities, rates, due date, late t"},{"name":"suggest_invoice_change","description":"Record a suggested change. This does not change the invoice. kind add_line requires description, quantity, rateMinor, and unit. kind change_rate requires lineId"},{"name":"accept_invoice_change","description":"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, ch"}],"toolCount":13,"toolsHash":"215f25587ba2be8d482aaec8b8394eb73442a3aabd883e676d54c67a9ae5dd2a","serverName":"Invoice","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T17:28:47.028Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":123,"error":null,"detail":{"tools":[{"name":"list_invoices","description":"List the signed-in freelancer's invoices. Use a returned id with read_invoice. Do not guess an invoice."},{"name":"begin_invoice","description":"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 c"},{"name":"read_invoice","description":"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"},{"name":"place_line","description":"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_inv"},{"name":"describe_line","description":"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 "},{"name":"quote_line_rate","description":"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 unt"},{"name":"set_line_quantity","description":"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."},{"name":"set_invoice_due","description":"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_d"},{"name":"write_late_terms","description":"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 "},{"name":"offer_discount","description":"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 nu"},{"name":"seal_invoice","description":"Mark the current draft as the approved invoice. Pass confirmed true only after the freelancer explicitly approves the lines, quantities, rates, due date, late t"},{"name":"suggest_invoice_change","description":"Record a suggested change. This does not change the invoice. kind add_line requires description, quantity, rateMinor, and unit. kind change_rate requires lineId"},{"name":"accept_invoice_change","description":"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, ch"}],"toolCount":13,"toolsHash":"215f25587ba2be8d482aaec8b8394eb73442a3aabd883e676d54c67a9ae5dd2a","serverName":"Invoice","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T10:28:00.588Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":192,"error":null,"detail":{"tools":[{"name":"list_invoices","description":"List the signed-in freelancer's invoices. Use a returned id with read_invoice. Do not guess an invoice."},{"name":"begin_invoice","description":"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 c"},{"name":"read_invoice","description":"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"},{"name":"place_line","description":"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_inv"},{"name":"describe_line","description":"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 "},{"name":"quote_line_rate","description":"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 unt"},{"name":"set_line_quantity","description":"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."},{"name":"set_invoice_due","description":"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_d"},{"name":"write_late_terms","description":"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 "},{"name":"offer_discount","description":"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 nu"},{"name":"seal_invoice","description":"Mark the current draft as the approved invoice. Pass confirmed true only after the freelancer explicitly approves the lines, quantities, rates, due date, late t"},{"name":"suggest_invoice_change","description":"Record a suggested change. This does not change the invoice. kind add_line requires description, quantity, rateMinor, and unit. kind change_rate requires lineId"},{"name":"accept_invoice_change","description":"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, ch"}],"toolCount":13,"toolsHash":"215f25587ba2be8d482aaec8b8394eb73442a3aabd883e676d54c67a9ae5dd2a","serverName":"Invoice","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T03:25:58.448Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":142,"error":null,"detail":{"tools":[{"name":"list_invoices","description":"List the signed-in freelancer's invoices. Use a returned id with read_invoice. Do not guess an invoice."},{"name":"begin_invoice","description":"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 c"},{"name":"read_invoice","description":"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"},{"name":"place_line","description":"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_inv"},{"name":"describe_line","description":"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 "},{"name":"quote_line_rate","description":"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 unt"},{"name":"set_line_quantity","description":"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."},{"name":"set_invoice_due","description":"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_d"},{"name":"write_late_terms","description":"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 "},{"name":"offer_discount","description":"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 nu"},{"name":"seal_invoice","description":"Mark the current draft as the approved invoice. Pass confirmed true only after the freelancer explicitly approves the lines, quantities, rates, due date, late t"},{"name":"suggest_invoice_change","description":"Record a suggested change. This does not change the invoice. kind add_line requires description, quantity, rateMinor, and unit. kind change_rate requires lineId"},{"name":"accept_invoice_change","description":"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, ch"}],"toolCount":13,"toolsHash":"215f25587ba2be8d482aaec8b8394eb73442a3aabd883e676d54c67a9ae5dd2a","serverName":"Invoice","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T21:26:37.442Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":147,"error":null,"detail":{"tools":[{"name":"list_invoices","description":"List the signed-in freelancer's invoices. Use a returned id with read_invoice. Do not guess an invoice."},{"name":"begin_invoice","description":"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 c"},{"name":"read_invoice","description":"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"},{"name":"place_line","description":"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_inv"},{"name":"describe_line","description":"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 "},{"name":"quote_line_rate","description":"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 unt"},{"name":"set_line_quantity","description":"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."},{"name":"set_invoice_due","description":"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_d"},{"name":"write_late_terms","description":"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 "},{"name":"offer_discount","description":"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 nu"},{"name":"seal_invoice","description":"Mark the current draft as the approved invoice. Pass confirmed true only after the freelancer explicitly approves the lines, quantities, rates, due date, late t"},{"name":"suggest_invoice_change","description":"Record a suggested change. This does not change the invoice. kind add_line requires description, quantity, rateMinor, and unit. kind change_rate requires lineId"},{"name":"accept_invoice_change","description":"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, ch"}],"toolCount":13,"toolsHash":"215f25587ba2be8d482aaec8b8394eb73442a3aabd883e676d54c67a9ae5dd2a","serverName":"Invoice","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T14:30:22.815Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":178,"error":null,"detail":{"tools":[{"name":"list_invoices","description":"List the signed-in freelancer's invoices. Use a returned id with read_invoice. Do not guess an invoice."},{"name":"begin_invoice","description":"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 c"},{"name":"read_invoice","description":"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"},{"name":"place_line","description":"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_inv"},{"name":"describe_line","description":"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 "},{"name":"quote_line_rate","description":"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 unt"},{"name":"set_line_quantity","description":"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."},{"name":"set_invoice_due","description":"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_d"},{"name":"write_late_terms","description":"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 "},{"name":"offer_discount","description":"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 nu"},{"name":"seal_invoice","description":"Mark the current draft as the approved invoice. Pass confirmed true only after the freelancer explicitly approves the lines, quantities, rates, due date, late t"},{"name":"suggest_invoice_change","description":"Record a suggested change. This does not change the invoice. kind add_line requires description, quantity, rateMinor, and unit. kind change_rate requires lineId"},{"name":"accept_invoice_change","description":"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, ch"}],"toolCount":13,"toolsHash":"215f25587ba2be8d482aaec8b8394eb73442a3aabd883e676d54c67a9ae5dd2a","serverName":"Invoice","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T07:25:19.162Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":132,"error":null,"detail":{"tools":[{"name":"list_invoices","description":"List the signed-in freelancer's invoices. Use a returned id with read_invoice. Do not guess an invoice."},{"name":"begin_invoice","description":"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 c"},{"name":"read_invoice","description":"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"},{"name":"place_line","description":"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_inv"},{"name":"describe_line","description":"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 "},{"name":"quote_line_rate","description":"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 unt"},{"name":"set_line_quantity","description":"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."},{"name":"set_invoice_due","description":"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_d"},{"name":"write_late_terms","description":"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 "},{"name":"offer_discount","description":"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 nu"},{"name":"seal_invoice","description":"Mark the current draft as the approved invoice. Pass confirmed true only after the freelancer explicitly approves the lines, quantities, rates, due date, late t"},{"name":"suggest_invoice_change","description":"Record a suggested change. This does not change the invoice. kind add_line requires description, quantity, rateMinor, and unit. kind change_rate requires lineId"},{"name":"accept_invoice_change","description":"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, ch"}],"toolCount":13,"toolsHash":"215f25587ba2be8d482aaec8b8394eb73442a3aabd883e676d54c67a9ae5dd2a","serverName":"Invoice","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"list_invoices","description":"List the signed-in freelancer's invoices. Use a returned id with read_invoice. Do not guess an invoice."},{"name":"begin_invoice","description":"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 c"},{"name":"read_invoice","description":"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"},{"name":"place_line","description":"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_inv"},{"name":"describe_line","description":"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 "},{"name":"quote_line_rate","description":"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 unt"},{"name":"set_line_quantity","description":"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."},{"name":"set_invoice_due","description":"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_d"},{"name":"write_late_terms","description":"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 "},{"name":"offer_discount","description":"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 nu"},{"name":"seal_invoice","description":"Mark the current draft as the approved invoice. Pass confirmed true only after the freelancer explicitly approves the lines, quantities, rates, due date, late t"},{"name":"suggest_invoice_change","description":"Record a suggested change. This does not change the invoice. kind add_line requires description, quantity, rateMinor, and unit. kind change_rate requires lineId"},{"name":"accept_invoice_change","description":"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, ch"}],"package":null,"toolSurface":{"id":"ts_ypcdjy7fqzxk","endpointId":"ep_9v53kukx6uh7","hash":"215f25587ba2be8d482aaec8b8394eb73442a3aabd883e676d54c67a9ae5dd2a","toolCount":13,"serverName":"Invoice","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-07T00:29:05.665Z","lastSeenAt":"2026-10-11T20:24:24.298Z","observations":18,"toolNames":["list_invoices","begin_invoice","read_invoice","place_line","describe_line","quote_line_rate","set_line_quantity","set_invoice_due","write_late_terms","offer_discount","seal_invoice","suggest_invoice_change","accept_invoice_change"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_9v53kukx6uh7","url":"https://invoice-continuity2.vercel.app/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-09T00:24:06.000Z","auth":{"observedAt":"2026-10-09T00:24:06.499Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://invoice-continuity2.vercel.app/.well-known/oauth-protected-resource/mcp","resource":"https://invoice-continuity2.vercel.app/mcp","authorizationServers":["https://amwewpcjebyjftgomupf.supabase.co/auth/v1"],"scopesSupported":["email","offline_access"]},"authorizationServer":{"url":"https://amwewpcjebyjftgomupf.supabase.co/.well-known/oauth-authorization-server/auth/v1","issuer":"https://amwewpcjebyjftgomupf.supabase.co/auth/v1","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256","plain"],"tokenEndpointAuthMethodsSupported":["client_secret_basic","client_secret_post","none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-09T00:24:07.018Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"*.vercel.app","issuer":{"commonName":"WR1","organization":"Google Trust Services"},"validFrom":"2026-08-29T19:48:09.000Z","validTo":"2026-11-27T19:48:08.000Z","daysToExpiry":46,"sanCount":1,"fingerprint256":"8F:46:C4:A0:A2:89:BF:DE:40:60:D0:69:86:F2:AF:76:1E:E6:2D:66:8D:DE:97:2E:6B:EF:46:87:EE:4F:60:93"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.LAHutchins91/invoice","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.LAHutchins91%2Finvoice","firstSeenAt":"2026-10-07T00:19:33.828Z","fetchedAt":"2026-10-09T22:20:31.038Z","normalizedAt":"2026-10-09T22:20:31.038Z"}]},"firstSeenAt":"2026-10-07T00:19:33.828Z","updatedAt":"2026-10-11T20:27:12.035Z"}