Skip to main content
Glama
AzielEliab

trades-runtime

Trades-Runtime

Private TypeScript runtime for a shadow-first AI operating system / company operating intelligence layer. Field trades: HVAC, plumbing, electrical, sewer, and cross-trades.

Author / identity: Aziel Eliab only. See IDENTITY.md. No legal name, home, or county on exports.
Version: 0.3.4
Role: trades-runtime
License: Apache-2.0
Visibility: this repository stays private; public get is the giveaway Worker
Public Worker (if deployed): https://trades-runtime.vibelock.workers.dev
Try on Glama (intended listing): https://glama.ai/mcp/servers/AzielEliab/trades-runtime — pack is in-repo (glama.json, Dockerfile, cli/mcp-stdio.mjs). Do not treat Install Server as LIVE until a Glama admin Deploy + Make Release succeeds. See docs/GLAMA.md.
Status: 0.3.4 public-giveaway + Growth-ON crawl cut — lockstep with Property Intelligence v1.0 in-tree — live-pure core + honest stubs — BYO local ServiceTitan + ProBooks inbound — no live writes, tenant data, ST/ProBooks write-back, DOIs, hosted uploader, or production company-OS claim — Option C code-ready / pilot not started — Option D not started

The product is the software in src/. docs/ is a thin local catalog/UI. GitHub Pages is intentionally disabled (live_backends: false). There is no Pages workflow. PDFs are never published. Implementer specs live at repo-root specs/ (not under docs/).

Standing rule: every PDF Aziel sends is a spec to implement as coded software.

Paper trail: TR-AUDIT-2026-09-18C · TR-AUDIT-2026-09-18B · TR-AUDIT-2026-09-18 · TR-AUDIT-2026-09-17 · TR-CUT-2026-09-17 · TR-BOT-2026-09-17 (standing brief) · TR-BYO-2026-09-17 (amends TR-BOT §9 and TR-CUT R2–R3).

Install, test, demo

npm install
npm test
npm run typecheck
npm run demo
npm run byo:admit-demo
npm run shadow:sealed-demo
npm run manifest
npm run mcp

npm test runs constitutional rule tests including Human Authority, confidence≠truth, CrossTrade secondary-only routing, v0.2 recognition / pricebook lock / mission board / location economics, the 0.3.3 execution spine (FragGate inbound, durable receipts, runAction), restart-replay of append-only JSONL receipts (data/receipts.jsonl or {tmpdir}/tr-replay-*/receipts.jsonl), the synthetic BYO admit demo, and Option C sealed-shadow scaffolding (no auto-promote, engagement drop-back, required settlement fields).

CI (.github/workflows/ci.yml) runs npm ci, npm run typecheck, and npm test on pull requests and pushes to main. GitHub Pages is intentionally disabled — do not treat a github.io URL as a test gate.

npm run demo runs a synthetic shadow-day: Call-Fit, sealed counterfactual, human override, hash-chained receipts, trajectory rebase.

Related MCP server: NeuroLink

Software map

Area

Path

Status

Canonical IDs / events / modes

src/core/

live-pure

Confidence ≠ truth

src/core/confidence.ts

live-pure

Chains A/B/C/D

src/core/chains.ts

live-pure

Human Authority

src/core/human-authority.ts

live-pure

TradesCoherence, EvidencePacket, DecisionGate, ReceiptLedger, Shadow, Trajectory

src/inherited/

live-pure

Call-Fit, economics, CrossTrade, Chain D, workforce, Decision Fabric, analytics

src/domain/

live-pure

Communications (event-stream channels)

src/domain/communications.ts

live-pure

Recognition (quality-gated)

src/domain/recognition.ts

live-pure

Daily mission board

src/domain/mission-board.ts

live-pure

Pricebook (ST shadow + LOCK)

src/domain/pricebook.ts

live-pure

Truck stock / fulfillment

src/domain/truck-stock.ts

live-pure

Weather / demand / lunar (experimental)

src/domain/weather-demand.ts

live-pure

Maintenance routing (demand-first)

src/domain/maintenance-routing.ts

live-pure

Property Intelligence v1.0

src/domain/property-*.ts, neighborhood-*.ts, regional-recalibration.ts

live-pure

FragGate inbound

src/spine/fraggate-inbound.ts

live-pure

Durable receipts

src/spine/durable-receipts.ts

live-pure

runAction() spine

src/spine/run-action.ts

live-pure

