{
  "name": "Setoku",
  "description": "Skills for connecting an AI agent to one company's data and keeping the knowledge behind it correct. They ship in the Setoku Claude Code plugin and run against a Setoku box.",
  "version": "0.21.0",
  "license": "Apache-2.0",
  "homepage": "https://setoku.com",
  "documentation": "https://setoku.com/docs",
  "when_to_use": {
    "summary": "Reach for Setoku when the answer lives in a specific company's own data and depends on that company's definitions.",
    "use_when": [
      "A question is about one company's own operations — revenue, churn, pipeline, usage, spend, deploys, support load — and the data sits in their database, Slack, GitHub, email, or bank.",
      "You need the company's definition of a term before you can answer: what counts as an active customer, which refunds are excluded, which table is the one people actually trust.",
      "A naive query would be wrong in a way only an insider knows (soft-deleted rows, a test tenant, a migration that split a table) and you want that caveat before you run SQL.",
      "Someone wants a live, shareable view of that data — a dashboard or small app on a link their non-technical teammates can open, refreshing against real data rather than a pasted screenshot.",
      "You want your answer, and the reasoning behind it, to be auditable later: every query and every knowledge change is logged on the owner's own box."
    ],
    "do_not_use_when": [
      "The question is general knowledge, or about public data — Setoku only knows the data its operator connected.",
      "You need to write to the business database. Every data path is read-only, by database role; there is no write tool and no escape hatch.",
      "You are looking for a hosted, multi-tenant API to sign up for. There is none: Setoku is single-tenant and self-hosted, and the endpoint you call is the operator's own box.",
      "You want a model to run server-side. Setoku runs no inference; your own agent does the thinking."
    ],
    "how_to_call": [
      "Connect to the box's MCP endpoint (Streamable HTTP) at `https://<their-box>/mcp` with the person's bearer token, or paste `https://<their-box>/mcp/<token>` into a connector dialog that has no header field.",
      "Call find_context FIRST, every time. It returns the curated notes for the question, including which tables to trust and which to avoid.",
      "Then get_schema, then run_query. Reading context before querying is the difference between a right answer and a plausible one.",
      "Found something the context got wrong? Call report_correction. It lands as a proposal for a human to accept — an agent session can never commit knowledge by itself."
    ]
  },
  "install": [
    "/plugin marketplace add Hedgy-Labs/setoku",
    "/plugin install setoku@setoku"
  ],
  "skills": [
    {
      "name": "compact-knowledge",
      "id": "setoku:compact-knowledge",
      "description": "Periodically tidy the Setoku knowledge store in a curator session — merge duplicate facts, resolve contradictions, tighten verbose docs, and flag stale knowledge. Use when the user asks to compact / clean up / dedupe / tidy knowledge, or when /admin/knowledge shows merge / contradiction / verbose flags.",
      "command": "/setoku:compact-knowledge",
      "source": "https://github.com/Hedgy-Labs/setoku/blob/main/plugin/skills/compact-knowledge/SKILL.md"
    },
    {
      "name": "connect",
      "id": "setoku:connect",
      "description": "Connect a data source to Setoku end-to-end — ensure a box exists, wire the source up (read-only), verify the agent actually understands the data, and write what it learns back as knowledge. Use when the user says \"connect <source>\", \"hook up <source>\", \"add a data source\", \"set up Setoku\", or \"/setoku:connect\".",
      "command": "/setoku:connect",
      "source": "https://github.com/Hedgy-Labs/setoku/blob/main/plugin/skills/connect/SKILL.md"
    },
    {
      "name": "curate",
      "id": "setoku:curate",
      "description": "Review pending Setoku knowledge candidates and promote, edit, or reject them — conversationally, no git or dev skills required. Use when the user asks to curate/review setoku knowledge, or when list_entities reports pending corrections.",
      "command": "/setoku:curate",
      "source": "https://github.com/Hedgy-Labs/setoku/blob/main/plugin/skills/curate/SKILL.md"
    },
    {
      "name": "eval",
      "id": "setoku:eval",
      "description": "Run the Setoku golden-question eval for this repository and report a scorecard. Use when the user asks to eval/test setoku answer quality, or after significant context-artifact changes.",
      "command": "/setoku:eval",
      "source": "https://github.com/Hedgy-Labs/setoku/blob/main/plugin/skills/eval/SKILL.md"
    },
    {
      "name": "generate",
      "id": "setoku:generate",
      "description": "Generate or refresh Setoku's business-context knowledge by reading this repository's code — ORM schemas, business logic, migrations, existing docs — and saving it to the knowledge store (commits directly on a curator connector, or proposes for human approval on the everyday analyst connector — no SSH needed). Use when the user asks to generate/update/refresh business context, when setoku tools report an empty knowledge store, or when schema drift is detected.",
      "command": "/setoku:generate",
      "source": "https://github.com/Hedgy-Labs/setoku/blob/main/plugin/skills/generate/SKILL.md"
    },
    {
      "name": "onboard",
      "id": "setoku:onboard",
      "description": "First-run setup for Setoku in a repo — connect the business database, generate context from the code, and answer a first question end-to-end. Use when the user says \"set up setoku\" or \"onboard\", or when setoku tools report missing config. (Thin wrapper over /setoku:connect.)",
      "command": "/setoku:onboard",
      "source": "https://github.com/Hedgy-Labs/setoku/blob/main/plugin/skills/onboard/SKILL.md"
    }
  ],
  "note": "Generated by scripts/build-site-api.ts from the Setoku source tree — do not edit by hand."
}
