Skip to content

Registry

The registry is the single list of published FreeDocStore knowledge bases. It lives at site/registry.json in the platform repo and is served at:

https://freedocstore.online/registry.json

The product site renders it, the MCP server reads it (list_knowledge_bases, knowledge_base_info), and MCP tools accept a registry id anywhere they accept a repo name.

Shape

{
  "knowledge_bases": [
    {
      "id": "true-non-profit",
      "title": "True Non-Profit",
      "description": "A first-principles knowledge base about non-profits...",
      "engine": "zensical",
      "source": {
        "repo": "FreeDocStore/true-non-profit",
        "branch": "main",
        "docs_dir": "docs",
        "config": "zensical.toml"
      },
      "cloudflare": {
        "pages_project": "true-non-profit",
        "production_url": "https://true-non-profit.pages.dev/",
        "custom_domains": []
      },
      "status": "published"
    }
  ]
}

Fields

Field Meaning
id KB slug. Doubles as the Cloudflare Pages project name and default subdomain.
title, description Display metadata for the product site and agents.
engine Always "zensical" for now.
source.repo GitHub repo as owner/name.
source.branch Publishing branch, default main.
source.docs_dir Markdown source directory, default docs.
source.config Zensical config path, default zensical.toml.
cloudflare.pages_project Cloudflare Pages project name.
cloudflare.production_url Canonical production URL.
cloudflare.custom_domains Custom domains attached to the Pages project.
status Lifecycle marker, e.g. draft-0.1, published.

Invariants

  • A repo without a registry entry is drift: it may build and deploy, but the platform, site, and agents will not see it.
  • A registry entry without a working Pages deployment is a broken listing — deploy_status on the repo shows why.
  • The platform repo holds this metadata only; it never embeds KB content.