Actor / authority registry

src/core/actor-registry.ts

live-pure

Shadow modes

src/core/shadow-modes.ts

live-pure

Engagement rules (not an order)

src/core/engagement-rules.ts

live-pure

One-branch shadow config

src/core/shadow-branch.ts

live-pure

Settlement harness

src/core/settlement-harness.ts

live-pure

ServiceTitan shadow (read-only)

src/spine/servicetitan-shadow.ts

live-pure

ProBooks shadow (read-only, peer inbound)

src/spine/probooks-shadow.ts

live-pure

Local BYO inbound layout

src/spine/inbound-layout.ts

live-pure

Local inbound config (no cloud account)

src/spine/local-inbound-config.ts

live-pure

Runtime isolate (per-instance receipts)

src/spine/runtime-isolate.ts

live-pure

Synthetic BYO admit demo

src/demo/byo-admit.ts

live-pure

Synthetic sealed-shadow demo

src/demo/shadow-sealed.ts

live-pure

Fulfillment state machine

src/domain/fulfillment-machine.ts

live-pure

Mission board clock

src/domain/mission-board.ts

live-pure

PI wired to jobs

src/domain/property-jobs.ts

live-pure

§18 freeze + v0.2 governing rules

src/rules/constitution.ts

live-pure

ServiceTitan / ProBooks live writes

—

refused

BYO inbound (TR-BYO-2026-09-17)

Each user incorporates their own ServiceTitan and their own ProBooks into their local runtime. The authoring node / GitHub is not a data custodian. No central dump. No hosted uploader. No phone-home.

Local inbound on that machine (contents gitignored):

  • data/inbound/servicetitan/ — ST export or read-only pull the user places

  • data/inbound/probooks/ — ProBooks books / items / costs / vendor files the user places

  • data/runtime/<instanceId>/receipts.jsonl and ledger.jsonl — isolate per runtime instance

Not data/tenants/ (that word implies a hosted multi-tenant service). Optional local config lists paths or read endpoints only — no cloud account. Tokens stay on the user’s machine or their sealed vault.

FragGate first-class sourceKind values: servicetitan (MEDIUM, hashed, live:false write:false), probooks (same), operator-file (LOW until origin tagged; still not truth), human (manager correction on Chain C with actor id). Wrapper ≠ verified. Scrape and silent promotion to VERIFIED are refused.

npm run byo:admit-demo is operator-software proof with synthetic fixtures under test/fixtures/byo/. It copies those fixtures into a temp inbound dir, admits via FragGate as servicetitan + probooks, hashes packets, writes isolate receipts under a temp data/runtime/<id>/, prints hashes, and proves wrapper ≠ VERIFIED while ST/ProBooks writes still throw. It is not a customer dump. The authoring node is not a data custodian.

Real user exports belong only on that user's machine under data/inbound/{servicetitan,probooks}/ (gitignored except .gitkeep).

Inherited names come only from specs/aziel-runtime-inheritance.txt. This is not a wholesale copy of aziel-runtime Softwares.

Ladder (honest)

Option

Meaning

State

A

Merge-only

done

B

Local spine

done in software

C

One-branch shadow

code-ready / pilot not started

D

Advise-lock pilot

not started

Software for Option C exists (named branch, engagement rules, sealed settlement harness, synthetic demo). That is not a company or field pilot. Do not tell a GM the company OS is live. Do not fake Option C as a live company pilot. Option D is still NO.

Still human/operator-only: a real ServiceTitan path on their box, a named GM, and sealed days against their actuals. The authoring node does not hold that dump.

Public giveaway Worker

Operator-authorized public surface is a Cloudflare Worker:

https://trades-runtime.vibelock.workers.dev

Worker script name: trades-runtime (same vibelock workers.dev account pattern as aziel-runtime.vibelock.workers.dev). Source: workers/giveaway/.

What it is:

  • Human landing + counted Apache-2.0 tarball download

  • Thin read-only /openapi.json and POST /mcp for AI clients (health / stats / cite / skill only)

  • Growth-ON crawl surfaces: /robots.txt (full Allow + Content-Signal), /sitemap.xml, /ai.txt, /humans.txt, /.well-known/mcp.json, /person.jsonld, /graph.jsonld

  • Stdio MCP bridge for Glama / Claude Desktop / Cursor: npm run mcp → cli/mcp-stdio.mjs (forwards to Worker POST /mcp)

  • Honest Workers KV counters (COUNTS): views and downloads start at 0; increment only on successful 200 responses; no sampling, no seed, no inflation

