MCP 服务器

bill-of-sale

io.github.theluckystrike/bill-of-sale
商业与运营 法律与合规 公开且可连接 MCP 2026-07-28

此 MCP 可以做什么

Creates, manages, finalizes, summarizes, and renders bills of sale for equipment, vehicles, and inventory.

license_activate
Activate license
Turn 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.
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': 'License key from checkout, MCPL1.<payload>.<signature>'}}, 'additionalProperties': False}
license_status
License status
Report 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.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
sale_create
Record a sale
Record 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.
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['buyer_name', 'item_description', 'price_minor', 'currency'], 'properties': {'vin': {'type': 'string', 'maxLength': 40, 'description': 'Vehicle Identification Number, 17 characters, for a vehicle sale'}, 'date': {'type': 'string', 'maxLength': 10, 'description': 'The date of the sale, YYYY-MM-DD. Default today'}, 'imei': {'type': 'string', 'maxLength': 20, 'description': 'IMEI, 15 digits, for a phone or tablet'}, 'as_is': {'type': 'boolean', 'description': '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 out'}, 'notes': {'type': 'string', 'maxLength': 4000, 'description': 'Anything else the document should say, e.g. payment method or what is included in the sale'}, 'serial': {'type': 'string', 'maxLength': 200, 'description': 'Serial number, for equipment and electronics'}, 'currency': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'ISO code the price is in'}, 'quantity': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'How many units this document covers. Default 1'}, 'warranty': {'type': 'string', 'maxLength': 4000, 'description': 'A warranty the seller does give, in their own words, e.g. The seller warrants the engine for 30 days from the sale date'}, 'condition': {'type': 'string', 'maxLength': 200, 'description': 'The condition at handover, e.g. used, good working order, or new, sealed'}, 'buyer_name': {'type': 'string', 'maxLength': 200, 'description': 'Who is buying, e.g. Jane Kowalska or Northwind Sp. z o.o.'}, 'buyer_email': {'type': 'string', 'maxLength': 200, 'description': "The buyer's email"}, 'buyer_phone': {'type': 'string', 'maxLength': 200, 'description': "The buyer's phone number"}, 'price_minor': {'type': 'integer', 'maximum': 999999999999, 'minimum': 0, 'description': 'The sale price in whole minor units (integer cents). 120000 is USD 1,200.00'}, 'seller_name': {'type': 'string', 'maxLength': 200, 'description': "Who is selling. Defaults to the shared business profile's name when the profile has one"}, 'duplicate_ok': {'type': 'boolean', 'description': 'Record it even though an identical sale to the same buyer exists, for a genuinely repeated sale. Default false'}, 'seller_email': {'type': 'string', 'maxLength': 200, 'description': "The seller's email"}, 'seller_phone': {'type': 'string', 'maxLength': 200, 'description': "The seller's phone number"}, 'buyer_address': {'type': 'string', 'maxLength': 4000, 'description': "The buyer's postal address, one string"}, 'item_category': {'type': 'string', 'maxLength': 200, 'description': 'What kind of item, e.g. vehicle, equipment, electronics, stock'}, 'seller_address': {'type': 'string', 'maxLength': 4000, 'description': "The seller's postal address, one string"}, 'identifier_other': {'type': 'string', 'maxLength': 200, 'description': 'Any other identifying number, e.g. a hull number or an asset tag'}, 'item_description': {'type': 'string', 'maxLength': 4000, 'description': 'What was sold, specific enough to identify it, e.g. 2019 Honda Civic 1.5 petrol, grey, or MacBook Pro 14-inch 2021'}}, 'additionalProperties': False}
sale_delete
Delete a bill of sale
Delete 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.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sale'], 'properties': {'sale': {'type': 'string', 'maxLength': 200, 'description': 'The bill of sale id, e.g. BOS-2026-0001'}, 'confirm_finalized': {'type': 'boolean', 'description': 'Required true to delete a finalized document. Default false'}}, 'additionalProperties': False}
sale_finalize
Finalize the bill of sale for signing
Finalize 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.
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sale'], 'properties': {'sale': {'type': 'string', 'maxLength': 200, 'description': 'The bill of sale id, e.g. BOS-2026-0001'}}, 'additionalProperties': False}
sale_get
Read one bill of sale
Read 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.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sale'], 'properties': {'sale': {'type': 'string', 'maxLength': 200, 'description': 'The bill of sale id, e.g. BOS-2026-0001'}}, 'additionalProperties': False}
sale_list
List bills of sale
List 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.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'Maximum rows, default 500'}, 'status': {'enum': ['all', 'draft', 'final'], 'type': 'string', 'description': 'Which documents to list: all (default), draft, or final'}}, 'additionalProperties': False}
sale_render
Print the bill of sale
Render 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.
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sale'], 'properties': {'sale': {'type': 'string', 'maxLength': 200, 'description': 'The bill of sale id, e.g. BOS-2026-0001'}, 'format': {'enum': ['markdown', 'html', 'both'], 'type': 'string', 'description': 'What to render: markdown, html, or both (default). The HTML is one self-contained file, no external assets'}, 'out_path': {'type': 'string', 'maxLength': 1000, 'description': '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 hour'}, 'overwrite': {'type': 'boolean', 'description': 'Replace an existing file at out_path. Default false: an occupied explicit path is refused, a derived one gets -2, -3, ...'}}, 'additionalProperties': False}
sale_summary
Summarize the sales book
Summarize 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.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
sale_update
Change a bill of sale before signing
Change 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.
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sale'], 'properties': {'vin': {'type': 'string', 'maxLength': 40}, 'date': {'type': 'string', 'maxLength': 10, 'description': 'The date of the sale, YYYY-MM-DD'}, 'imei': {'type': 'string', 'maxLength': 20}, 'sale': {'type': 'string', 'maxLength': 200, 'description': 'The bill of sale id, e.g. BOS-2026-0001'}, 'as_is': {'type': 'boolean'}, 'notes': {'type': 'string', 'maxLength': 4000}, 'serial': {'type': 'string', 'maxLength': 200}, 'currency': {'type': 'string', 'pattern': '^[A-Za-z]{3}$'}, 'quantity': {'type': 'integer', 'maximum': 100000, 'minimum': 1}, 'warranty': {'type': 'string', 'maxLength': 4000}, 'condition': {'type': 'string', 'maxLength': 200}, 'buyer_name': {'type': 'string', 'maxLength': 200, 'description': 'Who is buying'}, 'buyer_email': {'type': 'string', 'maxLength': 200}, 'buyer_phone': {'type': 'string', 'maxLength': 200}, 'price_minor': {'type': 'integer', 'maximum': 999999999999, 'minimum': 0, 'description': 'The sale price in whole minor units (integer cents)'}, 'seller_name': {'type': 'string', 'maxLength': 200, 'description': 'Who is selling'}, 'seller_email': {'type': 'string', 'maxLength': 200}, 'seller_phone': {'type': 'string', 'maxLength': 200}, 'buyer_address': {'type': 'string', 'maxLength': 4000}, 'item_category': {'type': 'string', 'maxLength': 200}, 'seller_address': {'type': 'string', 'maxLength': 4000}, 'identifier_other': {'type': 'string', 'maxLength': 200}, 'item_description': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}
已更改
license_activate
2026年9月21日 02:56
已更改
license_status
2026年9月21日 02:56
已更改
sale_summary
2026年9月21日 02:56
已更改
sale_render
2026年9月21日 02:56
已更改
sale_delete
2026年9月21日 02:56
已更改
sale_get
2026年9月21日 02:56
已更改
sale_list
2026年9月21日 02:56
已更改
sale_finalize
2026年9月21日 02:56
已更改
sale_update
2026年9月21日 02:56
已更改
sale_create
2026年9月21日 02:56
已添加
license_activate
2026年9月17日 12:52
已添加
license_status
2026年9月17日 12:52
已添加
sale_summary
2026年9月17日 12:52
已添加
sale_render
2026年9月17日 12:52
已添加
sale_delete
2026年9月17日 12:52
已添加
sale_get
2026年9月17日 12:52
已添加
sale_list
2026年9月17日 12:52
已添加
sale_finalize
2026年9月17日 12:52
已添加
sale_update
2026年9月17日 12:52
已添加
sale_create
2026年9月17日 12:52