bouch-registry
Provides read-only access to files in GitHub repositories that are declared as entrypoints, resolving each record's source.ref to a commit and fetching content by commit id with provenance and integrity metadata.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bouch-registrysearch for mcp-server capabilities in the automation domain"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bouch-registry
The Bouch capability registry: one remote place for an agent to discover what Bouch already knows and has built before treating a domain or environment as capability-empty.
It is a metaregistry. Each record identifies a capability, names its versioned source repository, points at the native manifest where an open specification exists, and lists the entrypoint documents to read next. It is not a package manager, installer, orchestrator or copy of native manifests, and it holds no live state (versions, tool counts, git or runtime status) — derive those from the systems themselves.
Service identity: https://registry.bouch.dev/ — /health, /registry.json
and MCP at /mcp. https://bouch-registry.fly.dev/ serves the same app and is
the origin the custom domain points at.
Data
registry/ is the only dataset. The MCP tools, MCP resources,
/registry.json and bouch-registry export are all rendered from it.
registry/
├── domains.json # closed domain vocabulary with routing summaries
└── entries/<name>.json # one record per capability, id dev.bouch/<name>The model (bouch_registry/model.py) is the schema. Records reject unknown
fields, so manifest content such as version or keywords cannot creep in.
field | meaning |
|
|
| one of the eight types below |
| summary says when to consult this, not what a manifest already says |
| lowercase slugs; domains must be declared in |
|
|
|
|
| only for native types: |
|
|
| other registry ids |
Types
type | native spec | manifest |
| Agent Plugins 1.0 |
|
| Agent Skills |
|
| MCP Registry |
|
| A2A Agent Card |
|
| none (Bouch-specific) | — |
| none (Bouch-specific) | — |
| none (Bouch-specific) | — |
| none (Bouch-specific) | — |
agent-skill means an Agent Skills SKILL.md. It is unrelated to an A2A
AgentSkill, which is a capability tag inside an Agent Card.
The type set and the native/Bouch-specific split come from the
agent-enumeration-lab finding bouch-registry-standards-fit.
Adding or changing a record
Edit
registry/entries/<name>.json. Point only at files committed in the source repository (atsource.refif set). Never use local checkout paths.uv run bouch-registry validateCheck the pointers against real checkouts (paths are passed on the command line, never stored):
uv run bouch-registry verify-sources --checkout <repository>=<path> ...and, for published sources, against the remote exactly as MCP clients read them:uv run bouch-registry verify-sources --remoteuv run pytest
Related MCP server: Lab Registry Server
MCP surface
Tools (read-only, structured output):
search_capabilities(query, domain?, type?, limit?)— deterministic weighted keyword search with IDF; empty query browses.get_capability(id)— the full record.list_domains()— domains, routing summaries and member ids.read_capability_entrypoint(capability_id, entrypoint)— one declared entrypoint read from the canonical remote source; returnscontent,mime_type,repository,ref,commit,pathandgit_blob. The tool counterpart ofbouch://source/...for tool-only clients (e.g. ChatGPT).
Resources:
bouch://registry— the whole registry (identical to/registry.json)bouch://domains/{domain}— a domain with its full recordsbouch://capabilities/dev.bouch/{name}— one recordbouch://source/dev.bouch/{name}/{path*}— one declared entrypoint (or repo-relative native manifest) read from the record's canonical remote source, e.g.bouch://source/dev.bouch/audio/skills/electronic-production/SKILL.md
Reading entrypoints remotely
A consumer without the source checked out can read what a record declares,
one document at a time: resource-capable clients through bouch://source/...,
tool-only clients through read_capability_entrypoint. Both call the same
resolver (bouch_registry/remote.py), so they share one allowlist, ref
resolution, integrity report and failure behaviour. The registry stores no
content: each read follows the pointer at request time.
Only declared paths. Entrypoint paths and a repo-relative
native.manifest; anything else is refused before any network call. To make a document reachable (for example a reference a Skill routes to), declare it as an entrypoint.verify-sourcesenforces this for records with a published source: every repo-relative file link in a declared Markdown entrypoint must itself be declared (external URLs, anchors, code and directory links are exempt).Pinned to the source.
source.refis resolved to a commit from the repository's own git ref advertisement (annotated tags are peeled); a record without a ref resolves the remoteHEAD. The file is then fetched by commit id. Onlygithub.comsources are supported.Checkable. Provenance —
repository,ref,commit,pathandgit_blob— is in the resource content's_metaand in the tool's structured output;git_blobequalsgit rev-parse <commit>:<path>in any clone.No fallback. An unpublished source (
source.urlnull), a missing ref, a path absent at that commit, a non-UTF-8 file or one over 512 KiB is a resource error naming the cause. Nothing falls back to a local file, another ref or a cached copy.
HTTP routes: /mcp (streamable HTTP, stateless, JSON responses, with the
fleet's claude.ai GET/DELETE guard), /registry.json, /health.
Commands
uv sync --group dev
uv run bouch-registry serve --port 8080 # MCP + /registry.json
uv run bouch-registry validate
uv run bouch-registry export registry.json # static copy, e.g. for static hosting
uv run pytest # offline: model, search, portability, CLI, MCP in-memory + HTTP
scripts/inspector-smoke.sh http://127.0.0.1:8080/mcp # independent client (MCP Inspector CLI)
scripts/remote-acceptance.sh https://registry.bouch.dev # the deployed boundaryDeployment
One Fly.io app, bouch-registry in lhr, running the container in
Dockerfile: the package is installed, registry/ is copied beside it, and
the service is started with --data /app/registry so a running container
cannot serve any other copy of the dataset. /health reports the capability
and domain counts it loaded, so a stale or truncated deployment is visible
without opening the data.
Deploys run in GitHub Actions (.github/workflows/deploy.yml): tests and
validate, then flyctl deploy. Publishing a GitHub release deploys that
release; workflow_dispatch redeploys main. Do not deploy from a laptop —
the live service should always correspond to a commit on main. There is no
PyPI package: this is a service over a dataset, not a library.
registry.bouch.dev is a DNS-only (unproxied) CNAME in Cloudflare to the
app's Fly hostname, with the certificate issued by Fly. Proxying it would
break both certificate validation and the held-open GET /mcp event stream
that claude.ai's connector opens.
The registry holds no record of itself: a record's job is to point at a
versioned source and its entrypoints, and a deployment URL is live state,
which records do not carry. bouch-registry's own source is this repository.
This server cannot be deployed
Maintenance
Related MCP Connectors
Burs-IA public MCP entry point for capability discovery, bounded routing and interoperability.
Agent-native registry to discover APIs, MCP servers and CLIs, with live health checks.
Experimental MCP for discovering and purchasing explicitly published, versioned Agent knowledge.
Public MCP for agent verification, work discovery and governed interoperability.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables semantic and full-text search over the official Model Context Protocol registry to discover MCP servers for integration.10Apache 2.0
- FlicenseAqualityCmaintenanceEnables MCP clients to discover and fetch skills, agents, commands, and hooks from the Gen-e2 Lab Registry, and check local inventory compliance against the registry.15-
- AlicenseNot gradedqualityDmaintenanceDiscovers and manages portable agent capabilities (skills and MCP servers) from configurable collections, providing search, inspection, and local installation via CLI and MCP tools.1MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to register and discover marketplace services, search the web, retrieve weather and trends, contact the Bagira assistant, and access knowledge vault digests over MCP.-