Deploy (operator / box with wrangler auth)

This repository does not deploy the Worker. First time on the vibelock account:

npm ci
npm test
cd workers/giveaway
npm ci
npx wrangler kv namespace create COUNTS
# paste the printed id into wrangler.jsonc kv_namespaces[0].id
npm run pack
npx wrangler deploy

Later deploys from repo root:

npm run giveaway:pack
cd workers/giveaway && npx wrangler deploy

Local smoke (Miniflare KV, no Cloudflare auth required):

npm run giveaway:pack
cd workers/giveaway
npx wrangler dev
# GET http://127.0.0.1:8787/  /download  /v1/health  /v1/stats  /robots.txt  /sitemap.xml  /ai.txt

Counters: see workers/giveaway/README.md.

Glama (Install Server pack)

Intended listing: Try on Glama

The listing URL is documented so agents and humans can find it. The Git pack (glama.json + Dockerfile + cli/mcp-stdio.mjs) is what Glama needs to index and host a stdio process. Install Server is not LIVE until GitBaby / TradesBot (or a human signed in as AzielEliab) finish Glama admin: Score claim → Deploy → Make Release. That cannot be done from git alone. Steps: docs/GLAMA.md.

Do not invent Glama TDQS scores. Do not claim the listing is already live.

Local / Docker:

npm run mcp
# or
node cli/mcp-stdio.mjs
docker build -t trades-runtime-mcp .
docker run --rm -i trades-runtime-mcp

Pages (intentionally disabled)

GitHub Pages is intentionally disabled. There is no .github/workflows/pages.yml. Do not add a Pages deploy workflow. Do not enable Pages on the repository. Do not treat a github.io URL as a live product surface.

Keep the repository private. Do not change visibility to public. Public get is the Worker download. Do not enable GitHub Pages. Do not add PDFs under docs/.

Local UI preview (Pages stay off):

python3 -m http.server 4173 --directory docs

Machine catalog: docs/v1/runtime.json. Module UI: /modules/.

What this is not (§1.2)

Not a simple dispatch optimizer. Not a revenue-as-skill leaderboard. Not a fixed morning route planner. Not an autonomous black box that silently overrules humans. Not photo-as-proof of misconduct. Not fuel-first. Not an automatic 30-day callback penalty. Not a PDF portal.

License

Apache License 2.0. See LICENSE.

Available Tools

4 tools
trades_runtime_citeB

Public cite.json for Trades-Runtime. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It does state 'Public' and 'Read-only', which usefully imply no authentication and no mutating side effects, but it provides no further behavioral detail such as response type, stability, or any operational caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short and front-loads the key facts: resource identity and read-only nature. It contains no filler, though it slightly repeats the tool name ('Trades-Runtime') and could have used the saved space to clarify the resource's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, public, read-only tool, the description covers the essential safety profile and resource, but it does not state what the response will contain or how this tool relates to its siblings. Given no output schema and no annotations, a bit more context about the cite.json content would make the definition fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters and the schema description coverage is 100%, so the description does not need to explain parameter semantics. The 'Public ... Read-only' phrasing is consistent with a parameterless fetch operation, and no parameter ambiguity exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific resource (cite.json) and indicates read-only access, but it lacks an explicit verb such as 'retrieve' or 'fetch' and does not explain what the cite.json contains. This makes the tool's purpose understandable but somewhat vague and only weakly differentiates it from sibling tools like trades_runtime_health or trades_runtime_stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus its siblings. The description mentions neither alternative tools nor conditions that would make trades_runtime_cite the appropriate choice, leaving the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trades_runtime_healthC

Trades-Runtime giveaway health. Read-only. Does not increment counters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It usefully states 'Read-only' and 'Does not increment counters,' which are important side-effect guarantees. However, it does not clarify what 'health' means, what the tool checks, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and contains no filler, which is appropriate for a parameterless health check. However, the fragmented phrasing 'Trades-Runtime giveaway health' is awkward and could be clearer.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, no annotations, and no parameter information to lean on, so the description must explain what the tool returns or what 'health' means. It does not, leaving an agent uncertain about the tool's actual behavior and result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description does not need to explain parameter semantics, and the empty schema already fully documents the parameter surface.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description says 'Trades-Runtime giveaway health' but lacks an explicit verb or action, so it does not clearly state what the tool does. It mostly restates the tool name and does not distinguish itself from siblings like trades_runtime_stats or trades_runtime_skill.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus its siblings, no mention of alternatives, and no exclusions. The only context is 'Read-only' and 'Does not increment counters,' which describe behavior rather than usage conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trades_runtime_skillC

