From 2d9574461e481b283180f811c6652969740ae805 Mon Sep 17 00:00:00 2001 From: Igor Holt Date: Thu, 30 Jul 2026 20:16:57 -0400 Subject: [PATCH] Updated mintlify pages - Updated index.mdx - Created mcp-server/overview.mdx - Created mcp-server/skill-registry.mdx - Created mcp-server/deployment.mdx - Deleted api-reference/endpoint/create.mdx - Deleted api-reference/endpoint/delete.mdx - Deleted api-reference/endpoint/get.mdx - Deleted api-reference/endpoint/webhook.mdx - Updated docs.json Mintlify-Source: dashboard-editor --- api-reference/endpoint/create.mdx | 4 - api-reference/endpoint/delete.mdx | 4 - api-reference/endpoint/get.mdx | 4 - api-reference/endpoint/webhook.mdx | 4 - docs.json | 21 ++--- index.mdx | 122 ++++++++++------------------- mcp-server/deployment.mdx | 70 +++++++++++++++++ mcp-server/overview.mdx | 34 ++++++++ mcp-server/skill-registry.mdx | 64 +++++++++++++++ 9 files changed, 222 insertions(+), 105 deletions(-) delete mode 100644 api-reference/endpoint/create.mdx delete mode 100644 api-reference/endpoint/delete.mdx delete mode 100644 api-reference/endpoint/get.mdx delete mode 100644 api-reference/endpoint/webhook.mdx create mode 100644 mcp-server/deployment.mdx create mode 100644 mcp-server/overview.mdx create mode 100644 mcp-server/skill-registry.mdx diff --git a/api-reference/endpoint/create.mdx b/api-reference/endpoint/create.mdx deleted file mode 100644 index 5689f1b..0000000 --- a/api-reference/endpoint/create.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Create Plant' -openapi: 'POST /plants' ---- diff --git a/api-reference/endpoint/delete.mdx b/api-reference/endpoint/delete.mdx deleted file mode 100644 index 657dfc8..0000000 --- a/api-reference/endpoint/delete.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Delete Plant' -openapi: 'DELETE /plants/{id}' ---- diff --git a/api-reference/endpoint/get.mdx b/api-reference/endpoint/get.mdx deleted file mode 100644 index 56aa09e..0000000 --- a/api-reference/endpoint/get.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Get Plants' -openapi: 'GET /plants' ---- diff --git a/api-reference/endpoint/webhook.mdx b/api-reference/endpoint/webhook.mdx deleted file mode 100644 index 3291340..0000000 --- a/api-reference/endpoint/webhook.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'New Plant' -openapi: 'WEBHOOK /plant/webhook' ---- diff --git a/docs.json b/docs.json index 46b44cc..4b69920 100644 --- a/docs.json +++ b/docs.json @@ -21,6 +21,15 @@ "development" ] }, + { + "group": "MCP Server", + "icon": "plug", + "pages": [ + "mcp-server/overview", + "mcp-server/skill-registry", + "mcp-server/deployment" + ] + }, { "group": "Customization", "pages": [ @@ -55,15 +64,6 @@ "pages": [ "api-reference/introduction" ] - }, - { - "group": "Endpoint examples", - "pages": [ - "api-reference/endpoint/get", - "api-reference/endpoint/create", - "api-reference/endpoint/delete", - "api-reference/endpoint/webhook" - ] } ] } @@ -118,5 +118,6 @@ "github": "https://github.com/mintlify", "linkedin": "https://linkedin.com/company/mintlify" } - } + }, + "description": "Genesis Conductor — MCP server, skill registry, and Cloudflare edge topology." } diff --git a/index.mdx b/index.mdx index 15c23fb..a74d80c 100644 --- a/index.mdx +++ b/index.mdx @@ -1,97 +1,61 @@ --- -title: "Introduction" -description: "Welcome to the new home for your documentation" +title: "Genesis Conductor" +description: "MCP server, skill registry, and edge topology" +sidebarTitle: "Overview" --- -## Setting up - -Get your documentation site up and running in minutes. - - - Follow our three step quickstart guide. - - -## Make it yours - -Design a docs site that looks great and empowers your users. +The Genesis Conductor MCP server is a TypeScript Model Context Protocol server that routes agent requests across four skill domains using a HAVIS Pareto classifier, and publishes those skills through a marketplace registry manifest in the `kovach-*` namespace. - - Edit your docs locally and preview them in real time. + + Transport, tool surface, and the routing classifier. - - Customize the design and colors of your site to match your brand. + + + Manifest schema, entry shapes, and digest pinning. - - Organize your docs to help users find what they need and succeed with your product. + + + Cloudflare bindings backing the server. - - Auto-generate API documentation from OpenAPI specifications. + + + Preview docs changes locally. -## Create beautiful pages +## Current state + + + This section tracks what is provisioned versus what is specified. Anything not listed as provisioned does not exist yet. + -Everything you need to create world-class documentation. +| Component | Status | +| --- | --- | +| MCP server (TypeScript, stateless streamable HTTP) | Built, compiled, smoke-tested | +| Skill registry KV store | Provisioned — `kovach-skill-registry` | +| Consent and trace database | Provisioned — D1 `xv-trace-consent` | +| Edge worker deployment | Not deployed | +| Registry manifest population | Empty | + +## Skill domains + +The classifier routes each inbound request to one of four domains: - - Use MDX to style your docs pages. - - - Add sample code to demonstrate how to use your product. - - - Display images and other media. + + Building and reviewing MCP servers. - - Write once and reuse across your docs. + + + Authoring, editing, and evaluating skills. - -## Need inspiration? + + Multi-component web artifacts. + - - Browse our showcase of exceptional documentation sites. - + + Seeded generative and parametric art. + + \ No newline at end of file diff --git a/mcp-server/deployment.mdx b/mcp-server/deployment.mdx new file mode 100644 index 0000000..73c8022 --- /dev/null +++ b/mcp-server/deployment.mdx @@ -0,0 +1,70 @@ +--- +title: "Edge topology" +description: "Cloudflare bindings, provisioned state, and deployment gaps" +icon: "cloud" +--- + +The server targets Cloudflare Workers. Statelessness removes the need for a Durable Object, so the substrate is a Worker plus two storage bindings. + +## Provisioned resources + +| Binding | Service | Resource | Identifier | +| --- | --- | --- | --- | +| `SKILL_REGISTRY` | Workers KV | `kovach-skill-registry` | `d9628656cc224976add3dcbf81419c9c` | +| `TRACE_CONSENT` | D1 | `xv-trace-consent` | `ccb47e26-ffbd-41db-90a7-9a31af0e7534` | + + + R2 is not enabled on this account. Any pathway that assumes object storage — archived skill bundles, large artifacts — is blocked until R2 is enabled from the dashboard. Until then archive entries must resolve to an external origin. + + +## Not yet deployed + +The Worker itself does not exist. The account holds one script, `summer-flower-b921`, which is an unmodified Workers AI starter template and is unrelated to this server. The registry KV namespace is provisioned but empty. + +## Configuration + +```jsonc wrangler.jsonc +{ + "name": "gc-mcp-server", + "main": "src/index.ts", + "compatibility_date": "2026-07-30", + "compatibility_flags": ["nodejs_compat"], + "observability": { + "enabled": true, + "head_sampling_rate": 1 + }, + "kv_namespaces": [ + { + "binding": "SKILL_REGISTRY", + "id": "d9628656cc224976add3dcbf81419c9c" + } + ], + "d1_databases": [ + { + "binding": "TRACE_CONSENT", + "database_name": "xv-trace-consent", + "database_id": "ccb47e26-ffbd-41db-90a7-9a31af0e7534" + } + ] +} +``` + +Binding identifiers are not credentials. Secrets belong in `wrangler secret put`, never in configuration or source. + +## Consent and trace schema + +`xv-trace-consent` holds three tables. + +| Table | Purpose | +| --- | --- | +| `subjects` | Subject identity and external reference | +| `consent_grants` | Scope, legal basis, grant and revocation timestamps | +| `trace_events` | Actor, action, artifact digest, and the grant relied upon | + +`trace_events.artifact_digest` is the join back to the registry: an event records which pinned artifact was in play, so a trace resolves to a specific version rather than a name. + +A grant is active when `revoked_at IS NULL`; a partial index covers that predicate. Revocation is recorded by setting `revoked_at`, never by deleting the row — an audit trail that can be erased is not an audit trail. + + + This schema was derived from the database name and the surrounding subject-sovereignty requirement, not recovered from a prior specification. Treat it as a starting shape and reconcile it against the canonical spec before writing production data. + \ No newline at end of file diff --git a/mcp-server/overview.mdx b/mcp-server/overview.mdx new file mode 100644 index 0000000..3cdbd07 --- /dev/null +++ b/mcp-server/overview.mdx @@ -0,0 +1,34 @@ +--- +title: "Architecture" +description: "Transport, tool surface, and the HAVIS Pareto routing classifier" +icon: "sitemap" +--- + +The server is a TypeScript MCP implementation. It exposes seven tools over a stateless streamable HTTP transport and dispatches each call to one of four skill domains. + +## Transport + +Stateless streamable HTTP. No session affinity is held between requests, so any instance can serve any call and horizontal scaling requires no coordination layer. This is the property that makes the server deployable to an edge runtime without a Durable Object. + + + Statelessness is a hard constraint, not a default. Any tool that accumulates per-client state across calls breaks the deployment model and must externalize that state to KV or D1. + + +## Skill domains + +| Domain | Scope | +| --- | --- | +| `mcp-builder` | Building and reviewing MCP servers | +| `skill-creator` | Authoring, editing, and evaluating skills | +| `web-artifacts-builder` | Multi-component web artifacts | +| `algorithmic-art` | Seeded generative and parametric art | + +## Routing + +Inbound requests are classified before dispatch. The classifier applies a Pareto gate: a candidate route is admissible only if it improves at least one axis — correctness, latency, cost, or risk — without degrading the others. Where several routes remain admissible, they are ranked and the top-ranked route is taken rather than presented as a choice. + +When no route clears the gate, the classifier fails closed and returns the blocking condition instead of dispatching to a best-guess domain. + +## Evaluation + +The project ships an eval set alongside the scaffold. Routing changes are validated against it before promotion — the classifier is the component most likely to regress silently, since a wrong route still returns a plausible response. \ No newline at end of file diff --git a/mcp-server/skill-registry.mdx b/mcp-server/skill-registry.mdx new file mode 100644 index 0000000..8db3f66 --- /dev/null +++ b/mcp-server/skill-registry.mdx @@ -0,0 +1,64 @@ +--- +title: "Skill registry" +description: "Manifest schema, entry shapes, and digest pinning" +icon: "box-archive" +--- + +The registry is the marketplace manifest for the `kovach-*` namespace. It is stored in Workers KV and read by the router at dispatch time. + +## Storage + +| Binding | Namespace | Key layout | +| --- | --- | --- | +| `SKILL_REGISTRY` | `kovach-skill-registry` | `manifest:latest`, `skill:` | + +The full manifest lives under `manifest:latest`. Individual entries are denormalized to `skill:` so a route lookup is a single read rather than a parse of the whole document. + +## Entry shapes + +A manifest entry takes one of two shapes. A resolver must handle both — assuming a single shape is the most common integration failure. + + + +```json Direct +{ + "url": "skill:///SKILL.md", + "digest": "sha256:", + "frontmatter": { + "name": "", + "description": "" + } +} +``` + +```json Archive +{ + "frontmatter": { + "name": "", + "description": "" + }, + "archives": [ + { + "url": "skill://.tar.gz", + "mimeType": "application/gzip", + "digest": "sha256:" + } + ] +} +``` + + + +The direct shape carries `url` and `digest` at the top level and points at a single `SKILL.md`. The archive shape omits both, and instead carries an `archives` array whose members hold their own `url`, `mimeType`, and `digest`. Optional keys — `license`, `metadata`, `compatibility` — may appear inside `frontmatter` on either shape. + +## Digest pinning + +Every retrievable object carries a `sha256:` digest. Resolution verifies the digest before the content is admitted; a mismatch is a hard failure, not a warning. This is what makes a registry entry a claim that resolves to a specific artifact rather than to a mutable name. + + + A digest is only load-bearing if it is checked. A resolver that fetches by `url` and ignores `digest` provides no integrity guarantee over a plain URL fetch. + + +## Description field + +The `description` in `frontmatter` is not prose — it is the trigger surface the classifier matches against. It should enumerate the phrasings and conditions that should activate the skill, and state what the skill does not cover. Descriptions written as summaries rather than triggers route poorly. \ No newline at end of file