# Trades-Runtime skill

Product: Trades-Runtime 1.0.0
Checked 2026-10-02 on https://glama.ai/mcp/servers/@AzielEliab/trades-runtime: Glama Latest/releaseVersion is 1.0.0-local (latestRelease.version). The Official MCP Registry still measures 1.0.0-local. Those public mirrors are behind the in-repo Softwares pin 1.0.0. Catch-up pending. The public badge does not match this cite tip yet. Local Softwares 1.0. That gap is not a Field 1.0 claim and not Office Softwares 1.0. The version field is this repo and the Worker source pin 1.0.0. glama.json version is the in-repo claim file at 1.0.0 and does not yet match the public badge. The giveaway Worker source pin in this repo is 1.0.0 and matches the package and the manifest. Checked 2026-09-28: the already-running Worker /v1/health is still 0.4.12. This cite does not deploy. This cut does not Make Release and does not republish the registry. pilot_started false. live_backends false.
Author / identity: Aziel Eliab only
Person @id: https://www.azieleliab.com/#aziel
X / Twitter: @AzielEliab https://x.com/AzielEliab
License: Apache-2.0
Worker: https://trades-runtime.vibelock.workers.dev

## What it is

Local-first BYO TypeScript runtime for HVAC, plumbing, electrical, sewer, and cross-trades.
People bring their own ServiceTitan and ProBooks. Humans use the giveaway Worker UI on this VibeLock host (browser / PWA) without downloading first. Agents use OpenAPI and MCP. The optional counted pack is GET /download. The operator desk still installs on the operator machine.
Thin OpenAPI/MCP for health, stats, cite, and this skill.

## In the local package (not on this Worker)

Local package only. These modules and platform peers run on the operator machine against the operator's own exports or optional read-only pulls (token from a local env var). Every admitted row is MEDIUM, UNVERIFIED. Writes go through the local approval gate, off by default. mappingConfidence: documented = field names checked against the vendor's published schema; partial = some published; guessed = confirm with a real export. Not tested against a live tenant.

Modules:
- refrigerant-log: EPA Section 608 / AIM Act refrigerant log: charged, recovered, reclaimed; leak-rate trigger alerts from the shop's own log.
- permits-board: Permits and inspections per job and jurisdiction, with shop-entered rules.
- agreements-board: Maintenance agreements: renewals due, missed tune-ups, not visited; revenue at risk only from prices the shop supplies.
- warranty-claims: Parts replaced under warranty with no claim, and claim status aging.
- truck-stock-tomorrow: Counted van stock vs the parts tomorrow's scheduled jobs need; uncounted stays unknown.
- callback-root-cause: Callbacks linked to the original job only by explicit reference; rollups by tech, part, model, install step.

Platform peers (folder data/inbound/<kind>/):
- Jobber: file drop + optional read-only pull; mapping partial
- Housecall Pro: file drop + optional read-only pull; mapping partial
- Square: file drop + optional read-only pull; mapping partial
- QuickBooks Online: file drop + optional read-only pull; mapping partial
- FieldEdge: file drop only; mapping documented
- Service Fusion: file drop + optional read-only pull; mapping partial
- Successware: file drop only; mapping guessed
- Workiz: file drop + optional read-only pull; mapping documented
- ServiceTrade: file drop + optional read-only pull; mapping documented
- BuildOps: file drop only; mapping guessed
- FieldPulse: file drop + optional read-only pull; mapping partial
- Kickserv: file drop + optional read-only pull; mapping partial
- mHelpDesk: file drop only; mapping partial
- ServiceM8: file drop + optional read-only pull; mapping partial
- Simpro: file drop + optional read-only pull; mapping partial
- Commusoft: file drop + optional read-only pull; mapping partial
- Wintac: file drop only; mapping guessed

## Honest counters

Honest Workers KV counts. views increments exactly once per successful GET / HTML homepage 200. Health-check user-agents and non-GET / requests are not counted. downloads increments exactly once per successful GET /download 200 after the release tarball is verified as gzip. Assets, /v1/health, /v1/stats, /openapi.json, /mcp, /cite.json, /llms.txt, /robots.txt, and /v1/skill do not increment. No sampling. No inflation. No estimated unique visitors. Start at 0. Each increment writes one unique COUNTS key (views:<uuid> or downloads:<uuid>) and also does value = (parseInt(await kv.get(name))||0)+1 with put on the name key. GET /v1/stats lists the unique keys (source of truth) and never seeds or rounds up. KV list is eventually consistent — a just-written key may take up to ~60s to appear in another colo. Failed downloads never increment.

## Install

curl -fsSL https://trades-runtime.vibelock.workers.dev/download -o trades-runtime-1.0.0.tgz
tar -xzf trades-runtime-1.0.0.tgz && cd package && npm install && npm test
npx tsx src/cli.ts desk
