From a99af46a66e405b9a47719c27b5a34eee083517b Mon Sep 17 00:00:00 2001 From: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Date: Wed, 20 May 2026 06:57:35 +0100 Subject: [PATCH 1/2] docs: add OpenSSF Scorecard + Software Heritage badges and CITATION.cff MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - **OpenSSF Scorecard** badge (numerical 0–10 score) added alongside the existing Best Practices boolean badge. Workflow `.github/workflows/scorecard.yml` already publishes results; just needed the badge for visible signal. - **Software Heritage** badge added — public GitHub repos are archived automatically by softwareheritage.org; badge surfaces the recognised digital-preservation credential. No setup required. - **CITATION.cff** created using the Citation File Format 1.2.0 standard. GitHub renders a "Cite this repository" button from this file. Includes authors, affiliation (The Open University), licence (MPL-2.0), keywords, and version. Update the `version:` and `date-released:` fields on each tag. - **README Citing section** documents the one-time Zenodo GitHub-integration setup for per-release DOI archiving. Zenodo enablement is owner-gated (must be done via zenodo.org dashboard); steps documented so it's actionable. REUSE compliance is deferred — separate from this PR — pending the licence-debt ledger work (PMPL→MPL-2.0 reconciliation, EXHIBIT-A/B LicenseRef wrapping, missing CC-BY-4.0 text). Revisit once that ledger closes. Co-Authored-By: Claude Opus 4.7 (1M context) --- CITATION.cff | 38 ++++++++++++++++++++++++++++++++++++++ README.md | 17 +++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 CITATION.cff diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 00000000..5490c6d1 --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,38 @@ +# Citation File Format — https://citation-file-format.github.io/ +# This file describes how to cite the boj-server software. +cff-version: 1.2.0 +title: "BoJ Server — Bundle of Joy MCP Server" +message: "If you use this software, please cite it using the metadata below." +type: software +authors: + - given-names: Jonathan + name-particle: D.A. + family-names: Jewell + email: j.d.a.jewell@open.ac.uk + affiliation: "The Open University" + alias: hyperpolymath +repository-code: "https://github.com/hyperpolymath/boj-server" +url: "https://github.com/hyperpolymath/boj-server" +abstract: >- + Bundle of Joy (BoJ) Server is a cartridge-based Model Context Protocol (MCP) + gateway. Each cartridge — covering databases, container runtimes, git forges, + Kubernetes, observability, secrets, IaC, cloud providers, and multi-instance + AI coordination — is a formally verified Idris2 ABI + Zig FFI + Deno/JS + adapter triple. The server exposes 115 cartridges through a unified stdio + MCP surface plus a local REST API on port 7700. A local-coord-mcp cartridge + provides loopback peer discovery, typed envelopes, claim/heartbeat/watchdog, + and master/journeyman/apprentice supervision for multi-agent AI workflows. +keywords: + - mcp + - model-context-protocol + - llm-tools + - formal-verification + - idris2 + - zig + - cartridge-architecture + - devops + - multi-agent + - ai-coordination +license: MPL-2.0 +version: 0.4.6 +date-released: "2026-04-27" diff --git a/README.md b/README.md index 1d20fee9..13319ac6 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ # boj-server [![OpenSSF Best Practices](https://img.shields.io/badge/OpenSSF-Best_Practices-green?logo=opensourcesecurity)](https://www.bestpractices.dev/en/projects/new?repo_url=https://github.com/hyperpolymath/boj-server) +[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/hyperpolymath/boj-server/badge)](https://scorecard.dev/viewer/?uri=github.com/hyperpolymath/boj-server) [![Glama MCP Server](https://glama.ai/mcp/servers/hyperpolymath/boj-server/badge)](https://glama.ai/mcp/servers/hyperpolymath/boj-server) [![Green Hosting](https://api.thegreenwebfoundation.org/greencheckimage/boj-server.net)](https://www.thegreenwebfoundation.org/green-web-check/?url=boj-server.net) +[![Software Heritage](https://archive.softwareheritage.org/badge/origin/https://github.com/hyperpolymath/boj-server/)](https://archive.softwareheritage.org/browse/origin/?origin_url=https://github.com/hyperpolymath/boj-server) BoJ (Bundle of Joy) is a unified MCP server that consolidates all hyperpolymath tooling into a single endpoint — GitHub, GitLab, Cloudflare, Vercel, Verpex, Gmail, Calendar, browser automation, research, ML, and 115 open-source cartridges. @@ -68,6 +70,21 @@ Run the coherence tests: npm test ``` +## Citing + +If you use BoJ Server in academic work, citation metadata is in [`CITATION.cff`](./CITATION.cff). GitHub renders a "Cite this repository" button in the sidebar from this file. + +Per-release DOIs are available via Zenodo. To enable them: + +1. Log in to [zenodo.org](https://zenodo.org/) with your GitHub account. +2. Account → GitHub → flip the **boj-server** repository toggle to on. +3. Cut a new GitHub release; Zenodo auto-archives it and mints a DOI. +4. Add the DOI badge to this README: + ```markdown + [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.XXXXXXX.svg)](https://doi.org/10.5281/zenodo.XXXXXXX) + ``` +5. Update the `doi:` field in `CITATION.cff` to match. + ## License MPL-2.0 — see [LICENSE](./LICENSE). From cf2356961187d4f41520bcaaabdfe3f8d46605d7 Mon Sep 17 00:00:00 2001 From: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com> Date: Wed, 20 May 2026 06:59:10 +0100 Subject: [PATCH 2/2] docs(glama): declare COORD_REQUIRE_NICKEL env var The bridge reads this in `nickel-validator.js:73` but it wasn't declared in glama.json. Completes the env-var manifest so MCP-aware clients can fully discover the server's runtime configuration surface. Co-Authored-By: Claude Opus 4.7 (1M context) --- glama.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/glama.json b/glama.json index a5095b51..6bce5899 100644 --- a/glama.json +++ b/glama.json @@ -44,6 +44,11 @@ "description": "URL for the local coordination bus backend.", "default": "http://127.0.0.1:7745" }, + "COORD_REQUIRE_NICKEL": { + "type": "string", + "description": "Set to '1' to enable strict Nickel-contract validation on coord_send_gated envelopes. Default off (envelopes validated permissively).", + "default": "0" + }, "BOJ_TOOL_SCOPE": { "type": "string", "description": "Advertised tool-surface scope. 'full' (or unset) advertises every tool (default, backward-compatible). 'core' advertises only the discovery/dispatch core (boj_health, boj_menu, boj_cartridges, boj_cartridge_info, boj_cartridge_invoke) plus all coord_* tools. A CSV of domain prefixes (e.g. 'core,github,browser') advertises core plus the named explicit groups. Every explicit boj__* tool remains reachable via boj_cartridge_invoke regardless of scope.",