Releases: Craig-Horton/ai-bvf
Release list
v0.7.0 — aibvf-check: the AI BVF CI/CD gate
aibvf-check 0.1.0 — "SonarQube for AI" CI/CD pre-flight gate
The first non-MCP surface for AI BVF: a CI gate that fails the build when a declared AI initiative wouldn't survive a board review.
npx aibvf-checkreads a.aibvf.jsonmanifest, scores every initiative with the deterministic@aibvf/coreengine, prints a scorecard, and exits non-zero on any policy violation (0pass /1gate failed /2config error).- GitHub Action:
uses: Bahamas1717/ai-bvf@v0.7.0with an optionalmanifestinput — fails the workflow on any violation. - Policy:
fail_on(default["Stop"]),max_governance_riskceiling,min_decision_confidencefloor. Per-initiativesignal_completenesscarries the v0.6 honesty valve into CI — estimated inputs haircut confidence and surface a caveat instead of passing on a confident-looking number. - Reuses 100% of the scoring engine; zero runtime deps beyond
@aibvf/core. Pure, unit-tested gate logic (7 tests). Manifest is human/PR-authored, not auto-scraped.
Install: npx aibvf-check · Built by Craig Horton Advisory
v0.6.0 — signal_completeness on score_initiative
0.6.0 (aibvf-mcp) / 0.3.4 (@aibvf/core), 30 June 2026
Added: an optional signal_completeness (0–1) input on score_initiative, and a matching caveat output field. This answers the most substantive piece of external feedback on the framework — the "metadata burden" critique that the scoring is only as good as the change-readiness and risk metadata an organisation feeds it, so soft inputs produce a falsely confident verdict. score_initiative now mirrors what diagnose_process already does with its own signal_completeness: when the four pillar scores are estimated rather than measured, the caller sets signal_completeness below 1, decision confidence is haircut proportionally (confidence = base × (0.5 + 0.5 × signal_completeness)), and a caveat is attached telling the reader the verdict rests on soft inputs and should be re-run with measured scores before committing budget. "Garbage in" now yields "low-confidence, stated honestly" instead of "confident garbage out".
Backward compatible by construction: signal_completeness defaults to 1 (treated as measured), at which the multiplier is exactly 1.0 and confidence is byte-identical to the pre-0.3.4 formula. Existing callers, the worked examples, and the smoke-test fixture (manufacturing GenAI predictive maintenance, confidence 62) are unaffected. recommend_improvements keeps the plain input schema and is unchanged; only score_initiative exposes the new field. score() clamps the value to [0,1] and never lets it change the classification — only the confidence and the caveat.
Added: packages/js/src/score.test.ts covering the default-unchanged property, the monotonic haircut, clamping, classification-invariance, and the caveat threshold (0.7).
Bumped: @aibvf/core 0.3.3 → 0.3.4 (new optional input + output field on score), aibvf-mcp 0.5.1 → 0.6.0 (new tool capability), and the MCP dependency range to ^0.3.4. Version synced across the Server({ version }) handshake, startup banner, packages/mcp/package.json, and server.json.
v0.5.1 — diagnose_process Usage Guidelines
0.5.1 (aibvf-mcp), 28 June 2026
Changed: rewrote the diagnose_process tool description, which Glama's first v0.5.0 scan scored 4.1/5 — the lowest of the eight tools and, because the server-level Tool Definition Quality score is 60% mean + 40% minimum, the one pinning the whole server's TDQS. The previous description explained what the tool does in a single run-on sentence but never told an agent when to reach for it versus score_initiative (the Usage Guidelines dimension) and was dense to parse (Conciseness & Structure). The new description leads with a "CALL THIS WHEN the user describes a real, running process…" trigger, explicitly frames the tool as the operational counterpart to score_initiative (diagnose an existing process vs score a proposed initiative), points at list_taxonomy for the function enum, and adds the partial-signals guidance that the high-scoring tools carry (pass what you have, set signal_completeness accordingly). score_initiative's description gains a reciprocal pointer at diagnose_process so the two are cross-linked both ways. Description-only edits; no change to any handler, input/output schema, or computed value.
v0.5.0 — score_portfolio + MCP annotations
0.5.0 (aibvf-mcp), 26 June 2026
Added: an eighth tool, score_portfolio, that takes an AI BVF v1.0 portfolio document plus a single organisational readiness value and returns the board-level shape in one call — Accelerate/Fix/Stop counts, aggregate modelled EUR value range (integer EUR via the shared eurRange helper), mean decision confidence, the top initiative by mid-point value, the highest-risk initiative (worst classification, tie-broken by lowest decision confidence), and the per-initiative scoring results. Schema validation runs first; on a malformed portfolio the response sets valid=false and reports the validation errors without attempting to score. Initiatives that cannot be scored (missing organization.revenue_eur, unknown function/ai_tier) appear in skipped_initiatives rather than failing the call. Closes the Glama Server Coherence "Completeness" gap: previously validate_portfolio existed but no tool scored a portfolio in one call, so agents had to loop score_initiative per initiative. The portfolio schema does not carry per-initiative readiness, so this tool takes one organisational readiness value and applies it across all initiatives — realistic for a single organisation and explicit in the parameter description.
Added: MCP 2025-06-18 annotations on every tool (title, readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false). All eight BVF tools are pure reads against in-process data — the prose descriptions already said as much, but the annotations make the contract machine-readable, which is what Glama's Behavioural Transparency dimension scores against. No behavioural change to any handler.
Changed: get_benchmark description now states when to use it instead of score_initiative — the Glama Tool Definition Quality "Usage Guidelines" gap that was holding the min-weighted TDQS at 4.50. score_initiative's description now ends with a pointer at score_portfolio so an agent looking at a portfolio is routed to the right tool. list_taxonomy's "call this first when unsure" list now names score_portfolio and diagnose_process alongside the existing routes. validate_portfolio now mentions both single-initiative and whole-portfolio scoring as the next step after validation. All description-only edits; no behavioural change to any handler.
Bumped: aibvf-mcp from 0.4.4 to 0.5.0 across the Server({ version }) handshake, the startup banner (now reads 8 tools: ..., score_portfolio, ..., diagnose_process), packages/mcp/package.json, and server.json (server-level and packages[0] entries; the latter was on 0.4.3 against the package's 0.4.4, now synced). @aibvf/core is unchanged at 0.3.3 — score_portfolio reuses the existing score() and validate() exports.
v0.4.0 — Structured tool outputs
Adds a declared outputSchema and a structuredContent response to all six tools, hand-matched to each tool's real return shape, so MCP hosts get typed, machine-readable results and the contract is self-documenting.
- outputSchema + structuredContent on all 6 tools. Through 0.3.x the tools advertised no output schema, so hosts had to infer the result format from prose. Two range shapes are now documented: {low,high} for modelled EUR/value ranges (score_initiative, calculate_pace_layer_drag) and {lo,hi} for raw benchmark rates (get_benchmark).
- Clearer descriptions. Every tool now discloses it is a pure deterministic calculation/lookup with no network, auth, or side effects; calculate_pace_layer_drag no longer implies a scalar EUR output, and its readiness/ai_tier/industry params carry fuller descriptions.
- Version sync. The Server() handshake and server.json were still reporting 0.3.3; both now match the release.
No change to computed values or classification logic — numbers and verdicts are identical to 0.3.5. First release to lean on the 2025-06-18 MCP spec semantics (outputSchema + structuredContent); SDK dependency range ^1.0.0 unchanged.
v0.3.5 — Strengthened tool definitions
aibvf-mcp 0.3.5
Quality pass on the tool definitions so each tool describes its purpose, parameters, and return shape well enough for an agent to use without guessing. No behavioural change to any handler — descriptions and JSON-schema parameter semantics only.
Changed
validate_portfolio— now documents the expected portfolio shape (a top-level object with aninitiativesarray, each carrying thescore_initiativefields) instead of an opaqueobject, and spells out the{ valid, errors[] }return.list_taxonomy— states when to call it (before guessing enum values) and that it takes no parameters and has no side effects.get_benchmark—function/industryparameters now carry descriptions pointing back tolist_taxonomy.
Why
Aligns with the AI tool-definition-quality bar (clear purpose, usage guidance, parameter semantics, behavioural transparency) so every tool is self-describing.
Install: npx aibvf-mcp · Published to npm with provenance.
v0.3.4 — Persisted install-id telemetry
aibvf-mcp 0.3.4
Changed
caller_hashis nowsha256(installId + day), whereinstallIdis 16 random bytes generated on first run and persisted to~/.config/aibvf/install-id. Stable per install (so distinct-caller counts are genuine distinct installs, not per-process randoms) yet high-entropy, so the hash can't be reversed to a machine or person.- Created lazily on first telemetry send, and skipped entirely when opted out —
AIBVF_TELEMETRY_DISABLE=1writes no file. - Falls back to a per-process random on read-only filesystems (failing closed).
Fixed
- Stripped a stray NUL byte from the
caller_hashtemplate that made tooling flag the source as binary.
The install-id never leaves your machine; only the daily-rotated hash is sent. No payload fields changed.
v0.2.1, telemetry diagnostics and the feedback loop
v0.2.1, telemetry diagnostics and the feedback loop
aibvf-mcp v0.2.1 closes the feedback loop. The first end-to-end deterministic AI initiative scorer is now live on the Anthropic MCP registry, with telemetry diagnostics in the startup banner and a direct feedback link for calibration debates in public.
What is new in this release
- Telemetry diagnostics on startup. The MCP server now prints a clear banner showing whether telemetry is enabled, where it is reporting, and how to opt out. No more silent guessing.
- Feedback link in the banner. Direct path from the agent surface back to the issue tracker for calibration disputes, missing benchmarks, and module gap reports.
- Issue #3 plumbing fix. Internal wiring resolved.
- Provenance on npm publish. The publish workflow now includes provenance, so consumers can verify the package came from this repo and this CI pipeline.
- Auto-unlock BVF gate from URL parameter. Public protocol page now opens cleanly from a shared link without manual gate steps.
What you can do with it
Register the server with any MCP-compatible client and ask your agent to score an AI initiative. The agent returns an Accelerate, Fix, or Stop classification with an EUR value range, decision confidence, applied module list, and a gap analysis. For Fix and Stop calls, a follow-up to recommend_improvements returns the specific pillar raises that flip the call toward Accelerate, each with a named action.
The whole scoring path is deterministic, no LLM in the loop. Same inputs, same output, every time. Reasoning, recommendation, and prose stay LLM-driven, the number does not.
Six tools
score_initiative— Four-pillar score plus classification, EUR value range, decision confidence, applied modules, reasoning.recommend_improvements— Pillar raise recommendations with named actions and projected new confidence.calculate_pace_layer_drag— Annual Organisational Drag Cost in EUR from AI-tier vs operating-model misalignment.validate_portfolio— Portfolio JSON validation against BVF v1.0 schema.get_benchmark— Lookup of published benchmark rates by function and industry.list_taxonomy— Valid enumerations for industries, functions, AI tiers, readiness levels.
Distribution
- npm:
npm install -g aibvf-mcp(package) - Python:
pip install aibvf(package) - TypeScript engine:
npm install @aibvf/core - MCP registry: live, searchable as
aibvf(listing)
Quick start, 30 seconds
npm install -g aibvf-mcpRegister with Claude Desktop, Claude Code, or any MCP client:
{ "mcpServers": { "aibvf": { "command": "aibvf-mcp" } } }Ask your agent: "score a gen2 CX AI initiative for a 400M EUR retailer, traditional readiness, SA 70, FR 50, CE 55, GR 45." The agent calls score_initiative, returns a Fix classification with a concrete gap list, and offers recommend_improvements next.
Calibration loop
The benchmarks reference McKinsey, Gartner, BCG, Deloitte, Forrester, Accenture, ServiceNow. Readiness capture rates from EY/Oxford and Prosci change-success research. The numbers are directional, the calibration argues itself out in public via the issue tracker.
What is next, on the road to v0.3.0
- Demo recording for the README hero, against Claude Desktop.
- Additional industry modules, financial services calibration cycle.
- CSV portfolio import path, multi-initiative scoring in one call.
- Public review of the healthcare clinical validation overhead.
License
See LICENSE. Benchmark corpus and certification marks are proprietary.
Author
Craig Horton. Issues and PRs welcome, calibration debates expected.
v0.2.0, foundational release
v0.2.0, the deterministic pre-flight
aibvf-mcp ships its first feature-complete release. Six tools on stdio, an open protocol schema, deterministic four-pillar scoring with published benchmark ranges, and a working calibration loop in public.
What you can do with it
Register the server with any MCP-compatible client and ask your agent to score an AI initiative. The agent returns an Accelerate, Fix, or Stop classification with an EUR value range, decision confidence, applied module list, and a gap analysis. For Fix and Stop calls, a follow-up to recommend_improvements returns the specific pillar raises that flip the call toward Accelerate, each with a named action.
Tools shipped
score_initiative— Four-pillar score plus classification, EUR value range, decision confidence, applied modules, reasoning.recommend_improvements— Pillar raise recommendations with named actions and projected new confidence.calculate_pace_layer_drag— Annual Organisational Drag Cost in EUR from AI-tier vs operating-model misalignment.validate_portfolio— Portfolio JSON validation against BVF v1.0 schema.get_benchmark— Lookup of published benchmark rates by function and industry.list_taxonomy— Valid enumerations for industries, functions, AI tiers, readiness levels.
Industry modules included
- Healthcare clinical validation and regulatory overhead
- Financial services capture multipliers
- Cross-industry readiness capture rates from EY/Oxford
- Prosci change-success calibration
- Pace Layer drag calculation
Distribution
- npm:
npm install -g aibvf-mcp(package) - Python:
pip install aibvf(package) - TypeScript engine:
npm install @aibvf/core - MCP registry: live and searchable as
aibvf
What is new vs 0.1.x
- Anonymous telemetry, opt-out via
AIBVF_TELEMETRY_DISABLE=1, point at your own backend withAIBVF_TELEMETRY_URLandAIBVF_TELEMETRY_KEY. - Pace Layer drag calculation as a standalone tool.
- Benchmark corpus expanded to seven publishing sources.
- CodeQL security scanning on every commit.
- Stdio MCP server with deterministic, no-network scoring path.
What is next
- Demo GIF for the README hero, recorded against Claude Desktop.
- v0.3.0, additional industry modules and a CSV portfolio import path.
- Public calibration cycle on the financial services benchmark ranges.
License
MIT for the schema, the scoring engine, and the MCP server. The benchmark corpus and certification marks are proprietary.
Author and maintainer
Craig Horton. Issues and PRs welcome, calibration debates expected.