io.github.theluckystrike/bill-of-sale
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Bills of sale for equipment, vehicles and stock: draft, finalize, print with signature lines.
| Author | io.github.theluckystrike |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2950 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"bill-of-sale": {
"url": "https://mcp.zovo.one/mcp/bill-of-sale",
"transport": "streamable-http"
}
}
}
Measured tools (10)
sale_createRecord a sale and generate the bill of sale: who sold, who bought, what item (with VIN, serial or IMEI where it has one), the price in minor units and the date. Returns the BOS-YYYY-NNNN number of the draft. The draft can still be changed with sale_update; sale_finalize freezes it into the signing copy and sale_render prints it. Free tier: 10 drafts.
Parameters:
buyer_name(required) — string — Who is buying, e.g. Jane Kowalska or Northwind Sp. z o.o.item_description(required) — string — What was sold, specific enough to identify it, e.g. 2019 Honda Civic 1.5 petrol, grey, or MacBook Pro 14-inch 2021price_minor(required) — integer — The sale price in whole minor units (integer cents). 120000 is USD 1,200.00currency(required) — string — ISO code the price is invin— string — Vehicle Identification Number, 17 characters, for a vehicle saledate— string — The date of the sale, YYYY-MM-DD. Default todayimei— string — IMEI, 15 digits, for a phone or tabletas_is— boolean — Include the as-is clause: sold with all faults, no warranties except any written here. Default true, the norm for second-hand sales; pass false to leave it outnotes— string — Anything else the document should say, e.g. payment method or what is included in the saleserial— string — Serial number, for equipment and electronicsquantity— integer — How many units this document covers. Default 1warranty— string — A warranty the seller does give, in their own words, e.g. The seller warrants the engine for 30 days from the sale datecondition— string — The condition at handover, e.g. used, good working order, or new, sealedbuyer_email— string — The buyer's emailbuyer_phone— string — The buyer's phone numberseller_name— string — Who is selling. Defaults to the shared business profile's name when the profile has oneduplicate_ok— boolean — Record it even though an identical sale to the same buyer exists, for a genuinely repeated sale. Default falseseller_email— string — The seller's emailseller_phone— string — The seller's phone numberbuyer_address— string — The buyer's postal address, one stringitem_category— string — What kind of item, e.g. vehicle, equipment, electronics, stockseller_address— string — The seller's postal address, one stringidentifier_other— string — Any other identifying number, e.g. a hull number or an asset tag
Hints: read-only no · destructive no · idempotent no · open-world no
sale_updateChange anything on a bill of sale that is not finalized yet: price, buyer, seller, item details, identifiers, the as-is clause, warranty or notes. Pass an empty string to clear an optional field. A finalized document cannot be edited.
Parameters:
sale(required) — string — The bill of sale id, e.g. BOS-2026-0001vin— stringdate— string — The date of the sale, YYYY-MM-DDimei— stringas_is— booleannotes— stringserial— stringcurrency— stringquantity— integerwarranty— stringcondition— stringbuyer_name— string — Who is buyingbuyer_email— stringbuyer_phone— stringprice_minor— integer — The sale price in whole minor units (integer cents)seller_name— string — Who is sellingseller_email— stringseller_phone— stringbuyer_address— stringitem_category— stringseller_address— stringidentifier_other— stringitem_description— string
Hints: read-only no · destructive no · idempotent no · open-world no
sale_finalizeFinalize a bill of sale so it is ready to sign: the document is frozen from this call on, sale_update refuses it, and every later render is the signing copy without the DRAFT watermark. Free tier: 5 finalized documents.
Parameters:
sale(required) — string — The bill of sale id, e.g. BOS-2026-0001
Hints: read-only no · destructive no · idempotent no · open-world no
sale_listread-onlyList every bill of sale, drafts and finalized, newest first: id, status, date, item, buyer, seller and price. Filter to drafts or finalized documents with status.
Parameters:
limit— integer — Maximum rows, default 500status— string — Which documents to list: all (default), draft, or final
Hints: read-only yes · destructive no · idempotent yes · open-world no
sale_getread-onlyRead one bill of sale in full by its BOS number: both parties, the item and its identifiers, price, terms, and whether it is still a draft or the finalized signing copy.
Parameters:
sale(required) — string — The bill of sale id, e.g. BOS-2026-0001
Hints: read-only yes · destructive no · idempotent yes · open-world no
sale_deletedestructiveDelete a bill of sale by its BOS number. A draft goes outright. A finalized document needs confirm_finalized true, because it is the local copy of a record the buyer may hold. The BOS number is never reissued, so a gap in the series is the record that a document was deleted.
Parameters:
sale(required) — string — The bill of sale id, e.g. BOS-2026-0001confirm_finalized— boolean — Required true to delete a finalized document. Default false
Hints: read-only no · destructive yes · idempotent no · open-world no
sale_renderRender a bill of sale as a clean printable document: Markdown, a self-contained HTML file ready for print-to-PDF, or both, with signature lines for seller and buyer. Drafts render with a DRAFT watermark so a review copy cannot be signed by mistake. Every file comes back as a download link valid for one hour, and out_path is only the stem the files are named with. Free.
Parameters:
sale(required) — string — The bill of sale id, e.g. BOS-2026-0001format— string — What to render: markdown, html, or both (default). The HTML is one self-contained file, no external assetsout_path— string — Name for the downloaded files, e.g. civic-sale; with format both, .md and .html are appended to the stem. Default: the document id. Each file comes back as a download link valid for one houroverwrite— boolean — Replace an existing file at out_path. Default false: an occupied explicit path is refused, a derived one gets -2, -3, ...
Hints: read-only no · destructive no · idempotent no · open-world no
sale_summaryread-onlySummarize the book: how many drafts and finalized documents, and the total sold value per currency, drafts separate from finalized. Currencies are never added together. Free.
Hints: read-only yes · destructive no · idempotent yes · open-world no
license_statusread-onlyReport this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
Hints: read-only yes · destructive no · idempotent yes · open-world no
license_activateTurn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
Parameters:
key(required) — string — License key from checkout, MCPL1.<payload>.<signature>
Hints: read-only no · destructive no · idempotent no · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.