Skip to main content
Glama
mcp-bill-of-sale

mcp-bill-of-sale

mcp-bill-of-sale

MCP server for a bill of sale generator: bills of sale for vehicles, equipment and stock with signature lines. Record a sale of equipment, a vehicle or stock and get a printable bill of sale with signature lines.

Works with Claude Desktop, Claude Code, Cursor and any Model Context Protocol client. Runs on your own machine, or hosted with no install.

Product page: https://mcp.zovo.one/s/bill-of-sale - what it does, the tools it exposes, and a live token endpoint.

Install

Hosted, nothing to install. Get a token from https://mcp.zovo.one/mcp/connect (the connect page) or https://mcp.zovo.one/mcp/token (the same token as JSON); a free anonymous one is issued on the spot and a Pro key works the same way. Then point an MCP client at https://mcp.zovo.one/mcp/bill-of-sale over streamable-http and send the token as Authorization: Bearer <token>.

If your client cannot set headers, put the token in the path instead: https://mcp.zovo.one/mcp/bill-of-sale/t/<token>. Both forms work. The bare URL with no token answers 401 on tools/call, so the token is not optional.

Claude Desktop, one click. Download bill-of-sale.mcpb from the latest release and double-click it.

From source. The mirror is self-contained: every @theluckystrike/* dependency is vendored, so a fresh clone builds with no extra setup.

git clone https://github.com/theluckystrike/mcp-bill-of-sale.git
cd mcp-bill-of-sale
npm install && npm run build

Then point your client at the built entry point:

{
  "mcpServers": {
    "bill-of-sale": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-bill-of-sale/dist/index.js"]
    }
  }
}

@theluckystrike/mcp-bill-of-sale is not published on npm yet, so an npx -y @theluckystrike/mcp-bill-of-sale command will fail. The three paths above are the working ones and each is exercised by CI.

bill-of-sale demo

Read-only mirror of mcp-servers/servers/bill-of-sale. See MIRROR.md.

theluckystrike/mcp-bill-of-sale MCP server

In the official MCP Registry (io.github.theluckystrike/bill-of-sale). Record a sale and get a signed-paper-ready bill of sale. Tell your assistant who sold, who bought, what the item is, with the VIN, serial number or IMEI where it has one, the price and the date, and the server writes the document: parties, item, price, an as-is clause for second-hand sales, any warranty in your own words, and signature lines for both sides. Work on it as a draft, finalize it into the frozen signing copy, and print it as Markdown or as a single self-contained HTML file that prints to PDF from any browser with no assets beside it. Everything stays on your machine; there is no account and no network call in this server at all.

Built by theluckystrike.

npm publish for @theluckystrike/mcp-bill-of-sale is pending, so npx -y @theluckystrike/mcp-bill-of-sale returns 404 today. Until then, a clone+build is the working path.

Related MCP server: signbee-mcp

Install

Claude Desktop

macOS ~/Library/Application Support/Claude/claude_desktop_config.json, Windows %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "bill-of-sale": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-bill-of-sale"]
    }
  }
}

Claude Code

claude mcp add bill-of-sale -- npx -y @theluckystrike/mcp-bill-of-sale

Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (project), same entry as Claude Desktop.

Tools

tool

what it does

sale_create

Record a sale and generate the bill of sale: seller, buyer, item with VIN/serial/IMEI where it has one, price in minor units, date. Returns BOS-YYYY-NNNN. An identical repeat sale is refused unless you confirm it

sale_update

Change anything on a draft before signing: price, parties, item details, identifiers, the as-is clause, warranty, notes. Empty string clears an optional field

sale_finalize

Freeze the draft into the signing copy. From here sale_update refuses it and every render prints without the DRAFT watermark

sale_list

Every bill of sale, newest first: id, status, date, item, buyer, seller, price. Filter to drafts or finalized

sale_get

One bill of sale in full by its BOS number

sale_delete

Delete a draft outright; a finalized document needs confirm_finalized: true. The number is never reissued, so a gap in the series is the record of the deletion

sale_render

Print the document: Markdown, a self-contained HTML file for print-to-PDF, or both, with signature lines. Drafts carry a DRAFT watermark so a review copy cannot be signed by mistake

sale_summary

The book at a glance: draft and finalized counts, total value per currency. Currencies are never added together

license_status / license_activate

Free or Pro, and the key

Free vs Pro

Free

Pro

Open drafts

10

Unlimited

Finalized documents

5

Unlimited

Render to Markdown and HTML (sale_render)

Unlimited

Unlimited

Read, list and summarize (sale_get, sale_list, sale_summary)

Unlimited

Unlimited

Delete (sale_delete)

Yes

Yes

The document itself is never metered. Whether you hold a signed record of the sale is the question this server exists to answer, and a free tier that withholds the document is a demo. What is metered is the volume of records held: ten open drafts and five finalized documents is a real year of side-business sales, not a trial. sale_delete is free for the same reason the cap is on records held: a draft typed in twice would otherwise cost a slot with no way back but a key.

Get Pro: https://mcp.zovo.one/buy/bill-of-sale, $19 one-time for this server, or $39 for the bundle.

How a sale flows

  1. sale_create with the facts. The seller defaults to the shared business profile's name when the profile has one, so the seller block is typed once for the whole suite.

  2. sale_render prints the review copy, watermarked DRAFT.

  3. sale_update fixes anything the buyer or seller spots.

  4. sale_finalize freezes it. sale_render now prints the signing copy: sign the printed page or print the HTML to PDF, and both parties keep a copy.

Every amount is an integer number of minor units, a price is never a float, and dates are checked as real calendar dates. A VIN that is not 17 characters or an IMEI that is not 15 digits is stored as given but flagged in the response, because those are the two identifiers a buyer most often misreads.

Privacy

All data stays local, in ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/bill-of-sale/. Two files: sales.json, counter.json, plus rendered documents under documents/. Nothing is sent anywhere, there is no account, no API key and no network call in this server at all. License keys are verified offline.

The rendered document is a generic template, not legal advice. Bills of sale for vehicles, boats and regulated goods may have statutory form or filing requirements where the sale happens.

Built by theluckystrike. https://github.com/theluckystrike

Use these docs as an MCP server

Any MCP client (Claude, Cursor, Windsurf, VS Code) can read this repository's documentation directly via GitMCP - no install:

Available Tools

10 tools
license_activateActivate licenseA

Activate a Pro key (MCPL1.xxx.yyy) from checkout: verified offline against a built-in public key, saved to your config file. A wrong, malformed or expired key is refused, unsaved. license_status reads it back.

Inputs: key (required).

license_statusLicense statusA

Report this server's licence state: product, tier free or pro, licence id, expiry, the key source and the upgrade URL. No arguments, no network. Explains a free-tier refusal; license_activate installs a key.

Inputs: no named parameters.

sale_createRecord a saleA

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.

Inputs: currency (required), buyer_name (required), price_minor (required), item_description (required), +19 more.

sale_deleteDelete a bill of saleA

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.

Inputs: sale (required), confirm_finalized.

sale_finalizeFinalize the bill of sale for signingA

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.

Inputs: sale (required).

sale_getRead one bill of saleA

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.

Inputs: sale (required).

sale_listList bills of saleA

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.

Inputs: limit, status.

sale_renderPrint the bill of saleA

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. Files default to the server's documents folder; pass out_path to choose. Free.

Inputs: sale (required), format, out_path, overwrite.

sale_summarySummarize the sales bookA

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.

Inputs: no named parameters.

sale_updateChange a bill of sale before signingA

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.

Inputs: sale (required), vin, date, imei, +19 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.3/5.0

    Scored across 10 tools

    Disambiguation5/5

    Each tool has a distinct lifecycle or query role: create/update/finalize/render/list/get/delete/summary cover separate actions, while license_status and license_activate are clearly separated. No overlapping purposes or ambiguous boundaries are apparent.

    Naming Consistency5/5

    All tools use snake_case with resource prefixes (sale_* and license_*), making the set predictable. The suffix choices are consistent enough for an agent to infer the target domain and action.

    Tool Count5/5

    Ten tools is well-scoped for a bill-of-sale server with license management. Each tool earns its place, covering core document lifecycle plus necessary licensing checks.

    Completeness5/5

    The surface covers full lifecycle: create, read/list, update, finalize, render, delete, summarize, and license activation/status. No obvious gaps for the stated bill-of-sale domain.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables creation and management of invoices with JSON storage and LaTeX-based PDF rendering. Supports draft creation and professional PDF generation through customizable LaTeX templates.
      Apache 2.0
    • A
      license
      A
      quality
      B
      maintenance
      Enables issuing credit notes and credit memos against an invoice or standalone as revisable drafts that can be finalized into frozen numbered documents, then rendered as Markdown or printable HTML with totals broken down by currency, reason and month. All amounts are handled as integer minor units and all data stays local, so nothing is sent anywhere.
      10
      57 npm
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables freelancers to create, store, render, and manage service agreements with scope, deliverables, rate, termination, liability, and signature blocks, including a before-send checklist and clause library.
      9
      46 npm
      MIT