Agent skill markdown for the public giveaway Worker.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It hints that the tool provides a skill markdown document, but it does not state the return format, whether any side effects occur, whether authentication is needed, or what the agent should expect when invoking it. This is a significant gap for a tool with zero annotation context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and has no wasted words, but it is under-specified to the point of being a fragment. It lacks a clear subject-verb structure and does not convey enough information to justify its brevity. This is closer to under-specification than effective conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, the description should explain what the tool returns or how it behaves. 'Agent skill markdown for the public giveaway Worker' is too vague to give the agent enough context to know when to call it or what to do with the result. The sibling tool names suggest a family of runtime utilities, but this description does not situate itself among them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the baseline is 4. There are no parameter meanings to explain, and the description does not need to compensate for missing schema detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a noun phrase—'Agent skill markdown for the public giveaway Worker'—rather than a statement with a verb and resource. It restates the word 'skill' from the tool name and vaguely suggests the tool provides markdown, but it never explicitly says what the tool does, what it returns, or how it differs from the sibling tools (health, stats, cite).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given for when to use this tool versus the siblings. There is no mention of alternatives, prerequisites, or scenarios where this tool is appropriate. The agent is left to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trades_runtime_statsA

Honest KV view/download counts with human/bot split. Read-only. Does not increment counters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It states 'Read-only' and 'Does not increment counters,' which are important safety guarantees. It does not describe the return format or any error behavior, but for a simple read operation, the core behavioral traits are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the core action ('Honest KV view/download counts') and then adds essential behavioral qualifiers. Every word earns its place; there is no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should explain what the return data looks like. It does not describe the shape of the counts (e.g., JSON structure, fields, or whether they are aggregated). While the operation is simple, an agent might need to know the output format to process it correctly. This gap prevents a higher score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema is empty. With no parameters to document, the baseline is 4. The description adds nothing about parameters (correctly), as none exist. It effectively compensates for the lack of a schema by providing context on what the tool measures.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description precisely states the tool's function: 'view/download counts with human/bot split' for a KV store. This clearly distinguishes it from sibling tools (skill, health, cite) which serve different purposes. The verb and resource are concrete and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly mention when to use this tool versus its siblings, nor does it state any exclusion conditions. However, the distinct focus on stats/logs implicitly signals it is for retrieving counts rather than for skill execution, health checks, or citation tasks. This is sufficient but not proactive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 4 tool updatesv0.3.4
    • First observedtrades_runtime_cite
    • First observedtrades_runtime_health
    • First observedtrades_runtime_skill
    • First observedtrades_runtime_stats

TDQS

A3.5/5.0

Scored across 4 tools

Disambiguation5/5

Each tool exposes a distinct concern: skill documentation, health status, usage statistics, and citation data. Health and stats are both read-only, but their descriptions clearly separate service health from view/download counts.

Naming Consistency5/5

All tools follow the same snake_case prefix pattern: trades_runtime_ followed by a specific noun (skill, health, stats, cite). This is consistent and predictable.

Tool Count5/5

Four tools is a well-scoped set for a runtime information server. Each tool covers a meaningful public-facing aspect without unnecessary bloat.

Completeness5/5

The server surfaces all expected public runtime concerns: usage instructions, health, statistics, and citation metadata. There are no obvious gaps for the stated read-only purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    TypeScript AI SDK with a built-in MCP client: 58+ MCP servers over 4 transports (stdio, HTTP, SSE, WebSocket), 24+ LLM providers behind one interface, streaming, tool calling, RAG, voice (TTS/STT/realtime), and task scheduling.
    7,368 npm
    139
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A language-neutral runtime for the SEP-2663 task lifecycle and io.sdar/taskExecution Provider Profile, delegating resource facts and side effects to versioned gRPC/Protobuf adapters. Implemented in strict TypeScript, it provides durable scheduling, recovery, and a full test suite for conformance.
    1
    Apache 2.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    A native TypeScript AI orchestration engine and MCP server that coordinates autonomous sub-agents for complex coding tasks using DAG-based parallel execution and multi-agent consensus validation, with a real-time web dashboard.
    1
    -