{
  "openapi": "3.1.0",
  "info": {
    "title": "Trades-Runtime",
    "version": "0.3.4",
    "summary": "Public giveaway Worker for Trades-Runtime. Read-only distribution surface.",
    "description": "Local-first BYO runtime. People bring their own ServiceTitan and ProBooks. No tenant data on this Worker. No ST/ProBooks write-back. live_backends false. Not a production company OS claim. Counters: Honest KV increments for 200 responses only. views = successful GET / HTML homepage 200 (health-check user-agents skipped). downloads = successful GET /download 200 after gzip tarball verify. Additive fleet split: views_human/views_bot and downloads_human/downloads_bot with human{} bot{} and classification{method, bot_score_threshold:30, note}. Invariant: views===views_human+views_bot and downloads===downloads_human+downloads_bot. Pre-split remainder attributed to human. Classification: health-check skip; cf.botManagement verifiedBot or score<=30 → bot; UA denylist → bot; else human. Fallback method ua+healthcheck when botManagement absent. No sampling. No inflation. No estimated uniques. Start at 0. Unique COUNTS keys (views:, downloads:) plus running totals. KV list is eventually consistent.",
    "contact": {
      "name": "Aziel Eliab",
      "url": "https://www.azieleliab.com/"
    },
    "license": {
      "name": "Apache-2.0"
    },
    "x-identity": "Aziel Eliab",
    "x-person-id": "https://www.azieleliab.com/#aziel",
    "x-compatible-ai-clients": [
      "ChatGPT (GPT Actions / OpenAI)",
      "Grok (xAI)",
      "Venice",
      "Claude (Anthropic Desktop / custom tools)",
      "Cursor (MCP)",
      "Glama (Install Server / MCP)",
      "Perplexity",
      "Microsoft Copilot / Bing",
      "Google Gemini / Vertex AI",
      "Mistral",
      "Meta AI",
      "Apple Intelligence / Applebot surfaces",
      "Amazon Q / Amazonbot tooling",
      "DuckAssist / DuckDuckGo AI",
      "You.com",
      "Cohere",
      "plus other MCP/OpenAPI-capable assistants"
    ]
  },
  "servers": [
    {
      "url": "https://trades-runtime.vibelock.workers.dev"
    }
  ],
  "paths": {
    "/": {
      "get": {
        "summary": "Human landing HTML",
        "description": "Increments views once on HTML 200. Health-check user-agents are excluded."
      }
    },
    "/download": {
      "get": {
        "summary": "Counted release tarball",
        "description": "Increments downloads once after gzip verify on 200. Failed responses do not increment."
      }
    },
    "/v1/health": {
      "get": {
        "summary": "Health JSON. Does not increment counters."
      }
    },
    "/v1/stats": {
      "get": {
        "summary": "Honest KV views/downloads + human/bot fleet split. Does not increment counters."
      }
    },
    "/stats": {
      "get": {
        "summary": "Alias of /v1/stats."
      }
    },
    "/count": {
      "get": {
        "summary": "Alias of /v1/stats (fleet download-tracker shape)."
      }
    },
    "/cite.json": {
      "get": {
        "summary": "Public cite. Does not increment counters."
      }
    },
    "/llms.txt": {
      "get": {
        "summary": "LLM-oriented product text."
      }
    },
    "/ai.txt": {
      "get": {
        "summary": "Honest trades product lead for agents and crawlers."
      }
    },
    "/humans.txt": {
      "get": {
        "summary": "Short human pointer to / and /download."
      }
    },
    "/robots.txt": {
      "get": {
        "summary": "Open crawl Allow list + Content-Signal."
      }
    },
    "/sitemap.xml": {
      "get": {
        "summary": "Absolute URLs for this Worker."
      }
    },
    "/person.jsonld": {
      "get": {
        "summary": "Person JSON-LD. Machine 15:20 disambiguation. No HTML chrome."
      }
    },
    "/graph.jsonld": {
      "get": {
        "summary": "SoftwareApplication + WebSite + Person JSON-LD."
      }
    },
    "/.well-known/mcp.json": {
      "get": {
        "summary": "MCP discovery for POST /mcp + OpenAPI."
      }
    },
    "/v1/skill": {
      "get": {
        "summary": "Agent skill markdown."
      }
    },
    "/openapi.json": {
      "get": {
        "summary": "This OpenAPI document."
      }
    },
    "/mcp": {
      "get": {
        "summary": "MCP transport note. Use POST for JSON-RPC."
      },
      "post": {
        "summary": "Read-only MCP JSON-RPC (initialize, tools/list, tools/call)",
        "description": "Tools: health, stats, cite, skill. Public, no OAuth. Does not increment counters."
      }
    }
  }
}
