-
Notifications
You must be signed in to change notification settings - Fork 0
Replace starter template with Genesis Conductor MCP server docs #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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. | ||
|
|
||
| <Card | ||
| title="Start here" | ||
| icon="rocket" | ||
| href="/quickstart" | ||
| horizontal | ||
| > | ||
| Follow our three step quickstart guide. | ||
| </Card> | ||
|
|
||
| ## 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. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The rewritten landing page and all three new MCP pages consistently describe the product in third person rather than addressing the reader, and sentences such as this one combine routing and publication into one long thought. Rewrite the new content in concise, active, second-person sentences to follow the repository's documentation conventions. AGENTS.md reference: AGENTS.md:L24-L25 Useful? React with 👍 / 👎. |
||
|
|
||
| <Columns cols={2}> | ||
| <Card | ||
| title="Edit locally" | ||
| icon="pen-to-square" | ||
| href="/development" | ||
| > | ||
| Edit your docs locally and preview them in real time. | ||
| <Card title="Architecture" icon="sitemap" href="/mcp-server/overview"> | ||
| Transport, tool surface, and the routing classifier. | ||
| </Card> | ||
| <Card | ||
| title="Customize your site" | ||
| icon="palette" | ||
| href="/essentials/settings" | ||
| > | ||
| Customize the design and colors of your site to match your brand. | ||
|
|
||
| <Card title="Skill registry" icon="box-archive" href="/mcp-server/skill-registry"> | ||
| Manifest schema, entry shapes, and digest pinning. | ||
| </Card> | ||
| <Card | ||
| title="Set up navigation" | ||
| icon="map" | ||
| href="/essentials/navigation" | ||
| > | ||
| Organize your docs to help users find what they need and succeed with your product. | ||
|
|
||
| <Card title="Edge topology" icon="cloud" href="/mcp-server/deployment"> | ||
| Cloudflare bindings backing the server. | ||
| </Card> | ||
| <Card | ||
| title="API documentation" | ||
| icon="terminal" | ||
| href="/api-reference/introduction" | ||
| > | ||
| Auto-generate API documentation from OpenAPI specifications. | ||
|
|
||
| <Card title="Development" icon="pen-to-square" href="/development"> | ||
| Preview docs changes locally. | ||
| </Card> | ||
| </Columns> | ||
|
|
||
| ## Create beautiful pages | ||
| ## Current state | ||
|
|
||
| <Info> | ||
| This section tracks what is provisioned versus what is specified. Anything not listed as provisioned does not exist yet. | ||
| </Info> | ||
|
|
||
| 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: | ||
|
|
||
| <Columns cols={2}> | ||
| <Card | ||
| title="Write with MDX" | ||
| icon="pen-fancy" | ||
| href="/essentials/markdown" | ||
| > | ||
| Use MDX to style your docs pages. | ||
| </Card> | ||
| <Card | ||
| title="Code samples" | ||
| icon="code" | ||
| href="/essentials/code" | ||
| > | ||
| Add sample code to demonstrate how to use your product. | ||
| </Card> | ||
| <Card | ||
| title="Images" | ||
| icon="image" | ||
| href="/essentials/images" | ||
| > | ||
| Display images and other media. | ||
| <Card title="mcp-builder" icon="plug" horizontal> | ||
| Building and reviewing MCP servers. | ||
| </Card> | ||
| <Card | ||
| title="Reusable snippets" | ||
| icon="recycle" | ||
| href="/essentials/reusable-snippets" | ||
| > | ||
| Write once and reuse across your docs. | ||
|
|
||
| <Card title="skill-creator" icon="wand-magic-sparkles" horizontal> | ||
| Authoring, editing, and evaluating skills. | ||
| </Card> | ||
| </Columns> | ||
|
|
||
| ## Need inspiration? | ||
| <Card title="web-artifacts-builder" icon="browser" horizontal> | ||
| Multi-component web artifacts. | ||
| </Card> | ||
|
|
||
| <Card | ||
| title="See complete examples" | ||
| icon="stars" | ||
| href="https://mintlify.com/customers" | ||
| > | ||
| Browse our showcase of exceptional documentation sites. | ||
| </Card> | ||
| <Card title="algorithmic-art" icon="shapes" horizontal> | ||
| Seeded generative and parametric art. | ||
| </Card> | ||
| </Columns> | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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` | | ||
|
|
||
| <Warning> | ||
| 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. | ||
| </Warning> | ||
|
|
||
| ## 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. | ||
|
igor-holt marked this conversation as resolved.
|
||
|
|
||
| | 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. | ||
|
|
||
| <Note> | ||
| 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. | ||
| </Note> | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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. | ||
|
|
||
| <Warning> | ||
| 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. | ||
| </Warning> | ||
|
|
||
| ## 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. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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:<name>` | | ||
|
|
||
| The full manifest lives under `manifest:latest`. Individual entries are denormalized to `skill:<name>` 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. | ||
|
|
||
| <CodeGroup> | ||
|
|
||
| ```json Direct | ||
| { | ||
| "url": "skill://<name>/SKILL.md", | ||
| "digest": "sha256:<hex>", | ||
| "frontmatter": { | ||
| "name": "<name>", | ||
| "description": "<trigger description>" | ||
| } | ||
| } | ||
| ``` | ||
|
|
||
| ```json Archive | ||
| { | ||
| "frontmatter": { | ||
| "name": "<name>", | ||
| "description": "<trigger description>" | ||
| }, | ||
| "archives": [ | ||
| { | ||
| "url": "skill://<name>.tar.gz", | ||
| "mimeType": "application/gzip", | ||
| "digest": "sha256:<hex>" | ||
| } | ||
| ] | ||
| } | ||
| ``` | ||
|
|
||
| </CodeGroup> | ||
|
|
||
| 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. | ||
|
|
||
| <Note> | ||
| 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. | ||
| </Note> | ||
|
|
||
| ## 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. |
Uh oh!
There was an error while loading. Please reload this page.