From 8664ea5af7a7a4446506d7b2ce12ba6c05e989e3 Mon Sep 17 00:00:00 2001 From: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Date: Tue, 26 May 2026 14:23:56 +0100 Subject: [PATCH] feat(catalog): configurable cartridges root + canonical schema + category field sweep MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three changes that together prepare boj-server to consume cartridges from the new hyperpolymath/boj-server-cartridges repository on demand instead of bundling them in-tree: 1. **Configurable cartridges root** — `elixir/lib/boj_rest/application.ex` gains a fallback chain for the catalog root: Application env (:boj_rest, :cartridges_root) → BOJ_CARTRIDGES_PATH environment variable → default "./cartridges" (preserves historical bundled behaviour) Operators wanting on-demand fetch from boj-server-cartridges set BOJ_CARTRIDGES_PATH to their local cache (e.g. "~/.boj/cartridges") and arrange for tray to populate that path. No runtime-behaviour change unless the env var is set. 2. **Canonical schema mirror** — `schemas/cartridge-v1.json` is replaced with a vendored copy of the canonical schema filed as standards#200 (which expanded the original `-mcp`-only `name` regex to admit the full BoJ server-role taxonomy: mcp/lsp/dap/bsp/debug/format/lint/ build/nesy/agentic/fleet, and added `category`, `states`, `source` fields). `schemas/SCHEMA-MIRROR.md` documents the mirror discipline and the pending SHA-pinning ceremony (executes once standards#200 merges). 3. **`category` field sweep on 125 cartridge manifests** — the new schema makes `category` required. A mechanical sweep assigns `"category": "template"` (1: gossamer-mcp), `"category": "cross-cutting"` (11: agent-mcp, claude-agents-power-mcp, claude-ai-mcp, local-coord-mcp, model-router-mcp, nesy-mcp, ml-mcp, fleet-mcp, boj-health, dap-mcp, bsp-mcp), and `"category": "domain"` (113) — matching the taxonomy ratified in hyperpolymath/boj-server-cartridges ADR-001. The cross-cutting list here is the source of truth that the migrate_cartridges.py script in boj-server-cartridges already used for placement; keeping the two maps in sync is a manual-discipline obligation flagged in both repos' CHANGELOGs. Deferred to follow-up PRs (separate issues to file): * tray → boj-server-cartridges on-demand fetch wiring (tray already has the cartridge-source subscription concept with GitHub URL + download timeout in tray/src/main.rs and server.rs; needs default registry hard-coded or configured). * BojRest.Catalog reload-without-restart (currently "fleet change requires a restart" per the catalog's own moduledoc). * `boj-server/schemas/cartridge-v1.json` → strict SHA-pin to a specific standards commit + sha256 (PINNED-SHA file). Pending standards#200 merging. Closes-after-merge: nothing yet. Unblocks: removal of bundled `cartridges/` directory (separate PR, gated on this one burning in plus the remote-fetch wiring landing). Co-Authored-By: Claude Opus 4.7 (1M context) --- cartridges/007-mcp/cartridge.json | 13 +- .../academic-workflow-mcp/cartridge.json | 1 + cartridges/aerie-mcp/cartridge.json | 1 + cartridges/affinescript-mcp/cartridge.json | 3 +- cartridges/agent-mcp/cartridge.json | 1 + cartridges/airtable-mcp/cartridge.json | 3 +- cartridges/arango-mcp/cartridge.json | 1 + cartridges/aws-mcp/cartridge.json | 1 + cartridges/bofig-mcp/cartridge.json | 1 + cartridges/boj-health/cartridge.json | 17 +- cartridges/browser-mcp/cartridge.json | 1 + cartridges/bsp-mcp/cartridge.json | 1 + cartridges/buildkite-mcp/cartridge.json | 1 + cartridges/burble-admin-mcp/cartridge.json | 1 + cartridges/chromadb-mcp/cartridge.json | 170 +++++++++++++++-- cartridges/circleci-mcp/cartridge.json | 1 + cartridges/civic-connect-mcp/cartridge.json | 1 + .../claude-agents-power-mcp/cartridge.json | 1 + cartridges/claude-ai-mcp/cartridge.json | 3 +- cartridges/clickhouse-mcp/cartridge.json | 1 + cartridges/cloud-mcp/cartridge.json | 1 + cartridges/cloudflare-mcp/cartridge.json | 3 +- cartridges/coderag-mcp/cartridge.json | 1 + cartridges/codeseeker-mcp/cartridge.json | 1 + cartridges/comms-mcp/cartridge.json | 1 + cartridges/conflow-mcp/cartridge.json | 1 + cartridges/container-mcp/cartridge.json | 1 + cartridges/crates-mcp/cartridge.json | 1 + cartridges/dap-mcp/cartridge.json | 1 + cartridges/database-mcp/cartridge.json | 1 + cartridges/digitalocean-mcp/cartridge.json | 1 + cartridges/discord-mcp/cartridge.json | 1 + cartridges/dns-shield-mcp/cartridge.json | 3 +- cartridges/docker-hub-mcp/cartridge.json | 1 + cartridges/duckdb-mcp/cartridge.json | 1 + cartridges/echidna-llm-mcp/cartridge.json | 9 +- cartridges/elevenlabs-mcp/cartridge.json | 109 ++++++++++- cartridges/ephapax-mcp/cartridge.json | 1 + cartridges/feedback-mcp/cartridge.json | 1 + cartridges/ffmpeg-mcp/cartridge.json | 172 +++++++++++++++++- cartridges/fireflag-mcp/cartridge.json | 1 + cartridges/fleet-mcp/cartridge.json | 1 + cartridges/fly-mcp/cartridge.json | 1 + cartridges/game-admin-mcp/cartridge.json | 1 + cartridges/gcp-mcp/cartridge.json | 1 + cartridges/git-mcp/cartridge.json | 1 + cartridges/github-actions-mcp/cartridge.json | 1 + cartridges/github-api-mcp/cartridge.json | 3 +- cartridges/gitlab-api-mcp/cartridge.json | 3 +- cartridges/google-docs-mcp/cartridge.json | 1 + cartridges/google-sheets-mcp/cartridge.json | 1 + cartridges/gossamer-mcp/cartridge.json | 1 + cartridges/grafana-mcp/cartridge.json | 1 + cartridges/hackage-mcp/cartridge.json | 1 + cartridges/hesiod-mcp/cartridge.json | 1 + cartridges/hetzner-mcp/cartridge.json | 1 + cartridges/hex-mcp/cartridge.json | 1 + cartridges/hypatia-mcp/cartridge.json | 1 + cartridges/iac-mcp/cartridge.json | 3 +- cartridges/idaptik-admin-mcp/cartridge.json | 1 + cartridges/jira-mcp/cartridge.json | 1 + cartridges/k8s-mcp/cartridge.json | 1 + cartridges/k9iser-mcp/cartridge.json | 1 + cartridges/kategoria-mcp/cartridge.json | 1 + cartridges/laminar-mcp/cartridge.json | 1 + cartridges/lang-mcp/cartridge.json | 1 + cartridges/linear-mcp/cartridge.json | 1 + cartridges/linode-mcp/cartridge.json | 1 + cartridges/local-coord-mcp/cartridge.json | 27 +-- cartridges/local-memory-mcp/cartridge.json | 1 + cartridges/lsp-mcp/cartridge.json | 5 +- cartridges/matrix-mcp/cartridge.json | 1 + cartridges/ml-mcp/cartridge.json | 1 + cartridges/model-router-mcp/cartridge.json | 1 + cartridges/mongodb-mcp/cartridge.json | 1 + cartridges/neo4j-mcp/cartridge.json | 1 + cartridges/neon-mcp/cartridge.json | 1 + cartridges/nesy-mcp/cartridge.json | 1 + cartridges/notifyhub-mcp/cartridge.json | 1 + cartridges/notion-mcp/cartridge.json | 1 + cartridges/npm-registry-mcp/cartridge.json | 1 + cartridges/observe-mcp/cartridge.json | 3 +- cartridges/obsidian-mcp/cartridge.json | 1 + cartridges/opam-mcp/cartridge.json | 1 + cartridges/opendatamcp/cartridge.json | 1 + cartridges/opsm-mcp/cartridge.json | 1 + .../orchestrator-lsp-mcp/cartridge.json | 30 ++- cartridges/origenemcp/cartridge.json | 1 + cartridges/panic-attack-mcp/cartridge.json | 1 + cartridges/pinecone-mcp/cartridge.json | 168 +++++++++++++++-- cartridges/pmpl-mcp/cartridge.json | 1 + cartridges/postgresql-mcp/cartridge.json | 1 + cartridges/prometheus-mcp/cartridge.json | 1 + cartridges/proof-mcp/cartridge.json | 1 + cartridges/pypi-mcp/cartridge.json | 1 + cartridges/qdrant-mcp/cartridge.json | 163 +++++++++++++++-- cartridges/queues-mcp/cartridge.json | 1 + cartridges/railway-mcp/cartridge.json | 1 + cartridges/redis-mcp/cartridge.json | 1 + cartridges/render-mcp/cartridge.json | 1 + cartridges/replicate-mcp/cartridge.json | 110 ++++++++++- cartridges/reposystem-mcp/cartridge.json | 1 + cartridges/research-mcp/cartridge.json | 1 + cartridges/rokur-mcp/cartridge.json | 3 +- cartridges/sanctify-mcp/cartridge.json | 1 + cartridges/search-mcp/cartridge.json | 66 +++++-- cartridges/secrets-mcp/cartridge.json | 1 + cartridges/sentry-mcp/cartridge.json | 1 + cartridges/slack-mcp/cartridge.json | 1 + cartridges/ssg-mcp/cartridge.json | 1 + cartridges/stapeln-mcp/cartridge.json | 1 + cartridges/supabase-mcp/cartridge.json | 1 + cartridges/telegram-mcp/cartridge.json | 1 + cartridges/todoist-mcp/cartridge.json | 1 + cartridges/toolchain-mcp/cartridge.json | 5 +- cartridges/turso-mcp/cartridge.json | 1 + cartridges/typed-wasm-mcp/cartridge.json | 1 + cartridges/ums-mcp/cartridge.json | 3 +- cartridges/vault-mcp/cartridge.json | 1 + cartridges/verisimdb-mcp/cartridge.json | 1 + cartridges/vext-mcp/cartridge.json | 1 + cartridges/vordr-mcp/cartridge.json | 1 + cartridges/weaviate-mcp/cartridge.json | 160 ++++++++++++++-- cartridges/whisper-mcp/cartridge.json | 112 +++++++++++- cartridges/zotero-mcp/cartridge.json | 1 + elixir/lib/boj_rest/application.ex | 15 +- schemas/SCHEMA-MIRROR.md | 28 +++ schemas/cartridge-v1.json | 104 +++++++---- 128 files changed, 1433 insertions(+), 181 deletions(-) create mode 100644 schemas/SCHEMA-MIRROR.md diff --git a/cartridges/007-mcp/cartridge.json b/cartridges/007-mcp/cartridge.json index 58a42503..92f60dbe 100644 --- a/cartridges/007-mcp/cartridge.json +++ b/cartridges/007-mcp/cartridge.json @@ -33,8 +33,9 @@ "graceful_degrade": true }, "copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) ", - "description": "007 agent meta-language cartridge — exposes the full oo7 CLI surface (parse/run/trace/build/test/lint/verify/contractile verbs/canonical-proof-suite/groove/self-assess) plus on-enter and on-exit lifecycle hooks that register the session as a coord peer, load the 6a2 methodology pack (STATE, META, ECOSYSTEM, AGENTIC, NEUROSYM, PLAYBOOK), and perform drift checks on exit.", + "description": "007 agent meta-language cartridge \u2014 exposes the full oo7 CLI surface (parse/run/trace/build/test/lint/verify/contractile verbs/canonical-proof-suite/groove/self-assess) plus on-enter and on-exit lifecycle hooks that register the session as a coord peer, load the 6a2 methodology pack (STATE, META, ECOSYSTEM, AGENTIC, NEUROSYM, PLAYBOOK), and perform drift checks on exit.", "domain": "dezig", + "category": "domain", "federation": "none", "memory_autolift": { "base_tags": [ @@ -58,7 +59,7 @@ "tier": "Ayo", "tools": [ { - "description": "Lifecycle hook — invoke when entering the 007-lang context. Registers this session as a coord peer (graceful degrade if local-coord-mcp is down), loads the 6a2 methodology pack (STATE, META, ECOSYSTEM, AGENTIC, NEUROSYM, PLAYBOOK), runs the memory auto-lift using repo-derived tags, and returns a structured A2ML payload with peer_id, session_token, methodology digests, and memory hits. Idempotent: calling twice returns the same peer_id/token.", + "description": "Lifecycle hook \u2014 invoke when entering the 007-lang context. Registers this session as a coord peer (graceful degrade if local-coord-mcp is down), loads the 6a2 methodology pack (STATE, META, ECOSYSTEM, AGENTIC, NEUROSYM, PLAYBOOK), runs the memory auto-lift using repo-derived tags, and returns a structured A2ML payload with peer_id, session_token, methodology digests, and memory hits. Idempotent: calling twice returns the same peer_id/token.", "inputSchema": { "properties": { "session_hint": { @@ -72,7 +73,7 @@ "name": "oo7_on_enter" }, { - "description": "Lifecycle hook — invoke before leaving the 007-lang context. Updates STATE.a2ml's last-session fields, runs a drift check (open claims? uncommitted contractile edits? stale 6a2 files?), releases any coord task claims held by this peer, and deregisters from local-coord-mcp. Returns A2ML summary with drift findings. Safe to call even if on_enter was never invoked.", + "description": "Lifecycle hook \u2014 invoke before leaving the 007-lang context. Updates STATE.a2ml's last-session fields, runs a drift check (open claims? uncommitted contractile edits? stale 6a2 files?), releases any coord task claims held by this peer, and deregisters from local-coord-mcp. Returns A2ML summary with drift findings. Safe to call even if on_enter was never invoked.", "inputSchema": { "properties": { "reason": { @@ -556,7 +557,7 @@ "name": "oo7_dust_status_local" }, { - "description": "Revert all source changes to last commit. DESTRUCTIVE — the adapter rejects this tool unless the caller holds a Tier-3 master approval. Wraps `just dust-source-rollback`.", + "description": "Revert all source changes to last commit. DESTRUCTIVE \u2014 the adapter rejects this tool unless the caller holds a Tier-3 master approval. Wraps `just dust-source-rollback`.", "inputSchema": { "properties": {}, "required": [], @@ -565,7 +566,7 @@ "name": "oo7_dust_source_rollback" }, { - "description": "Verify OpenSSF Best Practices prerequisites — fails if required files are missing. Wraps `just verify`.", + "description": "Verify OpenSSF Best Practices prerequisites \u2014 fails if required files are missing. Wraps `just verify`.", "inputSchema": { "properties": {}, "required": [], @@ -574,7 +575,7 @@ "name": "oo7_verify" }, { - "description": "Verify the Harvard architecture invariant — data expressions must not contain control flow. Wraps `just verify-harvard`.", + "description": "Verify the Harvard architecture invariant \u2014 data expressions must not contain control flow. Wraps `just verify-harvard`.", "inputSchema": { "properties": {}, "required": [], diff --git a/cartridges/academic-workflow-mcp/cartridge.json b/cartridges/academic-workflow-mcp/cartridge.json index 85b7672b..82d9bdf0 100644 --- a/cartridges/academic-workflow-mcp/cartridge.json +++ b/cartridges/academic-workflow-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "1.0.0", "description": "Academic workflow \u2014 Zotero integration, citations, paper review", "domain": "Research", + "category": "domain", "tier": "Ayo", "auth": { "method": "none" diff --git a/cartridges/aerie-mcp/cartridge.json b/cartridges/aerie-mcp/cartridge.json index 1687e441..bedc42f4 100644 --- a/cartridges/aerie-mcp/cartridge.json +++ b/cartridges/aerie-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Aerie environment lifecycle manager", "domain": "infrastructure", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/affinescript-mcp/cartridge.json b/cartridges/affinescript-mcp/cartridge.json index b40a02d6..fe4a5d0e 100644 --- a/cartridges/affinescript-mcp/cartridge.json +++ b/cartridges/affinescript-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "AffineScript language cartridge -- type checking, parsing, formatting, linting, compiling, hover/goto-def/completion queries, error explanation, stdlib browsing, and syntax reference for the AffineScript language (substructural type system with affine/linear types, algebraic effects)", "domain": "Languages", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", @@ -195,7 +196,7 @@ }, { "name": "affinescript_hover", - "description": "Return type and symbol information for the symbol at a cursor position in AffineScript source code. Runs the full pipeline (parse → resolve → typecheck) and returns JSON hover info.", + "description": "Return type and symbol information for the symbol at a cursor position in AffineScript source code. Runs the full pipeline (parse \u2192 resolve \u2192 typecheck) and returns JSON hover info.", "inputSchema": { "type": "object", "properties": { diff --git a/cartridges/agent-mcp/cartridge.json b/cartridges/agent-mcp/cartridge.json index a0eb24d9..9f77ed64 100644 --- a/cartridges/agent-mcp/cartridge.json +++ b/cartridges/agent-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "OODA loop agent session enforcer", "domain": "ai", + "category": "cross-cutting", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/airtable-mcp/cartridge.json b/cartridges/airtable-mcp/cartridge.json index d4331422..376ccce4 100644 --- a/cartridges/airtable-mcp/cartridge.json +++ b/cartridges/airtable-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "Airtable cartridge -- base listing, table schema retrieval, record search, record creation, record update, field listing, view browsing, webhook management, comment access, and revision history via the Airtable REST API", "domain": "Productivity", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", @@ -149,7 +150,7 @@ }, { "name": "airtable_update_record", - "description": "Update an existing record's field values (PATCH — only specified fields are updated)", + "description": "Update an existing record's field values (PATCH \u2014 only specified fields are updated)", "inputSchema": { "type": "object", "properties": { diff --git a/cartridges/arango-mcp/cartridge.json b/cartridges/arango-mcp/cartridge.json index d183ac0e..72560916 100644 --- a/cartridges/arango-mcp/cartridge.json +++ b/cartridges/arango-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "ArangoDB multi-model database gateway. AQL queries, document operations, graph traversals, and collection management.", "domain": "Database", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/aws-mcp/cartridge.json b/cartridges/aws-mcp/cartridge.json index 5f600f7b..5f16bb11 100644 --- a/cartridges/aws-mcp/cartridge.json +++ b/cartridges/aws-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "AWS cloud gateway. Session-based authentication with per-region slots, throttle management, and multi-service action routing.", "domain": "Cloud", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/bofig-mcp/cartridge.json b/cartridges/bofig-mcp/cartridge.json index 466e83b6..08555a30 100644 --- a/cartridges/bofig-mcp/cartridge.json +++ b/cartridges/bofig-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "1.0.0", "description": "Bofig Cartridge \u2014 Evidence graph query tools for investigative workflows", "domain": "Research", + "category": "domain", "tier": "Ayo", "auth": { "method": "none" diff --git a/cartridges/boj-health/cartridge.json b/cartridges/boj-health/cartridge.json index c8ea0383..b52c00fb 100644 --- a/cartridges/boj-health/cartridge.json +++ b/cartridges/boj-health/cartridge.json @@ -5,10 +5,13 @@ "name": "boj-health", "version": "0.1.0", "status": "ffi_only", - "description": "BoJ server self-health cartridge — status, ping, and uptime queries. Self-contained Zig FFI (.so) reference implementation: no external services required.", + "description": "BoJ server self-health cartridge \u2014 status, ping, and uptime queries. Self-contained Zig FFI (.so) reference implementation: no external services required.", "domain": "infrastructure", + "category": "cross-cutting", "tier": "Ayo", - "protocols": ["MCP"], + "protocols": [ + "MCP" + ], "auth": { "method": "none", "env_var": null, @@ -21,7 +24,13 @@ "ffi": { "so_path": "ffi/zig-out/lib/libboj_health.so", "abi_version": "ADR-0006", - "symbols": ["boj_cartridge_init", "boj_cartridge_deinit", "boj_cartridge_name", "boj_cartridge_version", "boj_cartridge_invoke"] + "symbols": [ + "boj_cartridge_init", + "boj_cartridge_deinit", + "boj_cartridge_name", + "boj_cartridge_version", + "boj_cartridge_invoke" + ] }, "tools": [ { @@ -34,7 +43,7 @@ }, { "name": "boj_health_ping", - "description": "Ping the BoJ health cartridge — always returns pong", + "description": "Ping the BoJ health cartridge \u2014 always returns pong", "inputSchema": { "type": "object", "properties": {} diff --git a/cartridges/browser-mcp/cartridge.json b/cartridges/browser-mcp/cartridge.json index 2c89cee6..cb47f9d0 100644 --- a/cartridges/browser-mcp/cartridge.json +++ b/cartridges/browser-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Firefox browser automation via Marionette", "domain": "automation", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/bsp-mcp/cartridge.json b/cartridges/bsp-mcp/cartridge.json index 4891badd..0350aae5 100644 --- a/cartridges/bsp-mcp/cartridge.json +++ b/cartridges/bsp-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Generic Build Server Protocol (BSP 2.x) gateway. Spawns any BSP server as a persistent subprocess and exposes build lifecycle operations (initialize, targets, compile, test, run, clean, diagnostics) as MCP tools.", "domain": "Language Tools", + "category": "cross-cutting", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/buildkite-mcp/cartridge.json b/cartridges/buildkite-mcp/cartridge.json index 59b604fb..286cc0ca 100644 --- a/cartridges/buildkite-mcp/cartridge.json +++ b/cartridges/buildkite-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Buildkite CI/CD cartridge -- pipeline listing, build management, job inspection, artifact retrieval, agent listing, annotation creation, build triggering, log retrieval, environment listing, and build cancellation via the Buildkite REST API", "domain": "CI/CD", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/burble-admin-mcp/cartridge.json b/cartridges/burble-admin-mcp/cartridge.json index 6cd74fed..39c1cf9d 100644 --- a/cartridges/burble-admin-mcp/cartridge.json +++ b/cartridges/burble-admin-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Burble WebRTC server administration", "domain": "communications", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/chromadb-mcp/cartridge.json b/cartridges/chromadb-mcp/cartridge.json index 6326f085..7bc3cc49 100644 --- a/cartridges/chromadb-mcp/cartridge.json +++ b/cartridges/chromadb-mcp/cartridge.json @@ -5,19 +5,167 @@ "name": "chromadb-mcp", "version": "0.1.0", "status": "stub", - "description": "Chroma vector DB — embedded (local persistent) or client/server; LLM-app-focused; metadata + document storage alongside vectors.", + "description": "Chroma vector DB \u2014 embedded (local persistent) or client/server; LLM-app-focused; metadata + document storage alongside vectors.", "domain": "vector", + "category": "domain", "tier": "Teranga", - "protocols": ["MCP", "REST"], - "auth": { "method": "optional_bearer", "env_var": "CHROMA_AUTH_TOKEN", "credential_source": "Optional — embedded mode has no auth; client/server may use bearer token." }, - "api": { "base_url": "local://chromadb-mcp", "content_type": "application/json" }, + "protocols": [ + "MCP", + "REST" + ], + "auth": { + "method": "optional_bearer", + "env_var": "CHROMA_AUTH_TOKEN", + "credential_source": "Optional \u2014 embedded mode has no auth; client/server may use bearer token." + }, + "api": { + "base_url": "local://chromadb-mcp", + "content_type": "application/json" + }, "tools": [ - { "name": "vector_authenticate", "description": "Store Chroma endpoint URL (or 'embedded' for in-process) + optional bearer.", "inputSchema": { "type": "object", "properties": { "endpoint": { "type": "string" }, "auth_token": { "type": "string" }, "embedding_function": { "type": "string" } }, "required": ["endpoint"] } }, - { "name": "vector_list_collections", "description": "List collections.", "inputSchema": { "type": "object", "properties": {} } }, - { "name": "vector_create_collection", "description": "Create a collection with optional embedding function + metadata.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" }, "metadata": { "type": "object" }, "embedding_function": { "type": "string" } }, "required": ["name"] } }, - { "name": "vector_delete_collection", "description": "Delete a collection.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"] } }, - { "name": "vector_upsert", "description": "Add documents + vectors + metadata. Chroma computes embeddings if not provided.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "ids": { "type": "array" }, "documents": { "type": "array" }, "embeddings": { "type": "array" }, "metadatas": { "type": "array" } }, "required": ["collection", "ids"] } }, - { "name": "vector_query", "description": "Query by text or embedding with where-filter + document-content filter.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "query_texts": { "type": "array" }, "query_embeddings": { "type": "array" }, "n_results": { "type": "integer" }, "where": { "type": "object" }, "where_document": { "type": "object" } }, "required": ["collection"] } }, - { "name": "vector_delete", "description": "Delete documents by id or where-filter.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "ids": { "type": "array" }, "where": { "type": "object" } }, "required": ["collection"] } } + { + "name": "vector_authenticate", + "description": "Store Chroma endpoint URL (or 'embedded' for in-process) + optional bearer.", + "inputSchema": { + "type": "object", + "properties": { + "endpoint": { + "type": "string" + }, + "auth_token": { + "type": "string" + }, + "embedding_function": { + "type": "string" + } + }, + "required": [ + "endpoint" + ] + } + }, + { + "name": "vector_list_collections", + "description": "List collections.", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "vector_create_collection", + "description": "Create a collection with optional embedding function + metadata.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "metadata": { + "type": "object" + }, + "embedding_function": { + "type": "string" + } + }, + "required": [ + "name" + ] + } + }, + { + "name": "vector_delete_collection", + "description": "Delete a collection.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + }, + "required": [ + "name" + ] + } + }, + { + "name": "vector_upsert", + "description": "Add documents + vectors + metadata. Chroma computes embeddings if not provided.", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string" + }, + "ids": { + "type": "array" + }, + "documents": { + "type": "array" + }, + "embeddings": { + "type": "array" + }, + "metadatas": { + "type": "array" + } + }, + "required": [ + "collection", + "ids" + ] + } + }, + { + "name": "vector_query", + "description": "Query by text or embedding with where-filter + document-content filter.", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string" + }, + "query_texts": { + "type": "array" + }, + "query_embeddings": { + "type": "array" + }, + "n_results": { + "type": "integer" + }, + "where": { + "type": "object" + }, + "where_document": { + "type": "object" + } + }, + "required": [ + "collection" + ] + } + }, + { + "name": "vector_delete", + "description": "Delete documents by id or where-filter.", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string" + }, + "ids": { + "type": "array" + }, + "where": { + "type": "object" + } + }, + "required": [ + "collection" + ] + } + } ] } diff --git a/cartridges/circleci-mcp/cartridge.json b/cartridges/circleci-mcp/cartridge.json index 8958f1ad..41f93060 100644 --- a/cartridges/circleci-mcp/cartridge.json +++ b/cartridges/circleci-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "CircleCI CI/CD cartridge -- pipeline listing, workflow management, job inspection, artifact retrieval, project listing, environment variable browsing, pipeline triggering, job cancellation, and insight queries via the CircleCI API v2", "domain": "CI/CD", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/civic-connect-mcp/cartridge.json b/cartridges/civic-connect-mcp/cartridge.json index 0a8bc5a5..7dfba242 100644 --- a/cartridges/civic-connect-mcp/cartridge.json +++ b/cartridges/civic-connect-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "CivicConnect community engagement platform", "domain": "community", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/claude-agents-power-mcp/cartridge.json b/cartridges/claude-agents-power-mcp/cartridge.json index 2f022fcf..bdd72a25 100644 --- a/cartridges/claude-agents-power-mcp/cartridge.json +++ b/cartridges/claude-agents-power-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Claude Agents Power MCP Server. Intelligent management of specialized AI agents for development teams. Analyze projects, recommend agents, and deploy 100+ professional roles.", "domain": "Agent Orchestration", + "category": "cross-cutting", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/claude-ai-mcp/cartridge.json b/cartridges/claude-ai-mcp/cartridge.json index aab96761..43e3b2ee 100644 --- a/cartridges/claude-ai-mcp/cartridge.json +++ b/cartridges/claude-ai-mcp/cartridge.json @@ -7,6 +7,7 @@ "status": "ffi_only", "description": "Anthropic Messages API cartridge -- send messages to Claude models, count tokens, manage multi-turn conversations", "domain": "AI", + "category": "cross-cutting", "tier": "Ayo", "protocols": [ "MCP", @@ -72,7 +73,7 @@ }, "temperature": { "type": "number", - "description": "Sampling temperature 0.0–1.0 (default 1.0 = standard).", + "description": "Sampling temperature 0.0\u20131.0 (default 1.0 = standard).", "default": 1.0 } }, diff --git a/cartridges/clickhouse-mcp/cartridge.json b/cartridges/clickhouse-mcp/cartridge.json index 9d8f1a81..f7df14d5 100644 --- a/cartridges/clickhouse-mcp/cartridge.json +++ b/cartridges/clickhouse-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "ClickHouse analytics database gateway. Columnar queries, bulk inserts, and real-time analytics via session management.", "domain": "Database", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/cloud-mcp/cartridge.json b/cartridges/cloud-mcp/cartridge.json index 4f22b005..57c64add 100644 --- a/cartridges/cloud-mcp/cartridge.json +++ b/cartridges/cloud-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Multi-cloud provider session manager (AWS/GCP/Azure/DO/Vercel)", "domain": "cloud", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/cloudflare-mcp/cartridge.json b/cartridges/cloudflare-mcp/cartridge.json index 6f073cf6..8be65285 100644 --- a/cartridges/cloudflare-mcp/cartridge.json +++ b/cartridges/cloudflare-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Cloudflare API v4 cartridge -- DNS record management, zone settings, and SSL/TLS configuration", "domain": "Cloud", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", @@ -220,7 +221,7 @@ }, { "name": "cf_patch_dns_record", - "description": "Partially update a DNS record — change only the specified fields (e.g. toggle proxied without changing content)", + "description": "Partially update a DNS record \u2014 change only the specified fields (e.g. toggle proxied without changing content)", "inputSchema": { "type": "object", "properties": { diff --git a/cartridges/coderag-mcp/cartridge.json b/cartridges/coderag-mcp/cartridge.json index 21b9ec33..32ec03cd 100644 --- a/cartridges/coderag-mcp/cartridge.json +++ b/cartridges/coderag-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Enterprise Code Intelligence Platform. Advanced graph-based code analysis for AI-assisted software development. Transforms complex software projects into searchable knowledge graphs using Neo4j.", "domain": "Code Analysis", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/codeseeker-mcp/cartridge.json b/cartridges/codeseeker-mcp/cartridge.json index 062b5dbc..0ea9230b 100644 --- a/cartridges/codeseeker-mcp/cartridge.json +++ b/cartridges/codeseeker-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "CodeSeeker hybrid code search and graph RAG", "domain": "development", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/comms-mcp/cartridge.json b/cartridges/comms-mcp/cartridge.json index dd43a863..b03e933d 100644 --- a/cartridges/comms-mcp/cartridge.json +++ b/cartridges/comms-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Multi-provider communications (Gmail, Google Calendar)", "domain": "communications", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/conflow-mcp/cartridge.json b/cartridges/conflow-mcp/cartridge.json index 1a04b144..5ccaaa18 100644 --- a/cartridges/conflow-mcp/cartridge.json +++ b/cartridges/conflow-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Conflow configuration management", "domain": "configuration", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/container-mcp/cartridge.json b/cartridges/container-mcp/cartridge.json index f257591a..6d04634e 100644 --- a/cartridges/container-mcp/cartridge.json +++ b/cartridges/container-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Container lifecycle manager. Build, create, start, stop, and remove containers via Podman/Docker with state machine enforcement.", "domain": "Container Orchestration", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/crates-mcp/cartridge.json b/cartridges/crates-mcp/cartridge.json index 909a8643..90109739 100644 --- a/cartridges/crates-mcp/cartridge.json +++ b/cartridges/crates-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "crates.io registry cartridge -- Rust crate search, metadata retrieval, version listing, download stats, dependency analysis, owner management, category browsing, and reverse dependency lookup via the crates.io API", "domain": "Registry", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/dap-mcp/cartridge.json b/cartridges/dap-mcp/cartridge.json index 6e8b6d06..b0d7b71a 100644 --- a/cartridges/dap-mcp/cartridge.json +++ b/cartridges/dap-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Generic Debug Adapter Protocol (DAP) gateway. Spawns any DAP adapter as a persistent subprocess and exposes debug lifecycle operations (initialize, launch/attach, breakpoints, stepping, stack inspection, variable evaluation) as MCP tools.", "domain": "Language Tools", + "category": "cross-cutting", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/database-mcp/cartridge.json b/cartridges/database-mcp/cartridge.json index c4592689..fece2e19 100644 --- a/cartridges/database-mcp/cartridge.json +++ b/cartridges/database-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Universal database gateway. Connects to PostgreSQL, SQLite, VeriSimDB, QuandleDB, MongoDB, and other backends with unified query interface.", "domain": "Database", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/digitalocean-mcp/cartridge.json b/cartridges/digitalocean-mcp/cartridge.json index 56db86cf..8d95f137 100644 --- a/cartridges/digitalocean-mcp/cartridge.json +++ b/cartridges/digitalocean-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "DigitalOcean cloud infrastructure cartridge -- droplets, volumes, domains, SSH keys, snapshots, databases, Kubernetes, firewalls, load balancers, and account management", "domain": "Cloud", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/discord-mcp/cartridge.json b/cartridges/discord-mcp/cartridge.json index 34386a18..c2d4504a 100644 --- a/cartridges/discord-mcp/cartridge.json +++ b/cartridges/discord-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Discord bot gateway. Send messages, read channel history, manage guilds, and react to messages.", "domain": "Communications", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/dns-shield-mcp/cartridge.json b/cartridges/dns-shield-mcp/cartridge.json index f4806923..ae69dfb5 100644 --- a/cartridges/dns-shield-mcp/cartridge.json +++ b/cartridges/dns-shield-mcp/cartridge.json @@ -4,8 +4,9 @@ "copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) ", "name": "dns-shield-mcp", "version": "0.1.0", - "description": "DNS security shield — DoQ, DoH, DNSSEC, CAA", + "description": "DNS security shield \u2014 DoQ, DoH, DNSSEC, CAA", "domain": "security", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/docker-hub-mcp/cartridge.json b/cartridges/docker-hub-mcp/cartridge.json index 26d3a7ca..e7daa289 100644 --- a/cartridges/docker-hub-mcp/cartridge.json +++ b/cartridges/docker-hub-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "Docker Hub container registry cartridge -- image search, repository management, tag listing, manifest inspection, namespace browsing, and pull rate limit tracking with JWT auth", "domain": "Container", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/duckdb-mcp/cartridge.json b/cartridges/duckdb-mcp/cartridge.json index e46a56c2..b06ca934 100644 --- a/cartridges/duckdb-mcp/cartridge.json +++ b/cartridges/duckdb-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "DuckDB in-process analytics gateway. SQL queries over Parquet, CSV, JSON, and Arrow files with export support.", "domain": "Database", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/echidna-llm-mcp/cartridge.json b/cartridges/echidna-llm-mcp/cartridge.json index 869bc760..7d8fefeb 100644 --- a/cartridges/echidna-llm-mcp/cartridge.json +++ b/cartridges/echidna-llm-mcp/cartridge.json @@ -7,6 +7,7 @@ "status": "stub", "description": "LLM advisor cartridge for the ECHIDNA formal verification engine. Provides free-form consultation (consult) and structured proof-tactic generation (suggest_tactics) by routing to Anthropic Claude via ANTHROPIC_API_KEY.", "domain": "Formal Verification", + "category": "domain", "tier": "Ayo", "protocols": [ "REST" @@ -51,7 +52,7 @@ }, "temperature": { "type": "number", - "description": "Sampling temperature 0.0–1.0.", + "description": "Sampling temperature 0.0\u20131.0.", "default": 0.3 }, "response_format": { @@ -73,11 +74,11 @@ "properties": { "system": { "type": "string", - "description": "System prompt from echidna's build_system_prompt() — defines the advisor role and required JSON response schema." + "description": "System prompt from echidna's build_system_prompt() \u2014 defines the advisor role and required JSON response schema." }, "prompt": { "type": "string", - "description": "User prompt from echidna's build_user_prompt() — encodes the proof goal, hypotheses, history, and top-k count." + "description": "User prompt from echidna's build_user_prompt() \u2014 encodes the proof goal, hypotheses, history, and top-k count." }, "model": { "type": "string", @@ -91,7 +92,7 @@ }, "temperature": { "type": "number", - "description": "Sampling temperature 0.0–1.0. Lower = more deterministic tactic suggestions.", + "description": "Sampling temperature 0.0\u20131.0. Lower = more deterministic tactic suggestions.", "default": 0.2 }, "response_format": { diff --git a/cartridges/elevenlabs-mcp/cartridge.json b/cartridges/elevenlabs-mcp/cartridge.json index 5ab536f2..ff817bbb 100644 --- a/cartridges/elevenlabs-mcp/cartridge.json +++ b/cartridges/elevenlabs-mcp/cartridge.json @@ -5,16 +5,109 @@ "name": "elevenlabs-mcp", "version": "0.1.0", "status": "stub", - "description": "Text-to-speech via ElevenLabs API — high-quality voices, multilingual, voice cloning (premium tier), streaming output.", + "description": "Text-to-speech via ElevenLabs API \u2014 high-quality voices, multilingual, voice cloning (premium tier), streaming output.", "domain": "multimodal", + "category": "domain", "tier": "Teranga", - "protocols": ["MCP", "REST"], - "auth": { "method": "api_key", "env_var": "ELEVENLABS_API_KEY", "credential_source": "ElevenLabs account → Profile → API Keys." }, - "api": { "base_url": "local://elevenlabs-mcp", "content_type": "application/json" }, + "protocols": [ + "MCP", + "REST" + ], + "auth": { + "method": "api_key", + "env_var": "ELEVENLABS_API_KEY", + "credential_source": "ElevenLabs account \u2192 Profile \u2192 API Keys." + }, + "api": { + "base_url": "local://elevenlabs-mcp", + "content_type": "application/json" + }, "tools": [ - { "name": "audio_authenticate", "description": "Store ElevenLabs API key.", "inputSchema": { "type": "object", "properties": { "api_key": { "type": "string" } }, "required": ["api_key"] } }, - { "name": "audio_synthesize", "description": "Generate speech from text. Returns audio (mp3 / pcm / opus).", "inputSchema": { "type": "object", "properties": { "text": { "type": "string" }, "voice_id": { "type": "string" }, "model_id": { "type": "string", "enum": ["eleven_multilingual_v2", "eleven_turbo_v2", "eleven_monolingual_v1"] }, "output_format": { "type": "string", "enum": ["mp3_44100_128", "pcm_44100", "opus_48000_128"] }, "stability": { "type": "number" }, "similarity_boost": { "type": "number" } }, "required": ["text", "voice_id"] } }, - { "name": "audio_list_voices", "description": "List available voices on the account (preset + custom).", "inputSchema": { "type": "object", "properties": {} } }, - { "name": "audio_clone_voice", "description": "Create a custom voice from sample audio (premium tier only).", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" }, "samples": { "type": "array" }, "description": { "type": "string" } }, "required": ["name", "samples"] } } + { + "name": "audio_authenticate", + "description": "Store ElevenLabs API key.", + "inputSchema": { + "type": "object", + "properties": { + "api_key": { + "type": "string" + } + }, + "required": [ + "api_key" + ] + } + }, + { + "name": "audio_synthesize", + "description": "Generate speech from text. Returns audio (mp3 / pcm / opus).", + "inputSchema": { + "type": "object", + "properties": { + "text": { + "type": "string" + }, + "voice_id": { + "type": "string" + }, + "model_id": { + "type": "string", + "enum": [ + "eleven_multilingual_v2", + "eleven_turbo_v2", + "eleven_monolingual_v1" + ] + }, + "output_format": { + "type": "string", + "enum": [ + "mp3_44100_128", + "pcm_44100", + "opus_48000_128" + ] + }, + "stability": { + "type": "number" + }, + "similarity_boost": { + "type": "number" + } + }, + "required": [ + "text", + "voice_id" + ] + } + }, + { + "name": "audio_list_voices", + "description": "List available voices on the account (preset + custom).", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "audio_clone_voice", + "description": "Create a custom voice from sample audio (premium tier only).", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "samples": { + "type": "array" + }, + "description": { + "type": "string" + } + }, + "required": [ + "name", + "samples" + ] + } + } ] } diff --git a/cartridges/ephapax-mcp/cartridge.json b/cartridges/ephapax-mcp/cartridge.json index acf7fbcd..18d8c035 100644 --- a/cartridges/ephapax-mcp/cartridge.json +++ b/cartridges/ephapax-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "1.0.0", "description": "Ephapax Cartridge \u2014 Proof-compiler query tools for formal verification workflows", "domain": "Formal Verification", + "category": "domain", "tier": "Ayo", "auth": { "method": "none" diff --git a/cartridges/feedback-mcp/cartridge.json b/cartridges/feedback-mcp/cartridge.json index f2d4b9a1..ade131d4 100644 --- a/cartridges/feedback-mcp/cartridge.json +++ b/cartridges/feedback-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Feedback collection and sentiment analysis", "domain": "community", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/ffmpeg-mcp/cartridge.json b/cartridges/ffmpeg-mcp/cartridge.json index f08661f4..8ed1ddc1 100644 --- a/cartridges/ffmpeg-mcp/cartridge.json +++ b/cartridges/ffmpeg-mcp/cartridge.json @@ -5,18 +5,170 @@ "name": "ffmpeg-mcp", "version": "0.1.0", "status": "stub", - "description": "Local FFmpeg gateway — probe metadata, transcode formats, extract audio, extract frames, concatenate, trim. Glue between whisper / replicate / browser screenshots. Local-only — requires host ffmpeg binary; not Worker-compatible.", + "description": "Local FFmpeg gateway \u2014 probe metadata, transcode formats, extract audio, extract frames, concatenate, trim. Glue between whisper / replicate / browser screenshots. Local-only \u2014 requires host ffmpeg binary; not Worker-compatible.", "domain": "multimodal", + "category": "domain", "tier": "Teranga", - "protocols": ["MCP", "REST"], - "auth": { "method": "none", "env_var": null, "credential_source": "No auth — operates on local files. Sandbox via FFMPEG_ALLOWED_PATHS env if exposing to multi-tenant deployments." }, - "api": { "base_url": "local://ffmpeg-mcp", "content_type": "application/json" }, + "protocols": [ + "MCP", + "REST" + ], + "auth": { + "method": "none", + "env_var": null, + "credential_source": "No auth \u2014 operates on local files. Sandbox via FFMPEG_ALLOWED_PATHS env if exposing to multi-tenant deployments." + }, + "api": { + "base_url": "local://ffmpeg-mcp", + "content_type": "application/json" + }, "tools": [ - { "name": "media_probe", "description": "Probe metadata (codec, duration, streams, dimensions). Read-only.", "inputSchema": { "type": "object", "properties": { "input": { "type": "string" } }, "required": ["input"] } }, - { "name": "media_transcode", "description": "Convert between formats with optional bitrate / resolution / codec overrides.", "inputSchema": { "type": "object", "properties": { "input": { "type": "string" }, "output": { "type": "string" }, "video_codec": { "type": "string" }, "audio_codec": { "type": "string" }, "video_bitrate": { "type": "string" }, "resolution": { "type": "string" } }, "required": ["input", "output"] } }, - { "name": "media_extract_audio", "description": "Extract audio track to its own file (mp3 / wav / opus). Useful as a Whisper input prep step.", "inputSchema": { "type": "object", "properties": { "input": { "type": "string" }, "output": { "type": "string" }, "format": { "type": "string", "enum": ["mp3", "wav", "opus", "aac"] } }, "required": ["input", "output"] } }, - { "name": "media_extract_frames", "description": "Extract frames at a given interval or specific timestamps. Useful as Replicate vision-model input prep.", "inputSchema": { "type": "object", "properties": { "input": { "type": "string" }, "output_pattern": { "type": "string" }, "fps": { "type": "number" }, "timestamps": { "type": "array" } }, "required": ["input", "output_pattern"] } }, - { "name": "media_concat", "description": "Concatenate multiple files into one (same codec required, or transcode-then-concat).", "inputSchema": { "type": "object", "properties": { "inputs": { "type": "array" }, "output": { "type": "string" } }, "required": ["inputs", "output"] } }, - { "name": "media_trim", "description": "Trim/cut to a specific time range.", "inputSchema": { "type": "object", "properties": { "input": { "type": "string" }, "output": { "type": "string" }, "start": { "type": "string" }, "end": { "type": "string" }, "duration": { "type": "string" } }, "required": ["input", "output", "start"] } } + { + "name": "media_probe", + "description": "Probe metadata (codec, duration, streams, dimensions). Read-only.", + "inputSchema": { + "type": "object", + "properties": { + "input": { + "type": "string" + } + }, + "required": [ + "input" + ] + } + }, + { + "name": "media_transcode", + "description": "Convert between formats with optional bitrate / resolution / codec overrides.", + "inputSchema": { + "type": "object", + "properties": { + "input": { + "type": "string" + }, + "output": { + "type": "string" + }, + "video_codec": { + "type": "string" + }, + "audio_codec": { + "type": "string" + }, + "video_bitrate": { + "type": "string" + }, + "resolution": { + "type": "string" + } + }, + "required": [ + "input", + "output" + ] + } + }, + { + "name": "media_extract_audio", + "description": "Extract audio track to its own file (mp3 / wav / opus). Useful as a Whisper input prep step.", + "inputSchema": { + "type": "object", + "properties": { + "input": { + "type": "string" + }, + "output": { + "type": "string" + }, + "format": { + "type": "string", + "enum": [ + "mp3", + "wav", + "opus", + "aac" + ] + } + }, + "required": [ + "input", + "output" + ] + } + }, + { + "name": "media_extract_frames", + "description": "Extract frames at a given interval or specific timestamps. Useful as Replicate vision-model input prep.", + "inputSchema": { + "type": "object", + "properties": { + "input": { + "type": "string" + }, + "output_pattern": { + "type": "string" + }, + "fps": { + "type": "number" + }, + "timestamps": { + "type": "array" + } + }, + "required": [ + "input", + "output_pattern" + ] + } + }, + { + "name": "media_concat", + "description": "Concatenate multiple files into one (same codec required, or transcode-then-concat).", + "inputSchema": { + "type": "object", + "properties": { + "inputs": { + "type": "array" + }, + "output": { + "type": "string" + } + }, + "required": [ + "inputs", + "output" + ] + } + }, + { + "name": "media_trim", + "description": "Trim/cut to a specific time range.", + "inputSchema": { + "type": "object", + "properties": { + "input": { + "type": "string" + }, + "output": { + "type": "string" + }, + "start": { + "type": "string" + }, + "end": { + "type": "string" + }, + "duration": { + "type": "string" + } + }, + "required": [ + "input", + "output", + "start" + ] + } + } ] } diff --git a/cartridges/fireflag-mcp/cartridge.json b/cartridges/fireflag-mcp/cartridge.json index b8d21ff1..98900973 100644 --- a/cartridges/fireflag-mcp/cartridge.json +++ b/cartridges/fireflag-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "1.0.0", "description": "Fireflag Cartridge \u2014 Extension-to-MCP mapping and discovery tools", "domain": "Developer Tools", + "category": "domain", "tier": "Ayo", "auth": { "method": "none" diff --git a/cartridges/fleet-mcp/cartridge.json b/cartridges/fleet-mcp/cartridge.json index 37b79ac5..955d5a6b 100644 --- a/cartridges/fleet-mcp/cartridge.json +++ b/cartridges/fleet-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "gitbot-fleet gate compliance tracker", "domain": "ci", + "category": "cross-cutting", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/fly-mcp/cartridge.json b/cartridges/fly-mcp/cartridge.json index 85446f7a..3361931c 100644 --- a/cartridges/fly-mcp/cartridge.json +++ b/cartridges/fly-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Fly.io Machines API v1 cartridge -- app, machine, volume, secret, region, IP, and certificate management", "domain": "Cloud", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/game-admin-mcp/cartridge.json b/cartridges/game-admin-mcp/cartridge.json index 870d67e9..81357767 100644 --- a/cartridges/game-admin-mcp/cartridge.json +++ b/cartridges/game-admin-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Game server administration and configuration drift", "domain": "gaming", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/gcp-mcp/cartridge.json b/cartridges/gcp-mcp/cartridge.json index ea1eb59e..1e709f2a 100644 --- a/cartridges/gcp-mcp/cartridge.json +++ b/cartridges/gcp-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "GCP cloud gateway. Project-scoped authentication with quota tracking and multi-service routing.", "domain": "Cloud", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/git-mcp/cartridge.json b/cartridges/git-mcp/cartridge.json index a7047378..374922ca 100644 --- a/cartridges/git-mcp/cartridge.json +++ b/cartridges/git-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Multi-forge git operations (GitHub, GitLab, Gitea, Bitbucket)", "domain": "development", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/github-actions-mcp/cartridge.json b/cartridges/github-actions-mcp/cartridge.json index e475a3c1..adb4d72c 100644 --- a/cartridges/github-actions-mcp/cartridge.json +++ b/cartridges/github-actions-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "GitHub Actions CI/CD cartridge -- workflow listing, run management, job/step inspection, artifact download, log retrieval, workflow dispatch, secret listing, environment browsing, cache management, runner listing, re-run, and cancellation via the GitHub Actions API", "domain": "CI/CD", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/github-api-mcp/cartridge.json b/cartridges/github-api-mcp/cartridge.json index 3a71a154..f589d80b 100644 --- a/cartridges/github-api-mcp/cartridge.json +++ b/cartridges/github-api-mcp/cartridge.json @@ -4,8 +4,9 @@ "copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) ", "name": "github-api-mcp", "version": "0.1.0", - "description": "GitHub REST API — repos, issues, PRs, search", + "description": "GitHub REST API \u2014 repos, issues, PRs, search", "domain": "development", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/gitlab-api-mcp/cartridge.json b/cartridges/gitlab-api-mcp/cartridge.json index 6ba7a5fc..49a93494 100644 --- a/cartridges/gitlab-api-mcp/cartridge.json +++ b/cartridges/gitlab-api-mcp/cartridge.json @@ -4,8 +4,9 @@ "copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) ", "name": "gitlab-api-mcp", "version": "0.1.0", - "description": "GitLab REST API — projects, issues, MRs", + "description": "GitLab REST API \u2014 projects, issues, MRs", "domain": "development", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/google-docs-mcp/cartridge.json b/cartridges/google-docs-mcp/cartridge.json index a39e2c4d..4883e328 100644 --- a/cartridges/google-docs-mcp/cartridge.json +++ b/cartridges/google-docs-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "Google Docs cartridge -- document retrieval, content reading, text search, heading extraction, comment listing, suggestion browsing, revision history, named range access, document creation, and text insertion via the Google Docs API v1", "domain": "Productivity", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/google-sheets-mcp/cartridge.json b/cartridges/google-sheets-mcp/cartridge.json index a6374bb8..333b28ab 100644 --- a/cartridges/google-sheets-mcp/cartridge.json +++ b/cartridges/google-sheets-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "Google Sheets cartridge -- spreadsheet metadata retrieval, cell range reading, sheet listing, named range access, cell value writing, row appending, sheet creation, formula evaluation, conditional format listing, and pivot table access via the Google Sheets API v4", "domain": "Productivity", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/gossamer-mcp/cartridge.json b/cartridges/gossamer-mcp/cartridge.json index 8b0cb035..00e7e5ee 100644 --- a/cartridges/gossamer-mcp/cartridge.json +++ b/cartridges/gossamer-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Gossamer webview window manager. Creates and manages native desktop windows with panel loading and JavaScript evaluation.", "domain": "Desktop/UI", + "category": "template", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/grafana-mcp/cartridge.json b/cartridges/grafana-mcp/cartridge.json index 96933abb..d2ffba82 100644 --- a/cartridges/grafana-mcp/cartridge.json +++ b/cartridges/grafana-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Grafana monitoring cartridge -- dashboard CRUD, panel queries, alert rule management, annotation creation, datasource listing, folder browsing, org info, snapshot management, health checks, and search via the Grafana HTTP API", "domain": "Monitoring", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/hackage-mcp/cartridge.json b/cartridges/hackage-mcp/cartridge.json index d053ebab..0bd821e5 100644 --- a/cartridges/hackage-mcp/cartridge.json +++ b/cartridges/hackage-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "Hackage registry cartridge -- Haskell package search, metadata retrieval, version listing, download stats, dependency analysis, reverse dependency lookup, maintainer listing, deprecated status, and cabal file retrieval via the Hackage API", "domain": "Registry", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/hesiod-mcp/cartridge.json b/cartridges/hesiod-mcp/cartridge.json index 384a897d..3a92fa40 100644 --- a/cartridges/hesiod-mcp/cartridge.json +++ b/cartridges/hesiod-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "1.0.0", "description": "DNS lookup cartridge \u2014 query DNS records via MCP tools", "domain": "Infrastructure", + "category": "domain", "tier": "Ayo", "auth": { "method": "none" diff --git a/cartridges/hetzner-mcp/cartridge.json b/cartridges/hetzner-mcp/cartridge.json index 9c8912d7..a950a7f7 100644 --- a/cartridges/hetzner-mcp/cartridge.json +++ b/cartridges/hetzner-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "Hetzner Cloud API cartridge -- server, volume, firewall, network, SSH key, image, snapshot, floating IP, and load balancer management with per-second rate limiting", "domain": "Cloud", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/hex-mcp/cartridge.json b/cartridges/hex-mcp/cartridge.json index c165bfcb..3f34b48f 100644 --- a/cartridges/hex-mcp/cartridge.json +++ b/cartridges/hex-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "Hex.pm registry cartridge -- Elixir/Erlang package search, metadata retrieval, version listing, download stats, dependency analysis, owner listing, retirement status, and API key management via the Hex API", "domain": "Registry", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/hypatia-mcp/cartridge.json b/cartridges/hypatia-mcp/cartridge.json index 124c841e..45ad1d21 100644 --- a/cartridges/hypatia-mcp/cartridge.json +++ b/cartridges/hypatia-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Hypatia neurosymbolic CI/CD intelligence. Scans repos for security, quality, and compliance issues using symbolic rules + neural pattern detection.", "domain": "CI/CD Intelligence", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/iac-mcp/cartridge.json b/cartridges/iac-mcp/cartridge.json index cb8c21bd..a1230ee2 100644 --- a/cartridges/iac-mcp/cartridge.json +++ b/cartridges/iac-mcp/cartridge.json @@ -4,8 +4,9 @@ "copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath)", "name": "iac-mcp", "version": "0.1.0", - "description": "Infrastructure-as-Code gateway. Manages Terraform/OpenTofu plan→apply→destroy lifecycle with state machine enforcement.", + "description": "Infrastructure-as-Code gateway. Manages Terraform/OpenTofu plan\u2192apply\u2192destroy lifecycle with state machine enforcement.", "domain": "Infrastructure", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/idaptik-admin-mcp/cartridge.json b/cartridges/idaptik-admin-mcp/cartridge.json index df2f6afa..1da0a323 100644 --- a/cartridges/idaptik-admin-mcp/cartridge.json +++ b/cartridges/idaptik-admin-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "IDApTIK game server administration", "domain": "gaming", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/jira-mcp/cartridge.json b/cartridges/jira-mcp/cartridge.json index 522645d5..022facc7 100644 --- a/cartridges/jira-mcp/cartridge.json +++ b/cartridges/jira-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Jira project management and issue tracking", "domain": "project-management", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/k8s-mcp/cartridge.json b/cartridges/k8s-mcp/cartridge.json index 42ef453e..f0dfa743 100644 --- a/cartridges/k8s-mcp/cartridge.json +++ b/cartridges/k8s-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Kubernetes cluster management. Namespace-scoped operations with connection lifecycle and resource CRUD.", "domain": "Container Orchestration", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/k9iser-mcp/cartridge.json b/cartridges/k9iser-mcp/cartridge.json index e56aa17a..bca35904 100644 --- a/cartridges/k9iser-mcp/cartridge.json +++ b/cartridges/k9iser-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Wrap configs into self-validating K9 contracts (k9iser generate/validate/apply)", "domain": "config", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/kategoria-mcp/cartridge.json b/cartridges/kategoria-mcp/cartridge.json index 7e27ee8c..fcaef7a5 100644 --- a/cartridges/kategoria-mcp/cartridge.json +++ b/cartridges/kategoria-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Kategoria type-theory learning system. Classifies type-theory constructs and evaluates learner challenge responses.", "domain": "Education", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/laminar-mcp/cartridge.json b/cartridges/laminar-mcp/cartridge.json index 11e440f2..a544a933 100644 --- a/cartridges/laminar-mcp/cartridge.json +++ b/cartridges/laminar-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Laminar CI/CD pipeline management", "domain": "ci", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/lang-mcp/cartridge.json b/cartridges/lang-mcp/cartridge.json index 07c27664..1d54f17d 100644 --- a/cartridges/lang-mcp/cartridge.json +++ b/cartridges/lang-mcp/cartridge.json @@ -7,6 +7,7 @@ "status": "ffi_only", "description": "Multi-language session manager for the nextgen-languages family: Eclexia, AffineScript, BetLang, Ephapax, MyLang, WokeLang, Anvomidav, Phronesis, Error-lang, Julia-the-Viper, Me-dialect, Oblibeny. Tracks per-language sessions, delegates type-checking and evaluation to each language's CLI tool, and provides a unified interface across all dialects.", "domain": "Languages", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/linear-mcp/cartridge.json b/cartridges/linear-mcp/cartridge.json index df6ecc28..044d3602 100644 --- a/cartridges/linear-mcp/cartridge.json +++ b/cartridges/linear-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Linear issue tracking and project management", "domain": "project-management", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/linode-mcp/cartridge.json b/cartridges/linode-mcp/cartridge.json index 4733df85..435640c1 100644 --- a/cartridges/linode-mcp/cartridge.json +++ b/cartridges/linode-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "Linode/Akamai cloud infrastructure cartridge -- instances, volumes, domains, NodeBalancers, StackScripts, images, regions, firewalls, and account management", "domain": "Cloud", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/local-coord-mcp/cartridge.json b/cartridges/local-coord-mcp/cartridge.json index 001a10cf..6b7abd18 100644 --- a/cartridges/local-coord-mcp/cartridge.json +++ b/cartridges/local-coord-mcp/cartridge.json @@ -16,8 +16,9 @@ "port": 7745 }, "copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) ", - "description": "Localhost multi-instance coordination — peer discovery, message passing, and task claiming for parallel AI sessions on the same machine", + "description": "Localhost multi-instance coordination \u2014 peer discovery, message passing, and task claiming for parallel AI sessions on the same machine", "domain": "ai", + "category": "cross-cutting", "federation": "none", "name": "local-coord-mcp", "protocols": [ @@ -28,7 +29,7 @@ "tier": "Ayo", "tools": [ { - "description": "Register this instance as a coordination peer. Returns a peer ID and a session token for all subsequent calls. Optional `context` (alphanumeric + hyphen/underscore, max 32 bytes) disambiguates multiple windows of the same client_kind. Optional `declared_affinities` is an array of tag names the peer self-reports as strengths — feeds the reassignment engine (Task #14). Optional `variant` is a free-form model identifier (Task #33). Optional `capabilities` advertises class / tier / prover_strengths for cold-start routing (Task #34).", + "description": "Register this instance as a coordination peer. Returns a peer ID and a session token for all subsequent calls. Optional `context` (alphanumeric + hyphen/underscore, max 32 bytes) disambiguates multiple windows of the same client_kind. Optional `declared_affinities` is an array of tag names the peer self-reports as strengths \u2014 feeds the reassignment engine (Task #14). Optional `variant` is a free-form model identifier (Task #33). Optional `capabilities` advertises class / tier / prover_strengths for cold-start routing (Task #34).", "inputSchema": { "properties": { "capabilities": { @@ -81,7 +82,7 @@ "type": "array" }, "role": { - "description": "Optional requested role (DD-32). master is ALWAYS rejected here — promote via coord_promote_to_master. Default: claude->journeyman, others->apprentice. Old aliases (executor, supervised) accepted for one release.", + "description": "Optional requested role (DD-32). master is ALWAYS rejected here \u2014 promote via coord_promote_to_master. Default: claude->journeyman, others->apprentice. Old aliases (executor, supervised) accepted for one release.", "enum": [ "journeyman", "apprentice", @@ -161,7 +162,7 @@ "name": "coord_receive" }, { - "description": "Attempt to claim a task (mutex-style). If the task is unclaimed, this peer becomes the holder. If another peer holds it, the claim is denied. Idempotent if already held by caller. Task #15: optional confidence, dispatch_preference (deliberate/broadcast/auto), task_difficulty (trivial/routine/challenging/novel) — default policy broadcasts trivial+routine, deliberates on challenging+novel. Claim rejection triggers a per-client_kind rate-limit: 5 rejections / 10 min => 30s cooldown before the next attempt. Optional `paths` declares working-tree files this claim expects to touch; the bridge layer returns advisory `path_overlap` warnings when overlap is detected with other active claims. Bridge-only — backend ignores the field.", + "description": "Attempt to claim a task (mutex-style). If the task is unclaimed, this peer becomes the holder. If another peer holds it, the claim is denied. Idempotent if already held by caller. Task #15: optional confidence, dispatch_preference (deliberate/broadcast/auto), task_difficulty (trivial/routine/challenging/novel) \u2014 default policy broadcasts trivial+routine, deliberates on challenging+novel. Claim rejection triggers a per-client_kind rate-limit: 5 rejections / 10 min => 30s cooldown before the next attempt. Optional `paths` declares working-tree files this claim expects to touch; the bridge layer returns advisory `path_overlap` warnings when overlap is detected with other active claims. Bridge-only \u2014 backend ignores the field.", "inputSchema": { "properties": { "confidence": { @@ -180,7 +181,7 @@ "type": "string" }, "paths": { - "description": "Optional advisory list of working-tree paths this claim expects to touch. Bridge-layer hint only — not enforced by the backend.", + "description": "Optional advisory list of working-tree paths this claim expects to touch. Bridge-layer hint only \u2014 not enforced by the backend.", "items": { "maxLength": 256, "minLength": 1, @@ -329,7 +330,7 @@ "name": "coord_review_entry" }, { - "description": "Approve a quarantined message — delivers to target and removes from queue. Master role only.", + "description": "Approve a quarantined message \u2014 delivers to target and removes from queue. Master role only.", "inputSchema": { "properties": { "request_id": { @@ -350,7 +351,7 @@ "name": "coord_approve" }, { - "description": "Reject a quarantined message with a reason — removes from queue without delivery. Master role only. Reason logged for audit.", + "description": "Reject a quarantined message with a reason \u2014 removes from queue without delivery. Master role only. Reason logged for audit.", "inputSchema": { "properties": { "reason": { @@ -465,7 +466,7 @@ "name": "coord_set_declared_affinities" }, { - "description": "Run the reassignment-suggestion scanner (Task #14). Scans track-record aggregates vs declared_affinities; enqueues candidate envelopes in the quarantine for master review. Rules: overclaim (high avg_confidence + low effective_affinity), promote (high effective_affinity on undeclared tag), remove (low effective_affinity with >=5 attempts). Master reviews via coord_review / approves via coord_approve / rejects via coord_reject — never auto-modifies.", + "description": "Run the reassignment-suggestion scanner (Task #14). Scans track-record aggregates vs declared_affinities; enqueues candidate envelopes in the quarantine for master review. Rules: overclaim (high avg_confidence + low effective_affinity), promote (high effective_affinity on undeclared tag), remove (low effective_affinity with >=5 attempts). Master reviews via coord_review / approves via coord_approve / rejects via coord_reject \u2014 never auto-modifies.", "inputSchema": { "properties": { "token": { @@ -481,7 +482,7 @@ "name": "coord_scan_suggestions" }, { - "description": "Live master handoff (Task #35). Outgoing master passes the role to a named successor without a process restart. Secret-gated by BOJ_MASTER_TOKEN (BOJ_SUPERVISOR_TOKEN fallback). Target must be journeyman or already master — apprentices rejected. Audit-logged so replay reconstructs the transfer.", + "description": "Live master handoff (Task #35). Outgoing master passes the role to a named successor without a process restart. Secret-gated by BOJ_MASTER_TOKEN (BOJ_SUPERVISOR_TOKEN fallback). Target must be journeyman or already master \u2014 apprentices rejected. Audit-logged so replay reconstructs the transfer.", "inputSchema": { "properties": { "new_peer_id": { @@ -589,7 +590,7 @@ "inputSchema": { "properties": { "token": { - "description": "Session token from coord_register — any active peer may poll.", + "description": "Session token from coord_register \u2014 any active peer may poll.", "type": "string" } }, @@ -601,7 +602,7 @@ "name": "coord_health" }, { - "description": "Heartbeat for a held claim — resets the watchdog TTL (DD-20). Apprentice TTL is 30 s, journeyman 5 min, master no watchdog. Long-running work should ping this periodically so the server doesn't auto-release the claim.", + "description": "Heartbeat for a held claim \u2014 resets the watchdog TTL (DD-20). Apprentice TTL is 30 s, journeyman 5 min, master no watchdog. Long-running work should ping this periodically so the server doesn't auto-release the claim.", "inputSchema": { "properties": { "task": { @@ -622,11 +623,11 @@ "name": "coord_progress" }, { - "description": "Explicit watchdog sweep — release any claim whose holder has missed its role-based TTL. The sweep also runs implicitly at the top of every coord_claim_task, so this tool is only needed by ops wanting an external tick.", + "description": "Explicit watchdog sweep \u2014 release any claim whose holder has missed its role-based TTL. The sweep also runs implicitly at the top of every coord_claim_task, so this tool is only needed by ops wanting an external tick.", "inputSchema": { "properties": { "token": { - "description": "Session token from coord_register — any active peer may invoke.", + "description": "Session token from coord_register \u2014 any active peer may invoke.", "type": "string" } }, diff --git a/cartridges/local-memory-mcp/cartridge.json b/cartridges/local-memory-mcp/cartridge.json index 63468ab9..e6e6a544 100644 --- a/cartridges/local-memory-mcp/cartridge.json +++ b/cartridges/local-memory-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Persistent local memory for Claude, Cursor & Codex. 13 tools. No cloud. No API keys. Stores learnings, decisions, people, projects in a single SQLite file on your machine.", "domain": "Knowledge & Memory", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/lsp-mcp/cartridge.json b/cartridges/lsp-mcp/cartridge.json index c7505d9f..f4b261d7 100644 --- a/cartridges/lsp-mcp/cartridge.json +++ b/cartridges/lsp-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Generic Language Server Protocol (LSP 3.17) gateway. Spawns any LSP server as a persistent subprocess, manages the JSON-RPC 2.0 over stdio session, and exposes text document operations (open, change, hover, completion, goto-definition, references, diagnostics, formatting) as MCP tools.", "domain": "Language Tools", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", @@ -33,7 +34,7 @@ }, "preset": { "type": "string", - "description": "Permanent pinned toolchain preset from presets.json (e.g. 'rust' → the canonical rust-analyzer at /dev/tools). Use this instead of re-specifying the command/path every session. One of `command` or `preset` is required; an explicit `command` overrides the preset." + "description": "Permanent pinned toolchain preset from presets.json (e.g. 'rust' \u2192 the canonical rust-analyzer at /dev/tools). Use this instead of re-specifying the command/path every session. One of `command` or `preset` is required; an explicit `command` overrides the preset." }, "args": { "type": "array", @@ -301,7 +302,7 @@ }, "uri": { "type": "string", - "description": "Document URI (optional — omit for all documents)" + "description": "Document URI (optional \u2014 omit for all documents)" } }, "required": [ diff --git a/cartridges/matrix-mcp/cartridge.json b/cartridges/matrix-mcp/cartridge.json index 7fb77def..ef75fc56 100644 --- a/cartridges/matrix-mcp/cartridge.json +++ b/cartridges/matrix-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Matrix homeserver gateway. Send messages, join/leave rooms, read room history, and manage membership.", "domain": "Communications", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/ml-mcp/cartridge.json b/cartridges/ml-mcp/cartridge.json index 860126b1..35610257 100644 --- a/cartridges/ml-mcp/cartridge.json +++ b/cartridges/ml-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Machine learning inference (HuggingFace and others)", "domain": "ai", + "category": "cross-cutting", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/model-router-mcp/cartridge.json b/cartridges/model-router-mcp/cartridge.json index 989ff21b..7fcfcbd0 100644 --- a/cartridges/model-router-mcp/cartridge.json +++ b/cartridges/model-router-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Intelligent model router for Claude Code. Classifies tasks and recommends opus/sonnet/haiku, plans delegation from a higher tier to a cheaper executor, reviews delegated output, and estimates relative token cost savings.", "domain": "AI", + "category": "cross-cutting", "tier": "Ayo", "protocols": [ "MCP" diff --git a/cartridges/mongodb-mcp/cartridge.json b/cartridges/mongodb-mcp/cartridge.json index 05faca8c..22654ff7 100644 --- a/cartridges/mongodb-mcp/cartridge.json +++ b/cartridges/mongodb-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "MongoDB gateway with collection-level CRUD, aggregation pipeline support, and session management.", "domain": "Database", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/neo4j-mcp/cartridge.json b/cartridges/neo4j-mcp/cartridge.json index 89aaee4d..7f16fdd3 100644 --- a/cartridges/neo4j-mcp/cartridge.json +++ b/cartridges/neo4j-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Neo4j graph database query and write", "domain": "database", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/neon-mcp/cartridge.json b/cartridges/neon-mcp/cartridge.json index 9e303f44..8c3096cc 100644 --- a/cartridges/neon-mcp/cartridge.json +++ b/cartridges/neon-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Neon serverless Postgres gateway. Branch management, query execution, and connection pooling for Neon projects.", "domain": "Database", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/nesy-mcp/cartridge.json b/cartridges/nesy-mcp/cartridge.json index 54f63821..9dc73d5f 100644 --- a/cartridges/nesy-mcp/cartridge.json +++ b/cartridges/nesy-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Neural-symbolic (NeSy) harmonization engine. Symbolic truth always overrides neural probability.", "domain": "AI/NeSy", + "category": "cross-cutting", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/notifyhub-mcp/cartridge.json b/cartridges/notifyhub-mcp/cartridge.json index 56defcd5..782baafc 100644 --- a/cartridges/notifyhub-mcp/cartridge.json +++ b/cartridges/notifyhub-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Unified notification platform. Send notifications via Email, SMS, WhatsApp, Slack, Telegram, Discord, Teams, Firebase Push, Webhooks, WebSocket, Google Chat, Twitter/X, LinkedIn, Notion, Twitch, YouTube, Instagram, SendGrid, TikTok Shop, Facebook, AWS SNS, Mailgun, PagerDuty, Kick.", "domain": "Communication", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/notion-mcp/cartridge.json b/cartridges/notion-mcp/cartridge.json index e7259468..00d08c38 100644 --- a/cartridges/notion-mcp/cartridge.json +++ b/cartridges/notion-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Notion workspace pages, databases, and blocks", "domain": "productivity", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/npm-registry-mcp/cartridge.json b/cartridges/npm-registry-mcp/cartridge.json index 4f17f054..8d415a46 100644 --- a/cartridges/npm-registry-mcp/cartridge.json +++ b/cartridges/npm-registry-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "npm registry cartridge -- package search, metadata retrieval, version listing, download stats, dependency analysis, maintainer lookup, and audit advisory queries via the npm registry API", "domain": "Registry", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/observe-mcp/cartridge.json b/cartridges/observe-mcp/cartridge.json index 38dda039..295d2428 100644 --- a/cartridges/observe-mcp/cartridge.json +++ b/cartridges/observe-mcp/cartridge.json @@ -4,8 +4,9 @@ "copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) ", "name": "observe-mcp", "version": "0.1.0", - "description": "Unified observability — metrics, logs, traces (Prometheus, Grafana, Loki, Jaeger)", + "description": "Unified observability \u2014 metrics, logs, traces (Prometheus, Grafana, Loki, Jaeger)", "domain": "observability", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/obsidian-mcp/cartridge.json b/cartridges/obsidian-mcp/cartridge.json index f638ee39..625deb68 100644 --- a/cartridges/obsidian-mcp/cartridge.json +++ b/cartridges/obsidian-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "Obsidian vault cartridge -- note search, content retrieval, backlink navigation, tag browsing, graph analysis, dataview queries, frontmatter extraction, daily notes, template listing, and vault statistics via the Obsidian Local REST API", "domain": "Knowledge", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/opam-mcp/cartridge.json b/cartridges/opam-mcp/cartridge.json index 8e779d41..f63f522f 100644 --- a/cartridges/opam-mcp/cartridge.json +++ b/cartridges/opam-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "opam registry cartridge -- OCaml package search, metadata retrieval, version listing, dependency analysis, reverse dependency lookup, maintainer listing, and repository browsing via the opam.ocaml.org API", "domain": "Registry", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/opendatamcp/cartridge.json b/cartridges/opendatamcp/cartridge.json index 34f89120..ade7dc86 100644 --- a/cartridges/opendatamcp/cartridge.json +++ b/cartridges/opendatamcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Open Data Model Context Protocol. Access public datasets from your LLM application. Publish and distribute your Open Data via MCP servers.", "domain": "Open Data", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/opsm-mcp/cartridge.json b/cartridges/opsm-mcp/cartridge.json index 692caf11..581d834f 100644 --- a/cartridges/opsm-mcp/cartridge.json +++ b/cartridges/opsm-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Odds-and-Sods Package Manager (OPSM) gateway. Routes package search, install, dependency resolution (PubGrub), and registry management across 103 registry adapters (npm, cargo, hex, pypi, affinescript, rattlescript, eclexia, guix, nix, and more). State machine enforces valid registry slot lifecycle via Zig FFI.", "domain": "Package Management", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/orchestrator-lsp-mcp/cartridge.json b/cartridges/orchestrator-lsp-mcp/cartridge.json index 325d21e8..308b4a5d 100644 --- a/cartridges/orchestrator-lsp-mcp/cartridge.json +++ b/cartridges/orchestrator-lsp-mcp/cartridge.json @@ -4,10 +4,10 @@ "copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) ", "name": "orchestrator-lsp-mcp", "version": "0.1.0", - "status": "ffi_only", "status": "ready", "description": "Cross-domain LSP orchestrator. Routes LSP requests across all 12 poly-*-lsp servers (cloud, container, iac, k8s, db, queue, secret, git, ssg, proof, observability, browser) via a single GenLSP supervisor. Inspired by poly-orchestrator-lsp (polystack, archived). Wraps the 12 domain servers into one unified textDocument interface with domain-routing based on workspace root and file type.", "domain": "LSP", + "category": "domain", "tier": "Teranga", "protocols": [ "MCP", @@ -24,9 +24,9 @@ "content_type": "application/json" }, "design_notes": [ - "Supervisor tree: LSPServer + LSPClientPool (×12) + ExecutionRegistry + ExecutionSupervisor", + "Supervisor tree: LSPServer + LSPClientPool (\u00d712) + ExecutionRegistry + ExecutionSupervisor", "Stack parser reads .machine_readable/integrations/*.a2ml to discover active poly-*-lsp endpoints", - "Planner routes each LSP request to the correct domain server(s) — cross-domain queries fan-out", + "Planner routes each LSP request to the correct domain server(s) \u2014 cross-domain queries fan-out", "VeriSimDB client tracks orchestration session history and capability advertisement", "VSCode extension (ReScript, not TypeScript) exposes this as a single multi-domain language server" ], @@ -43,11 +43,15 @@ }, "domains": { "type": "array", - "items": { "type": "string" }, + "items": { + "type": "string" + }, "description": "Domain LSP servers to activate (e.g. ['git', 'k8s', 'db']). Empty = all." } }, - "required": ["workspace_root"] + "required": [ + "workspace_root" + ] } }, { @@ -69,7 +73,11 @@ "description": "LSP method parameters (JSON)" } }, - "required": ["session_id", "method", "params"] + "required": [ + "session_id", + "method", + "params" + ] } }, { @@ -83,7 +91,9 @@ "description": "Session ID to stop" } }, - "required": ["session_id"] + "required": [ + "session_id" + ] } }, { @@ -97,7 +107,9 @@ "description": "Session ID" } }, - "required": ["session_id"] + "required": [ + "session_id" + ] } } ], @@ -113,5 +125,5 @@ ], "note": "Zig FFI stub delegates to Elixir GenLSP application via port protocol" }, - "upstream_reference": "polystack/poly-orchestrator-lsp (archived 2026) — design reference only, not copied" + "upstream_reference": "polystack/poly-orchestrator-lsp (archived 2026) \u2014 design reference only, not copied" } diff --git a/cartridges/origenemcp/cartridge.json b/cartridges/origenemcp/cartridge.json index f5e27565..c2f97a76 100644 --- a/cartridges/origenemcp/cartridge.json +++ b/cartridges/origenemcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Biomedical MCP Server Platform. Integrates 600+ tools and databases (ChEMBL, PubChem, FDA, OpenTargets, NCBI, UniProt, PDB, Ensembl, UCSC, KEGG, STRING, TCGA, Monarch, ClinicalTrials) for multi-dimensional biomedical information retrieval.", "domain": "Bioinformatics", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/panic-attack-mcp/cartridge.json b/cartridges/panic-attack-mcp/cartridge.json index 2d3a06d0..897d1314 100644 --- a/cartridges/panic-attack-mcp/cartridge.json +++ b/cartridges/panic-attack-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "panic-attacker static analysis. Scans codebases for dangerous patterns, banned constructs, proof drift, and OWASP-class vulnerabilities across 49 languages.", "domain": "Security", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/pinecone-mcp/cartridge.json b/cartridges/pinecone-mcp/cartridge.json index 9256bb7f..281ec081 100644 --- a/cartridges/pinecone-mcp/cartridge.json +++ b/cartridges/pinecone-mcp/cartridge.json @@ -5,19 +5,165 @@ "name": "pinecone-mcp", "version": "0.1.0", "status": "stub", - "description": "Pinecone hosted vector DB — serverless indexes, upsert, similarity search, namespaces, metadata filtering.", + "description": "Pinecone hosted vector DB \u2014 serverless indexes, upsert, similarity search, namespaces, metadata filtering.", "domain": "vector", + "category": "domain", "tier": "Teranga", - "protocols": ["MCP", "REST"], - "auth": { "method": "api_key", "env_var": "PINECONE_API_KEY", "credential_source": "Pinecone console; environment-scoped." }, - "api": { "base_url": "local://pinecone-mcp", "content_type": "application/json" }, + "protocols": [ + "MCP", + "REST" + ], + "auth": { + "method": "api_key", + "env_var": "PINECONE_API_KEY", + "credential_source": "Pinecone console; environment-scoped." + }, + "api": { + "base_url": "local://pinecone-mcp", + "content_type": "application/json" + }, "tools": [ - { "name": "vector_authenticate", "description": "Store Pinecone API key.", "inputSchema": { "type": "object", "properties": { "api_key": { "type": "string" }, "environment": { "type": "string" } }, "required": ["api_key"] } }, - { "name": "vector_list_collections", "description": "List indexes (Pinecone calls them indexes).", "inputSchema": { "type": "object", "properties": {} } }, - { "name": "vector_create_collection", "description": "Create a new index. Pinecone-specific: dimension + metric required.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" }, "dimension": { "type": "integer" }, "metric": { "type": "string", "enum": ["cosine", "euclidean", "dotproduct"] } }, "required": ["name", "dimension"] } }, - { "name": "vector_delete_collection", "description": "Delete an index.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"] } }, - { "name": "vector_upsert", "description": "Insert/update vectors with optional metadata + namespace.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "vectors": { "type": "array" }, "namespace": { "type": "string" } }, "required": ["collection", "vectors"] } }, - { "name": "vector_query", "description": "Similarity search. Supports metadata filter + namespace.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "query": { "type": "array" }, "top_k": { "type": "integer" }, "namespace": { "type": "string" }, "filter": { "type": "object" } }, "required": ["collection", "query"] } }, - { "name": "vector_delete", "description": "Delete vectors by id, namespace, or filter.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "ids": { "type": "array" }, "namespace": { "type": "string" }, "filter": { "type": "object" } }, "required": ["collection"] } } + { + "name": "vector_authenticate", + "description": "Store Pinecone API key.", + "inputSchema": { + "type": "object", + "properties": { + "api_key": { + "type": "string" + }, + "environment": { + "type": "string" + } + }, + "required": [ + "api_key" + ] + } + }, + { + "name": "vector_list_collections", + "description": "List indexes (Pinecone calls them indexes).", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "vector_create_collection", + "description": "Create a new index. Pinecone-specific: dimension + metric required.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "dimension": { + "type": "integer" + }, + "metric": { + "type": "string", + "enum": [ + "cosine", + "euclidean", + "dotproduct" + ] + } + }, + "required": [ + "name", + "dimension" + ] + } + }, + { + "name": "vector_delete_collection", + "description": "Delete an index.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + }, + "required": [ + "name" + ] + } + }, + { + "name": "vector_upsert", + "description": "Insert/update vectors with optional metadata + namespace.", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string" + }, + "vectors": { + "type": "array" + }, + "namespace": { + "type": "string" + } + }, + "required": [ + "collection", + "vectors" + ] + } + }, + { + "name": "vector_query", + "description": "Similarity search. Supports metadata filter + namespace.", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string" + }, + "query": { + "type": "array" + }, + "top_k": { + "type": "integer" + }, + "namespace": { + "type": "string" + }, + "filter": { + "type": "object" + } + }, + "required": [ + "collection", + "query" + ] + } + }, + { + "name": "vector_delete", + "description": "Delete vectors by id, namespace, or filter.", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string" + }, + "ids": { + "type": "array" + }, + "namespace": { + "type": "string" + }, + "filter": { + "type": "object" + } + }, + "required": [ + "collection" + ] + } + } ] } diff --git a/cartridges/pmpl-mcp/cartridge.json b/cartridges/pmpl-mcp/cartridge.json index 069ff750..5bb583d5 100644 --- a/cartridges/pmpl-mcp/cartridge.json +++ b/cartridges/pmpl-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "PMPL licence chain verification and artefact hashing", "domain": "legal", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/postgresql-mcp/cartridge.json b/cartridges/postgresql-mcp/cartridge.json index 5536a85d..21af55e5 100644 --- a/cartridges/postgresql-mcp/cartridge.json +++ b/cartridges/postgresql-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "PostgreSQL gateway with full transaction support, connection pooling, and query lifecycle management.", "domain": "Database", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/prometheus-mcp/cartridge.json b/cartridges/prometheus-mcp/cartridge.json index 97b107e1..c4d66ab4 100644 --- a/cartridges/prometheus-mcp/cartridge.json +++ b/cartridges/prometheus-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Prometheus monitoring cartridge -- instant and range queries (PromQL), target discovery, alert rule listing, label/value browsing, metric metadata, series listing, and runtime/build info via the Prometheus HTTP API v1", "domain": "Monitoring", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/proof-mcp/cartridge.json b/cartridges/proof-mcp/cartridge.json index d917077a..9ededa80 100644 --- a/cartridges/proof-mcp/cartridge.json +++ b/cartridges/proof-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Proof verification lifecycle manager. Manages sessions across Lean, Coq, Agda, Isabelle, Idris2, Z3, CVC5. State machine: idle -> loading -> verifying -> verified/failed.", "domain": "Formal Verification", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/pypi-mcp/cartridge.json b/cartridges/pypi-mcp/cartridge.json index 883bae8a..7f323eb3 100644 --- a/cartridges/pypi-mcp/cartridge.json +++ b/cartridges/pypi-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "PyPI registry cartridge -- Python package search, metadata retrieval, version listing, download stats, dependency analysis, maintainer lookup, classifier browsing, and vulnerability advisory queries via the PyPI JSON API and Warehouse API", "domain": "Registry", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/qdrant-mcp/cartridge.json b/cartridges/qdrant-mcp/cartridge.json index 5a392165..e1d31e1d 100644 --- a/cartridges/qdrant-mcp/cartridge.json +++ b/cartridges/qdrant-mcp/cartridge.json @@ -5,19 +5,160 @@ "name": "qdrant-mcp", "version": "0.1.0", "status": "stub", - "description": "Qdrant vector DB — Rust-native; payloads + filtering; sparse + dense vectors; self-host or Qdrant Cloud.", + "description": "Qdrant vector DB \u2014 Rust-native; payloads + filtering; sparse + dense vectors; self-host or Qdrant Cloud.", "domain": "vector", + "category": "domain", "tier": "Teranga", - "protocols": ["MCP", "REST", "gRPC"], - "auth": { "method": "api_key", "env_var": "QDRANT_API_KEY", "credential_source": "Qdrant Cloud dashboard or self-hosted bearer." }, - "api": { "base_url": "local://qdrant-mcp", "content_type": "application/json" }, + "protocols": [ + "MCP", + "REST", + "gRPC" + ], + "auth": { + "method": "api_key", + "env_var": "QDRANT_API_KEY", + "credential_source": "Qdrant Cloud dashboard or self-hosted bearer." + }, + "api": { + "base_url": "local://qdrant-mcp", + "content_type": "application/json" + }, "tools": [ - { "name": "vector_authenticate", "description": "Store Qdrant URL + API key.", "inputSchema": { "type": "object", "properties": { "url": { "type": "string" }, "api_key": { "type": "string" } }, "required": ["url"] } }, - { "name": "vector_list_collections", "description": "List collections.", "inputSchema": { "type": "object", "properties": {} } }, - { "name": "vector_create_collection", "description": "Create a collection. Vector params: size (dim) + distance metric.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" }, "vector_size": { "type": "integer" }, "distance": { "type": "string", "enum": ["Cosine", "Euclid", "Dot"] } }, "required": ["name", "vector_size"] } }, - { "name": "vector_delete_collection", "description": "Delete a collection.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"] } }, - { "name": "vector_upsert", "description": "Insert/update points with payload.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "points": { "type": "array" } }, "required": ["collection", "points"] } }, - { "name": "vector_query", "description": "Search by vector with payload filter + score threshold.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "vector": { "type": "array" }, "limit": { "type": "integer" }, "filter": { "type": "object" }, "score_threshold": { "type": "number" } }, "required": ["collection", "vector"] } }, - { "name": "vector_delete", "description": "Delete points by id or filter.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "ids": { "type": "array" }, "filter": { "type": "object" } }, "required": ["collection"] } } + { + "name": "vector_authenticate", + "description": "Store Qdrant URL + API key.", + "inputSchema": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "api_key": { + "type": "string" + } + }, + "required": [ + "url" + ] + } + }, + { + "name": "vector_list_collections", + "description": "List collections.", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "vector_create_collection", + "description": "Create a collection. Vector params: size (dim) + distance metric.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vector_size": { + "type": "integer" + }, + "distance": { + "type": "string", + "enum": [ + "Cosine", + "Euclid", + "Dot" + ] + } + }, + "required": [ + "name", + "vector_size" + ] + } + }, + { + "name": "vector_delete_collection", + "description": "Delete a collection.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + }, + "required": [ + "name" + ] + } + }, + { + "name": "vector_upsert", + "description": "Insert/update points with payload.", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string" + }, + "points": { + "type": "array" + } + }, + "required": [ + "collection", + "points" + ] + } + }, + { + "name": "vector_query", + "description": "Search by vector with payload filter + score threshold.", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string" + }, + "vector": { + "type": "array" + }, + "limit": { + "type": "integer" + }, + "filter": { + "type": "object" + }, + "score_threshold": { + "type": "number" + } + }, + "required": [ + "collection", + "vector" + ] + } + }, + { + "name": "vector_delete", + "description": "Delete points by id or filter.", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string" + }, + "ids": { + "type": "array" + }, + "filter": { + "type": "object" + } + }, + "required": [ + "collection" + ] + } + } ] } diff --git a/cartridges/queues-mcp/cartridge.json b/cartridges/queues-mcp/cartridge.json index faa1163a..d3182105 100644 --- a/cartridges/queues-mcp/cartridge.json +++ b/cartridges/queues-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Message queue bridge (Redis Streams, RabbitMQ, NATS)", "domain": "messaging", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/railway-mcp/cartridge.json b/cartridges/railway-mcp/cartridge.json index 67c9b764..414986bd 100644 --- a/cartridges/railway-mcp/cartridge.json +++ b/cartridges/railway-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Railway GraphQL API v2 cartridge -- project, service, deployment, environment variable, domain, log, and metrics management", "domain": "Cloud", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/redis-mcp/cartridge.json b/cartridges/redis-mcp/cartridge.json index 4043d1ce..f90879c1 100644 --- a/cartridges/redis-mcp/cartridge.json +++ b/cartridges/redis-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Redis gateway. Key-value operations, sorted sets, pub/sub, streams, and Lua scripting via session slots.", "domain": "Database", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/render-mcp/cartridge.json b/cartridges/render-mcp/cartridge.json index cc1acdf8..711a5b1b 100644 --- a/cartridges/render-mcp/cartridge.json +++ b/cartridges/render-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "Render REST API v1 cartridge -- services, deploys, env groups, custom domains, jobs, suspend/resume, and bandwidth monitoring", "domain": "Cloud", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/replicate-mcp/cartridge.json b/cartridges/replicate-mcp/cartridge.json index 3b2ee509..bcaeb9e5 100644 --- a/cartridges/replicate-mcp/cartridge.json +++ b/cartridges/replicate-mcp/cartridge.json @@ -5,17 +5,109 @@ "name": "replicate-mcp", "version": "0.1.0", "status": "stub", - "description": "Replicate hosted ML models — image generation (Stable Diffusion, FLUX), video (Veo, Kling), upscaling, vision (LLaVA), audio (MusicGen). Async prediction model with polling.", + "description": "Replicate hosted ML models \u2014 image generation (Stable Diffusion, FLUX), video (Veo, Kling), upscaling, vision (LLaVA), audio (MusicGen). Async prediction model with polling.", "domain": "multimodal", + "category": "domain", "tier": "Teranga", - "protocols": ["MCP", "REST"], - "auth": { "method": "api_token", "env_var": "REPLICATE_API_TOKEN", "credential_source": "Replicate account → API tokens." }, - "api": { "base_url": "local://replicate-mcp", "content_type": "application/json" }, + "protocols": [ + "MCP", + "REST" + ], + "auth": { + "method": "api_token", + "env_var": "REPLICATE_API_TOKEN", + "credential_source": "Replicate account \u2192 API tokens." + }, + "api": { + "base_url": "local://replicate-mcp", + "content_type": "application/json" + }, "tools": [ - { "name": "media_authenticate", "description": "Store Replicate API token.", "inputSchema": { "type": "object", "properties": { "api_token": { "type": "string" } }, "required": ["api_token"] } }, - { "name": "media_run_model", "description": "Run a model by owner/name:version with inputs. Returns prediction_id; poll via media_get_prediction.", "inputSchema": { "type": "object", "properties": { "model": { "type": "string", "description": "Format owner/name or owner/name:version" }, "inputs": { "type": "object" }, "webhook": { "type": "string" } }, "required": ["model", "inputs"] } }, - { "name": "media_list_models", "description": "Search or list models in the Replicate catalog by collection/owner/name.", "inputSchema": { "type": "object", "properties": { "query": { "type": "string" }, "owner": { "type": "string" }, "collection": { "type": "string" } } } }, - { "name": "media_get_prediction", "description": "Get status + output of a prediction.", "inputSchema": { "type": "object", "properties": { "prediction_id": { "type": "string" } }, "required": ["prediction_id"] } }, - { "name": "media_cancel_prediction", "description": "Cancel a running prediction.", "inputSchema": { "type": "object", "properties": { "prediction_id": { "type": "string" } }, "required": ["prediction_id"] } } + { + "name": "media_authenticate", + "description": "Store Replicate API token.", + "inputSchema": { + "type": "object", + "properties": { + "api_token": { + "type": "string" + } + }, + "required": [ + "api_token" + ] + } + }, + { + "name": "media_run_model", + "description": "Run a model by owner/name:version with inputs. Returns prediction_id; poll via media_get_prediction.", + "inputSchema": { + "type": "object", + "properties": { + "model": { + "type": "string", + "description": "Format owner/name or owner/name:version" + }, + "inputs": { + "type": "object" + }, + "webhook": { + "type": "string" + } + }, + "required": [ + "model", + "inputs" + ] + } + }, + { + "name": "media_list_models", + "description": "Search or list models in the Replicate catalog by collection/owner/name.", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "collection": { + "type": "string" + } + } + } + }, + { + "name": "media_get_prediction", + "description": "Get status + output of a prediction.", + "inputSchema": { + "type": "object", + "properties": { + "prediction_id": { + "type": "string" + } + }, + "required": [ + "prediction_id" + ] + } + }, + { + "name": "media_cancel_prediction", + "description": "Cancel a running prediction.", + "inputSchema": { + "type": "object", + "properties": { + "prediction_id": { + "type": "string" + } + }, + "required": [ + "prediction_id" + ] + } + } ] } diff --git a/cartridges/reposystem-mcp/cartridge.json b/cartridges/reposystem-mcp/cartridge.json index 8ab668e8..8780dcaa 100644 --- a/cartridges/reposystem-mcp/cartridge.json +++ b/cartridges/reposystem-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Reposystem repository management. Lists managed repos, checks health, syncs mirrors, and runs RSR compliance audits.", "domain": "Repository Management", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/research-mcp/cartridge.json b/cartridges/research-mcp/cartridge.json index 638c89a3..5753b4be 100644 --- a/cartridges/research-mcp/cartridge.json +++ b/cartridges/research-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Academic paper search (Semantic Scholar, OpenAlex)", "domain": "research", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/rokur-mcp/cartridge.json b/cartridges/rokur-mcp/cartridge.json index 15f31c74..db1cd6f6 100644 --- a/cartridges/rokur-mcp/cartridge.json +++ b/cartridges/rokur-mcp/cartridge.json @@ -4,8 +4,9 @@ "copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) ", "name": "rokur-mcp", "version": "0.1.0", - "description": "Rokur — Svalinn secrets GUI authorisation layer", + "description": "Rokur \u2014 Svalinn secrets GUI authorisation layer", "domain": "security", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/sanctify-mcp/cartridge.json b/cartridges/sanctify-mcp/cartridge.json index 0344b870..41349743 100644 --- a/cartridges/sanctify-mcp/cartridge.json +++ b/cartridges/sanctify-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "1.0.0", "description": "Sanctify Cartridge \u2014 PHP lint and deviation detection tools", "domain": "Code Quality", + "category": "domain", "tier": "Ayo", "auth": { "method": "none" diff --git a/cartridges/search-mcp/cartridge.json b/cartridges/search-mcp/cartridge.json index f57b3253..9eb14ead 100644 --- a/cartridges/search-mcp/cartridge.json +++ b/cartridges/search-mcp/cartridge.json @@ -7,6 +7,7 @@ "status": "stub", "description": "Web search across multiple providers (Tavily, Brave, Exa, Perplexity) behind one cartridge.", "domain": "research", + "category": "domain", "tier": "Teranga", "protocols": [ "MCP", @@ -30,7 +31,12 @@ "properties": { "provider": { "type": "string", - "enum": ["tavily", "brave", "exa", "perplexity"], + "enum": [ + "tavily", + "brave", + "exa", + "perplexity" + ], "description": "Provider to authenticate." }, "api_key": { @@ -38,7 +44,10 @@ "description": "API key from the provider's dashboard." } }, - "required": ["provider", "api_key"] + "required": [ + "provider", + "api_key" + ] } }, { @@ -49,7 +58,12 @@ "properties": { "provider": { "type": "string", - "enum": ["tavily", "brave", "exa", "perplexity"], + "enum": [ + "tavily", + "brave", + "exa", + "perplexity" + ], "description": "Which provider to query. Each has different strengths: tavily = LLM-optimised summaries; brave = privacy-first index; exa = neural search over high-quality content; perplexity = Q&A-style answers with citations." }, "query": { @@ -65,21 +79,34 @@ }, "include_domains": { "type": "array", - "items": { "type": "string" }, + "items": { + "type": "string" + }, "description": "Optional allow-list of domains." }, "exclude_domains": { "type": "array", - "items": { "type": "string" }, + "items": { + "type": "string" + }, "description": "Optional deny-list of domains." }, "freshness": { "type": "string", - "enum": ["day", "week", "month", "year", "any"], + "enum": [ + "day", + "week", + "month", + "year", + "any" + ], "description": "Recency filter (provider-best-effort; not all providers honour all values)." } }, - "required": ["provider", "query"] + "required": [ + "provider", + "query" + ] } }, { @@ -90,7 +117,10 @@ "properties": { "provider": { "type": "string", - "enum": ["perplexity", "tavily"], + "enum": [ + "perplexity", + "tavily" + ], "description": "Only providers that support answer-mode (perplexity, tavily)." }, "question": { @@ -103,7 +133,10 @@ "description": "Provider-specific model identifier. Optional; defaults to provider's standard model." } }, - "required": ["provider", "question"] + "required": [ + "provider", + "question" + ] } }, { @@ -114,18 +147,27 @@ "properties": { "provider": { "type": "string", - "enum": ["tavily", "exa"], + "enum": [ + "tavily", + "exa" + ], "description": "Only providers that support extraction (tavily, exa)." }, "urls": { "type": "array", - "items": { "type": "string", "format": "uri" }, + "items": { + "type": "string", + "format": "uri" + }, "minItems": 1, "maxItems": 20, "description": "URLs to extract content from." } }, - "required": ["provider", "urls"] + "required": [ + "provider", + "urls" + ] } } ] diff --git a/cartridges/secrets-mcp/cartridge.json b/cartridges/secrets-mcp/cartridge.json index f31a7842..3eca33f3 100644 --- a/cartridges/secrets-mcp/cartridge.json +++ b/cartridges/secrets-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Secrets management (Vault, SOPS, env-vault)", "domain": "security", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/sentry-mcp/cartridge.json b/cartridges/sentry-mcp/cartridge.json index a2b0ff9f..5a25d504 100644 --- a/cartridges/sentry-mcp/cartridge.json +++ b/cartridges/sentry-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Sentry error tracking cartridge -- issue listing, event retrieval, project browsing, release management, DSN lookup, team listing, tag search, error resolution, breadcrumb inspection, and performance transaction queries via the Sentry API", "domain": "Monitoring", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/slack-mcp/cartridge.json b/cartridges/slack-mcp/cartridge.json index 1bc69459..8e0260d1 100644 --- a/cartridges/slack-mcp/cartridge.json +++ b/cartridges/slack-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Slack workspace gateway. Send messages, list channels, read threads, search messages, and manage users.", "domain": "Communications", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/ssg-mcp/cartridge.json b/cartridges/ssg-mcp/cartridge.json index 257cacfd..cc4f2195 100644 --- a/cartridges/ssg-mcp/cartridge.json +++ b/cartridges/ssg-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Static site generator (Hugo, Zola, Astro, Casket)", "domain": "web", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/stapeln-mcp/cartridge.json b/cartridges/stapeln-mcp/cartridge.json index 1c154e9d..1eceb4ba 100644 --- a/cartridges/stapeln-mcp/cartridge.json +++ b/cartridges/stapeln-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Stapeln container stack manager. Deploy, scale, and monitor container stacks using Chainguard base images.", "domain": "Container Orchestration", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/supabase-mcp/cartridge.json b/cartridges/supabase-mcp/cartridge.json index 367f68de..4cae6262 100644 --- a/cartridges/supabase-mcp/cartridge.json +++ b/cartridges/supabase-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Supabase gateway. PostgreSQL queries, Auth user management, Storage file operations, and Edge Functions.", "domain": "Database", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/telegram-mcp/cartridge.json b/cartridges/telegram-mcp/cartridge.json index 022f54a2..64726675 100644 --- a/cartridges/telegram-mcp/cartridge.json +++ b/cartridges/telegram-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Telegram Bot API gateway. Send messages, manage chats, handle inline queries, and read updates.", "domain": "Communications", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/todoist-mcp/cartridge.json b/cartridges/todoist-mcp/cartridge.json index 77710e86..b50af193 100644 --- a/cartridges/todoist-mcp/cartridge.json +++ b/cartridges/todoist-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "Todoist task manager cartridge -- task search, project listing, task creation, task completion, label management, comment retrieval, section browsing, filter queries, activity log access, and productivity stats via the Todoist REST API v2", "domain": "Productivity", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/toolchain-mcp/cartridge.json b/cartridges/toolchain-mcp/cartridge.json index bf227f6d..ccc490df 100644 --- a/cartridges/toolchain-mcp/cartridge.json +++ b/cartridges/toolchain-mcp/cartridge.json @@ -7,6 +7,7 @@ "status": "ffi_only", "description": "Toolchain orchestrator. Mints, provisions, and configures language toolchains composed from lsp-mcp, dap-mcp, lang-mcp, and bsp-mcp. Integrates with PanLL panels via Groove and supports collaborative Burble sessions for pair-debugging and pair-programming workflows.", "domain": "Language Tools", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", @@ -24,7 +25,7 @@ "tools": [ { "name": "toolchain_mint", - "description": "Mint a new toolchain configuration for a language workspace. Discovers available servers (LSP/DAP/BSP/lang) and returns a toolchain ID. Does not start any servers — call toolchain_provision to do that.", + "description": "Mint a new toolchain configuration for a language workspace. Discovers available servers (LSP/DAP/BSP/lang) and returns a toolchain ID. Does not start any servers \u2014 call toolchain_provision to do that.", "inputSchema": { "type": "object", "properties": { @@ -148,7 +149,7 @@ }, "panel_id": { "type": "string", - "description": "Target PanLL panel ID (optional — omit to broadcast)" + "description": "Target PanLL panel ID (optional \u2014 omit to broadcast)" } }, "required": [ diff --git a/cartridges/turso-mcp/cartridge.json b/cartridges/turso-mcp/cartridge.json index 17d524b9..1127b3ce 100644 --- a/cartridges/turso-mcp/cartridge.json +++ b/cartridges/turso-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Turso libSQL gateway. Edge SQLite databases with multi-database support and embedded replica sync.", "domain": "Database", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/typed-wasm-mcp/cartridge.json b/cartridges/typed-wasm-mcp/cartridge.json index 499f0b54..d03af000 100644 --- a/cartridges/typed-wasm-mcp/cartridge.json +++ b/cartridges/typed-wasm-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "AffineScript typed-wasm gateway. Compiles .affine source to Wasm with the typed-wasm Level 7/10 ownership contract, runs the intra-module verifier, and runs the cross-module boundary verifier between two compiled modules.", "domain": "Compiler", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/ums-mcp/cartridge.json b/cartridges/ums-mcp/cartridge.json index c7a0f3a1..7556a7fe 100644 --- a/cartridges/ums-mcp/cartridge.json +++ b/cartridges/ums-mcp/cartridge.json @@ -4,8 +4,9 @@ "copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) ", "name": "ums-mcp", "version": "0.1.0", - "description": "Universal Map Specification — level editor and validator", + "description": "Universal Map Specification \u2014 level editor and validator", "domain": "gaming", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/vault-mcp/cartridge.json b/cartridges/vault-mcp/cartridge.json index 15e8f71c..45246b15 100644 --- a/cartridges/vault-mcp/cartridge.json +++ b/cartridges/vault-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Vault CLI credential broker (execute, list, verify, rotate)", "domain": "security", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/verisimdb-mcp/cartridge.json b/cartridges/verisimdb-mcp/cartridge.json index be225f44..68b2ccf9 100644 --- a/cartridges/verisimdb-mcp/cartridge.json +++ b/cartridges/verisimdb-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "VeriSimDB verified simulation database. Stores octadic records with formal drift detection and full audit trail.", "domain": "Database", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/vext-mcp/cartridge.json b/cartridges/vext-mcp/cartridge.json index 32137f54..a2d08f04 100644 --- a/cartridges/vext-mcp/cartridge.json +++ b/cartridges/vext-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Vext message verification and attestation chain. Verifies signed messages, checks attestation chains, and appends verified payloads.", "domain": "Security", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/vordr-mcp/cartridge.json b/cartridges/vordr-mcp/cartridge.json index 3fbe47cd..7a887318 100644 --- a/cartridges/vordr-mcp/cartridge.json +++ b/cartridges/vordr-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.1.0", "description": "Vordr container integrity monitor. BLAKE3 hashing to detect tampering and drift in container images.", "domain": "Security", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/cartridges/weaviate-mcp/cartridge.json b/cartridges/weaviate-mcp/cartridge.json index 2e325598..eda20cfb 100644 --- a/cartridges/weaviate-mcp/cartridge.json +++ b/cartridges/weaviate-mcp/cartridge.json @@ -5,19 +5,157 @@ "name": "weaviate-mcp", "version": "0.1.0", "status": "stub", - "description": "Weaviate vector DB — hybrid (vector + BM25 + filter) search, schema-driven classes, modular vectorisers; self-host or cloud.", + "description": "Weaviate vector DB \u2014 hybrid (vector + BM25 + filter) search, schema-driven classes, modular vectorisers; self-host or cloud.", "domain": "vector", + "category": "domain", "tier": "Teranga", - "protocols": ["MCP", "REST", "gRPC", "GraphQL"], - "auth": { "method": "api_key", "env_var": "WEAVIATE_API_KEY", "credential_source": "Weaviate Cloud Console or self-hosted instance bearer." }, - "api": { "base_url": "local://weaviate-mcp", "content_type": "application/json" }, + "protocols": [ + "MCP", + "REST", + "gRPC", + "GraphQL" + ], + "auth": { + "method": "api_key", + "env_var": "WEAVIATE_API_KEY", + "credential_source": "Weaviate Cloud Console or self-hosted instance bearer." + }, + "api": { + "base_url": "local://weaviate-mcp", + "content_type": "application/json" + }, "tools": [ - { "name": "vector_authenticate", "description": "Store Weaviate endpoint URL + API key.", "inputSchema": { "type": "object", "properties": { "endpoint": { "type": "string" }, "api_key": { "type": "string" } }, "required": ["endpoint"] } }, - { "name": "vector_list_collections", "description": "List classes (Weaviate calls collections 'classes').", "inputSchema": { "type": "object", "properties": {} } }, - { "name": "vector_create_collection", "description": "Create a class with property schema + vectoriser.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" }, "properties": { "type": "array" }, "vectorizer": { "type": "string" } }, "required": ["name"] } }, - { "name": "vector_delete_collection", "description": "Delete a class and all its objects.", "inputSchema": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"] } }, - { "name": "vector_upsert", "description": "Insert/update objects; vectoriser computes embedding if not provided.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "objects": { "type": "array" } }, "required": ["collection", "objects"] } }, - { "name": "vector_query", "description": "Hybrid (vector + BM25 + filter) search. Set alpha to weight vector vs BM25.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "query": { "type": "string" }, "vector": { "type": "array" }, "alpha": { "type": "number" }, "limit": { "type": "integer" }, "where": { "type": "object" } }, "required": ["collection"] } }, - { "name": "vector_delete", "description": "Delete objects by id or where-filter.", "inputSchema": { "type": "object", "properties": { "collection": { "type": "string" }, "ids": { "type": "array" }, "where": { "type": "object" } }, "required": ["collection"] } } + { + "name": "vector_authenticate", + "description": "Store Weaviate endpoint URL + API key.", + "inputSchema": { + "type": "object", + "properties": { + "endpoint": { + "type": "string" + }, + "api_key": { + "type": "string" + } + }, + "required": [ + "endpoint" + ] + } + }, + { + "name": "vector_list_collections", + "description": "List classes (Weaviate calls collections 'classes').", + "inputSchema": { + "type": "object", + "properties": {} + } + }, + { + "name": "vector_create_collection", + "description": "Create a class with property schema + vectoriser.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "properties": { + "type": "array" + }, + "vectorizer": { + "type": "string" + } + }, + "required": [ + "name" + ] + } + }, + { + "name": "vector_delete_collection", + "description": "Delete a class and all its objects.", + "inputSchema": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + }, + "required": [ + "name" + ] + } + }, + { + "name": "vector_upsert", + "description": "Insert/update objects; vectoriser computes embedding if not provided.", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string" + }, + "objects": { + "type": "array" + } + }, + "required": [ + "collection", + "objects" + ] + } + }, + { + "name": "vector_query", + "description": "Hybrid (vector + BM25 + filter) search. Set alpha to weight vector vs BM25.", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string" + }, + "query": { + "type": "string" + }, + "vector": { + "type": "array" + }, + "alpha": { + "type": "number" + }, + "limit": { + "type": "integer" + }, + "where": { + "type": "object" + } + }, + "required": [ + "collection" + ] + } + }, + { + "name": "vector_delete", + "description": "Delete objects by id or where-filter.", + "inputSchema": { + "type": "object", + "properties": { + "collection": { + "type": "string" + }, + "ids": { + "type": "array" + }, + "where": { + "type": "object" + } + }, + "required": [ + "collection" + ] + } + } ] } diff --git a/cartridges/whisper-mcp/cartridge.json b/cartridges/whisper-mcp/cartridge.json index 464e3635..fcc850b7 100644 --- a/cartridges/whisper-mcp/cartridge.json +++ b/cartridges/whisper-mcp/cartridge.json @@ -7,14 +7,112 @@ "status": "stub", "description": "Speech-to-text via OpenAI Whisper API + local whisper.cpp fallback. Transcription, language detection, optional translation to English.", "domain": "multimodal", + "category": "domain", "tier": "Teranga", - "protocols": ["MCP", "REST"], - "auth": { "method": "optional_api_key", "env_var": "OPENAI_API_KEY", "credential_source": "Required for API backend; local whisper.cpp backend needs no auth." }, - "api": { "base_url": "local://whisper-mcp", "content_type": "application/json" }, + "protocols": [ + "MCP", + "REST" + ], + "auth": { + "method": "optional_api_key", + "env_var": "OPENAI_API_KEY", + "credential_source": "Required for API backend; local whisper.cpp backend needs no auth." + }, + "api": { + "base_url": "local://whisper-mcp", + "content_type": "application/json" + }, "tools": [ - { "name": "audio_authenticate", "description": "Store OpenAI key (for API backend) or path to whisper.cpp binary (for local).", "inputSchema": { "type": "object", "properties": { "backend": { "type": "string", "enum": ["openai", "local"] }, "api_key": { "type": "string" }, "model_path": { "type": "string" } }, "required": ["backend"] } }, - { "name": "audio_transcribe", "description": "Transcribe audio file or URL to text. Word-level timestamps optional.", "inputSchema": { "type": "object", "properties": { "source": { "type": "string" }, "language": { "type": "string" }, "timestamps": { "type": "boolean" }, "model": { "type": "string", "enum": ["whisper-1", "tiny", "base", "small", "medium", "large", "large-v3"] } }, "required": ["source"] } }, - { "name": "audio_detect_language", "description": "Detect spoken language from a short audio sample.", "inputSchema": { "type": "object", "properties": { "source": { "type": "string" } }, "required": ["source"] } }, - { "name": "audio_translate", "description": "Transcribe and translate any source language to English.", "inputSchema": { "type": "object", "properties": { "source": { "type": "string" }, "model": { "type": "string" } }, "required": ["source"] } } + { + "name": "audio_authenticate", + "description": "Store OpenAI key (for API backend) or path to whisper.cpp binary (for local).", + "inputSchema": { + "type": "object", + "properties": { + "backend": { + "type": "string", + "enum": [ + "openai", + "local" + ] + }, + "api_key": { + "type": "string" + }, + "model_path": { + "type": "string" + } + }, + "required": [ + "backend" + ] + } + }, + { + "name": "audio_transcribe", + "description": "Transcribe audio file or URL to text. Word-level timestamps optional.", + "inputSchema": { + "type": "object", + "properties": { + "source": { + "type": "string" + }, + "language": { + "type": "string" + }, + "timestamps": { + "type": "boolean" + }, + "model": { + "type": "string", + "enum": [ + "whisper-1", + "tiny", + "base", + "small", + "medium", + "large", + "large-v3" + ] + } + }, + "required": [ + "source" + ] + } + }, + { + "name": "audio_detect_language", + "description": "Detect spoken language from a short audio sample.", + "inputSchema": { + "type": "object", + "properties": { + "source": { + "type": "string" + } + }, + "required": [ + "source" + ] + } + }, + { + "name": "audio_translate", + "description": "Transcribe and translate any source language to English.", + "inputSchema": { + "type": "object", + "properties": { + "source": { + "type": "string" + }, + "model": { + "type": "string" + } + }, + "required": [ + "source" + ] + } + } ] } diff --git a/cartridges/zotero-mcp/cartridge.json b/cartridges/zotero-mcp/cartridge.json index f1baf120..2157feba 100644 --- a/cartridges/zotero-mcp/cartridge.json +++ b/cartridges/zotero-mcp/cartridge.json @@ -6,6 +6,7 @@ "version": "0.2.0", "description": "Zotero reference manager cartridge -- library search, item retrieval, collection browsing, tag management, attachment access, citation export, note extraction, saved search execution, group library access, and bibliography generation via the Zotero Web API v3", "domain": "Research", + "category": "domain", "tier": "Ayo", "protocols": [ "MCP", diff --git a/elixir/lib/boj_rest/application.ex b/elixir/lib/boj_rest/application.ex index bf87b7d9..442c69ca 100644 --- a/elixir/lib/boj_rest/application.ex +++ b/elixir/lib/boj_rest/application.ex @@ -27,7 +27,20 @@ defmodule BojRest.Application do def start(_type, _args) do port = Application.get_env(:boj_rest, :port, 7700) bind_ip = parse_bind_ip(Application.get_env(:boj_rest, :bind_ip, "127.0.0.1")) - cartridges_root = Application.get_env(:boj_rest, :cartridges_root) + # Resolve cartridges root via fallback chain: + # Application env (:boj_rest, :cartridges_root) + # → BOJ_CARTRIDGES_PATH environment variable + # → default "./cartridges" (preserves historical bundled-cartridges behaviour). + # + # Operators wanting on-demand fetch from hyperpolymath/boj-server-cartridges set + # BOJ_CARTRIDGES_PATH to their local cache (e.g. "~/.boj/cartridges") and arrange + # for tray to populate that path. See standards ADR-002 and the + # boj-server-cartridges README for the full extraction story. + cartridges_root = + case Application.get_env(:boj_rest, :cartridges_root) do + nil -> System.get_env("BOJ_CARTRIDGES_PATH") || "./cartridges" + v -> v + end data_dir = Application.get_env(:boj_rest, :data_dir, "/data") diff --git a/schemas/SCHEMA-MIRROR.md b/schemas/SCHEMA-MIRROR.md new file mode 100644 index 00000000..de5474aa --- /dev/null +++ b/schemas/SCHEMA-MIRROR.md @@ -0,0 +1,28 @@ + + + +# Cartridge schema mirror + +The file `cartridge-v1.json` in this directory is a **vendored mirror** of the canonical schema living at: + +- **Canonical home:** [`hyperpolymath/standards`](https://github.com/hyperpolymath/standards/blob/main/cartridges/cartridge-v1.json) (filed as PR [#200](https://github.com/hyperpolymath/standards/pull/200) on 2026-05-26). +- **Canonical URL:** `https://hyperpolymath.dev/standards/cartridges/cartridge-v1.json` + +When the standards PR merges, this file should be SHA-pinned to the merged content. Pinning ceremony: + +1. After standards#200 merges, capture the commit SHA in `hyperpolymath/standards`. +2. Capture the SHA-256 of `cartridges/cartridge-v1.json` at that commit. +3. Update [`PINNED-SHA`](PINNED-SHA) in this directory with both values (commit SHA + file SHA-256). + +## Why mirror + +1. **Offline validation.** The Elixir BoJ catalog (`elixir/lib/boj_rest/catalog.ex`) reads cartridges from disk at boot; validation against the canonical URL would require network calls that are out of scope for the catalog. +2. **Reproducibility.** A given boj-server build must validate cartridges against a deterministic schema version, so the bundled mirror is the source of truth at runtime. + +## What if local and canonical disagree? + +Standards wins. Local mirror is always advancing toward standards. When standards moves to v2, this mirror will get a `cartridge-v2.json` and the consumer code will accept both v1 and v2 manifests for a deprecation period. + +See also: +- standards [ADR-002 — cartridge format canonical home](https://github.com/hyperpolymath/standards/blob/main/docs/decisions/ADR-002-cartridge-format-canonical-home.adoc) +- boj-server-cartridges [`schemas/SCHEMA-MIRROR.md`](https://github.com/hyperpolymath/boj-server-cartridges/blob/main/schemas/SCHEMA-MIRROR.md) (same content, different repo — keep both in sync) diff --git a/schemas/cartridge-v1.json b/schemas/cartridge-v1.json index d329ed07..2cc334e4 100644 --- a/schemas/cartridge-v1.json +++ b/schemas/cartridge-v1.json @@ -1,44 +1,57 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://boj.dev/schemas/cartridge/v1.json", - "title": "BoJ Cartridge Manifest", - "description": "Schema for BoJ Server cartridge manifests", + "$id": "https://hyperpolymath.dev/standards/cartridges/cartridge-v1.json", + "title": "BoJ Cartridge Manifest (canonical)", + "description": "Canonical schema for BoJ cartridge manifests. Mirrors the schema previously held in boj-server/schemas/cartridge-v1.json, expanded to admit the full BoJ server-role taxonomy (MCP, LSP, DAP, BSP, Debug, Format, Lint, Build, NeSy, Agentic, Fleet) per panll/src/abi/cartridge-schema.json v0.3.0. SPDX-License-Identifier: MPL-2.0.", "type": "object", "properties": { "$schema": { "type": "string", - "format": "uri" + "format": "uri", + "description": "Schema URL. Canonical form: https://hyperpolymath.dev/standards/cartridges/cartridge-v1.json" }, "spdx": { - "type": "string" + "type": "string", + "description": "SPDX license identifier (e.g. MPL-2.0)" }, "copyright": { "type": "string" }, "name": { "type": "string", - "pattern": "^[a-z0-9-]+-mcp$" + "description": "Lowercase kebab-case cartridge name with role suffix. The suffix indicates the server role this cartridge implements.", + "pattern": "^[a-z0-9]+(-[a-z0-9]+)*-(mcp|lsp|dap|bsp|debug|format|lint|build|nesy|agentic|fleet)$" }, "version": { "type": "string", - "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" + "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(-[a-z0-9.-]+)?$", + "description": "Semantic version. Pre-release suffix permitted." }, "description": { "type": "string" }, "domain": { - "type": "string" + "type": "string", + "description": "Functional domain (e.g. cloud, database, git, k8s, observability, proof-verification, ssg, orchestration). For cross-cutting cartridges, use cross-cutting." + }, + "category": { + "type": "string", + "enum": ["domain", "cross-cutting", "template"], + "description": "Taxonomy category. Domain cartridges live under cartridges/domains//. Cross-cutting under cartridges/cross-cutting/. Templates under cartridges/templates/." }, "tier": { "type": "string", - "enum": ["Teranga", "Shield", "Ayo"] + "enum": ["Teranga", "Shield", "Ayo"], + "description": "Trust tier. Teranga = core/always-available. Shield = security-critical/elevated-trust. Ayo = community-contributed." }, "protocols": { "type": "array", + "description": "Server protocols this cartridge speaks. A cartridge may expose more than one protocol if its role naturally spans them (e.g. MCP+REST). The role suffix in 'name' indicates the PRIMARY protocol.", "items": { "type": "string", - "enum": ["MCP", "REST", "GraphQL", "gRPC"] - } + "enum": ["MCP", "LSP", "DAP", "BSP", "REST", "GraphQL", "gRPC", "NeSy", "Agentic", "Fleet", "Format", "Lint", "Build", "Debug"] + }, + "minItems": 1 }, "auth": { "type": "object", @@ -60,7 +73,8 @@ "type": "object", "properties": { "base_url": { - "type": "string" + "type": "string", + "description": "Loopback URL the cartridge backend listens on. Form: local:// for the canonical loopback scheme, or http://127.0.0.1: for explicit-port form." }, "content_type": { "type": "string" @@ -68,46 +82,57 @@ }, "required": ["base_url", "content_type"] }, + "ports": { + "type": "object", + "description": "Port permissions for the cartridge runtime.", + "properties": { + "allowed": { + "type": "array", + "items": { "type": "integer", "minimum": 1, "maximum": 65535 } + }, + "denied": { + "type": "array", + "items": { "type": "integer", "minimum": 1, "maximum": 65535 } + } + }, + "required": ["allowed", "denied"] + }, "tools": { "type": "array", + "description": "Tool surface exposed to the host (MCP-style; LSP/DAP/BSP cartridges may declare their protocol-native operations here too, with inputSchema describing the expected payload).", "items": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "inputSchema": { - "type": "object" - } + "name": { "type": "string" }, + "description": { "type": "string" }, + "inputSchema": { "type": "object" } }, "required": ["name", "description", "inputSchema"] } }, - "ports": { + "states": { + "type": "array", + "description": "Optional state-machine states a cartridge backend transitions through (per panll v0.3.0). E.g. observe/orient/decide/act/halted for an Agentic cartridge.", + "items": { "type": "string" } + }, + "source": { "type": "object", - "description": "Port permissions for the cartridge", + "description": "Where this cartridge is fetched from when not bundled locally.", "properties": { - "allowed": { - "type": "array", - "items": { - "type": "integer", - "minimum": 1, - "maximum": 65535 - } + "registry": { + "type": "string", + "description": "Registry identifier. Canonical default: hyperpolymath/boj-server-cartridges" }, - "denied": { - "type": "array", - "items": { - "type": "integer", - "minimum": 1, - "maximum": 65535 - } + "path": { + "type": "string", + "description": "Path within the registry, e.g. cartridges/domains/cloud/mcp.cartridge" + }, + "sha256": { + "type": "string", + "pattern": "^[a-f0-9]{64}$", + "description": "Optional content hash for verification of fetched cartridge artifact." } - }, - "required": ["allowed", "denied"] + } } }, "required": [ @@ -118,6 +143,7 @@ "version", "description", "domain", + "category", "tier", "protocols", "auth",