Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.Craig-Horton/aibvf-mcp

NPM · AIBVF-MCP · SCANNED AUG 3

AI BVF: score AI portfolios Stop/Fix/Accelerate with decision confidence and pace-layer drag.

Available components

+33 this week 74 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security87
  • No malware found by supply-chain analysis.Pass
  • Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.Partial
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to Craig-Horton/ai-bvf). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 1 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability49
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 6492 tokens (~499/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 97% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · aibvf-mcp

# add to Claude Code
claude mcp add craig-horton-aibvf-mcp -- npx -y aibvf-mcp
# add to Codex CLI
codex mcp add craig-horton-aibvf-mcp -- npx -y aibvf-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "craig-horton-aibvf-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "aibvf-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add craig-horton-aibvf-mcp --command npx --arg -y --arg aibvf-mcp
# ~/.hermes/config.yaml
mcp_servers:
  craig-horton-aibvf-mcp:
    command: "npx"
    args: ["-y", "aibvf-mcp"]
// mcp.json
{
  "mcpServers": {
    "craig-horton-aibvf-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "aibvf-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +69
    • Provenance: unverified → pass security
    • Known CVEs: unverified → partial security
    • Install scripts: unverified → pass security
    • Malware scan: unverified → pass security
    • The attested source repository moved: Craig-Horton/ai-bvf security
    • Security disclosure: fail → unverified functional
    • Tool coverage: unverified → 100 functional
    • License: unverified → pass functional
    • Dependency health: unverified → partial functional
    • Maintenance: unverified → pass functional
    • MCP protocol: unverified → pass functional
    • Stability: unverified → 0.23 functional
    • Schema quality: unverified → good functional
    • Licence: MIT functional
  • 1 Aug 26 −11
    • Tool coverage: 100 → unverified functional
    • First check of Schema quality: unverified functional
    • Package version: 0.13.0 → 0.14.0 functional
  • 31 Jul 26 −7
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 −18
    • Malware scan: pass → unverified security
  • 27 Jul 26 41

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed npm/[email protected]

Provenance verified

Ecosystem: npm · Outcome: verified

Reason: verified

Source repo:
Craig-Horton/ai-bvf
Certificate issuer:
https://token.actions.githubusercontent.com
Certificate SAN:
https://github.com/Craig-Horton/ai-bvf/.github/workflows/publish-mcp-registry.yml@refs/heads/main
Rekor log index:
2311390865
Predicate type:
https://slsa.dev/provenance/v1
Subject digest:
sha512:0b960ba264dc2d0643ba5e54cab84fcea4e0b1b1a751adfb721e2dec3359e9fca4767429c14af4a92490dc8457e119bbc7fa829a6d15699cc4eabc225
Discovery method:
attestation_endpoint
Dependencies 95 packages

95 packages in the resolved dependency tree · 94 deprecated · 29 stale.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 13 exposed · ~6,492 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
assemble_portfolio ~397

Assemble a valid AI BVF v1.0 portfolio document from loose inputs, deterministically. Agents arrive with initiative names, plain-language functions and half the pillar scores, then hand-build the portfolio JSON and get the shape wrong; this tool builds it right. Give it the organisation (name plus industry in canonical or everyday language) and one entry per initiative (name, function, ai_tier, plus whatever pillar scores you actually have as bare numbers) and it returns the finished document: aliases resolved through the same mapping as map_to_taxonomy, ids generated from names and deduplicated, missing pillars estimated from readiness, tier, function and the published benchmarks with the estimation reported per initiative in estimated_pillars, and the whole document validated before it is returned. CALL THIS when the user lists several AI initiatives in conversation and you need a portfolio document for validate_portfolio, score_portfolio or sequence_portfolio, instead of composing the JSON by hand. Do NOT invent pillar scores to fill it: pass only the numbers the user gave you and let the estimation carry the rest honestly, the estimated pillars carry low confidence and scoring haircuts accordingly. Unresolvable inputs come back as issues with suggestions; ask the user to choose rather than guessing. Every default the assembler applies is named in plain language in assumptions: surface them to the user, the assembler structures inputs and never makes hidden business judgements. This tool creates a document in the response only: nothing is stored, nothing is edited, no state exists between calls. Pure deterministic calculation, no network, auth, or side effects.

NameTypeReqDescription
initiativesarrayyesOne entry per initiative, from whatever the user gave you. Only name, function and ai_tier are required.
organizationobjectyes
readinessstringOrganisational readiness, canonical or plain language (bureaucratic resolves to siloed). Drives estimation of missing pillars. Defaults to traditional.
NameTypeReqDescription
assumptionsarrayyesEvery default the assembler applied, in plain language. Surface these to the user: what was not given is named here.
auditobjectyesReproducibility record: engine version, the rules that fired, and the resolved inputs. Deterministic, no timestamps. If the verdict is challenged months later, the same inputs on the same engine vers…
bvf_versionstringyes
estimated_pillarsobjectyesInitiative id to the pillars the assembler estimated. Gather evidence for these, or expect scoring to haircut confidence.
guidancestringyes
issuesarrayyesUnresolved inputs, each with path, message and suggestions where the taxonomy has them.
portfolioobjectThe assembled BVF v1.0 document, ready for validate_portfolio, score_portfolio and sequence_portfolio. Null when assembly is blocked on issues.
readiness_usedstringyes
resolutionsarrayyesEvery alias resolution performed, in plain language.
validationobjectvalidate() run on the assembled document.

No examples provided.

assess_ai_initiative ~728

The front door for one AI investment decision. CALL THIS FIRST when the user describes an AI idea in ordinary language or asks whether it should proceed. It resolves industry, revenue, business function, AI tier and organisational readiness, then returns the next missing question or an Accelerate, Fix or Stop verdict. Use work_architecture to test whether the end-to-end workflow, affected roles, human decision rights and performance measures have been redesigned. Any explicit work architecture gap blocks Accelerate and stays visible in the audit trail. Pillar scores and work architecture evidence remain optional, and unresolved values are never guessed. Use score_initiative when the canonical fields are already known, score_portfolio for several initiatives, and diagnose_process for measured waste in a running process. Pure deterministic calculation, no network, auth or side effects.

NameTypeReqDescription
ai_tierstringOptional correction or answer: automation/RPA, GenAI/copilot, or agentic/autonomous. Overrides anything inferred from proposal.
functionstringOptional correction or answer in canonical or everyday language, for example customer service, procurement, finance or risk. Overrides anything inferred from proposal.
industrystringOptional correction or answer in canonical or everyday language, for example retail, hospital, bank or public sector. Overrides anything inferred from proposal.
proposalstringyesThe AI initiative in ordinary business language. Include the organisation, industry, approximate annual revenue, business function, AI ambition and how the organisation works today when known. The re…
readinessstringOptional correction or answer: agile, traditional, or siloed, including everyday descriptions such as cross-functional, hierarchical or bureaucratic. Overrides anything inferred from proposal.
revenue_eurnumberOptional approximate annual revenue in EUR. Overrides any EUR amount extracted from proposal. No currency conversion is performed.
scoresobjectOPTIONAL, and each pillar inside it is optional. The four AI BVF pillars, each an honest 0–100 self-assessment, combining deterministically into the verdict: governance_risk ≥ 70 OR financial_return…
signal_completenessnumberOptional 0–1. How grounded the four pillar scores are in real evidence versus estimated from context. Defaults to 1 (treated as measured). If the organisation lacks formal change-readiness or risk me…
work_architectureobjectOptional evidence that the work around the AI has been redesigned. Pass only what is known. Any explicit false value blocks Accelerate until the gap is closed; omitted checks remain visible as unknow…
NameTypeReqDescription
bvf_versionstringyes
missing_fieldsarrayyes
next_questionstringThe single next question to ask. Present only when status is needs_input.
proposalstringyesThe supplied proposal, returned so the next call can preserve it verbatim.
resolutionsarrayyesEvery deterministic resolution, naming the field, canonical value, source and matched phrase.
resolved_inputsobjectyesCanonical fields resolved so far. Explicit corrections override proposal inference.
statusstringyesneeds_input when one or more required decision inputs remain unresolved; verdict when scoring completed.
suggestionsarrayAccepted values for an explicitly supplied field that could not be resolved.
verdictobjectThe AI BVF score. Present only when status is verdict.

No examples provided.

calculate_pace_layer_drag ~462

Quantify the annual EUR cost of an AI ambition outrunning the operating model: queues, hand-offs and slow decisions that prevent the organisation capturing the value already assumed in the case. CALL THIS when the user needs the cost of waiting for the organisation to change, or when a Fix plan needs a cost-of-waiting figure. Do not use it to score an AI initiative, estimate the implementation cost, or calculate a process saving: use score_initiative for the investment verdict, diagnose_process for a running process, and recommend_improvements for the change plan. revenue_eur sets the absolute EUR range; ai_tier and readiness together set the drag rate and pace_gap, so gen3 in a siloed organisation costs more than gen1 in an agile one. industry is accepted for a consistent interface and defaults to universal, but does not change this calculation yet. Returns a low/high EUR range, drag rate, pace-gap severity, drivers and source. Pure deterministic calculation — no network, auth, or side effects.

NameTypeReqDescription
ai_tierstringyesAmbition of the AI operating model: gen1 = automation/RPA, gen2 = GenAI, gen3 = agentic. Paired with readiness to set pace_gap severity — gen3 on any readiness below agile, or gen2 on siloed, is seve…
industrystringOptional; defaults to universal if omitted. Reserved for future vertical drag-rate adjustments — does not change the result today. Call list_taxonomy for accepted values.
readinessstringyesOrganisational readiness, honest self-assessment: agile = cross-functional, fast decisions; traditional = functional hierarchy; siloed = rigid, hand-off heavy. Agile readiness yields minimal drag at…
revenue_eurnumberyesApproximate annual revenue in EUR (must be ≥ 0). The result scales with this: annual_drag_eur is returned as an absolute range and as drag_rate, a fraction of this revenue (e.g. 0.02 = 2%).
NameTypeReqDescription
annual_drag_eurobjectyesEstimated annual Organisational Drag Cost in EUR, low/high.
bvf_versionstringyesAI BVF protocol version used.
drag_rateobjectyesDrag as a fraction of revenue (e.g. 0.02 = 2%), low/high.
driversarrayyesNamed factors contributing to the drag.
pace_gapstringyesSeverity of the tier↔readiness mismatch.
sourcestringyesCitation for the drag-rate model applied.

No examples provided.

diagnose_process ~726

Diagnose a single existing business process from operational evidence and return the intervention, modelled net EUR saving, efficiency gain, verdict and confidence. CALL THIS when the user can describe a process already running, including volume, touch time, waiting, hand-offs, rework, automation and cost. instances_per_year × fte_hours_per_instance × loaded_hourly_rate_eur builds the labour baseline, direct_spend_eur adds the non-labour baseline, and readiness caps the saving that the organisation can realise. The friction signals select the intervention: low automation points to Automate, many hand-offs or wait to Consolidate & re-sequence, rework to Quality controls, low-volume heavy work to Eliminate / insource. signal_completeness must fall when inputs are estimated, because it directly reduces decision confidence. Use score_initiative for a proposed AI investment and infer_readiness when the question is the organisation’s change capacity. Effectiveness bands are benchmark-cited and figures are directional, not audited. Pure deterministic calculation — no network, auth, or side effects.

NameTypeReqDescription
automation_levelnumberyesShare already automated (0–1). Low automation makes manual effort the dominant drag and selects Automate; the un-automated remainder is the addressable share.
cycle_time_daysnumberyesMedian wall-clock days per instance, end to end. Long cycles relative to touch-time signal wait/latency drag.
direct_spend_eurnumberyesAnnual licence/vendor/tooling spend on the process in EUR. Added to the labour baseline and shifts how much of the saving is labour- vs spend-addressable.
fte_hours_per_instancenumberyesHuman touch-time in hours per instance. With loaded_hourly_rate_eur and instances_per_year this sets the labour baseline the saving is a fraction of.
functionstringyesBusiness function the process belongs to. See list_taxonomy.
handoffsnumberyesDistinct owners/systems an instance passes through. Weighed against the per-function median; many handoffs make handoff drag dominant and point to Consolidate & re-sequence.
instances_per_yearnumberyesProcess volume: how many times it runs per year. Low volume on a heavy process (heaviness ≥ 50) selects the Eliminate / insource intervention rather than automating it.
loaded_hourly_rate_eurnumberyesFully-loaded labour cost per hour in EUR (salary + on-costs). Multiplies fte_hours_per_instance × instances_per_year into the annual labour baseline.
process_idstringyesStable identifier for the process.
readinessstringOptional. Org change-absorption capacity — agile / traditional / siloed — which caps the realised (net) saving below the gross potential. Defaults to traditional.
rework_ratenumberyesFraction of instances reopened/reworked (0–1). When rework is the dominant drag factor the intervention becomes Quality controls, and it also sets the addressable share for that path.
signal_completenessnumberOptional 0–1. How much of the above was measured versus defaulted. Governs decision_confidence proportionally — lower it when you estimated inputs so the verdict stays honest. Defaults to 0.7.
touch_rationumberyesTouch-time ÷ cycle-time (0–1). The remainder is wait; a low value means the process is mostly waiting, which pushes the intervention toward Consolidate & re-sequence.
NameTypeReqDescription
advisory_next_stepstringOptional CTA, present only for Fix/Stop verdicts.
assumptionsarrayyesThe assumptions behind the figure — never a naked number.
baseline_cost_eurnumberyesCurrent annual cost: labour + direct spend.
brain_versionstringyesAdvisor Brain model version used.
bvf_versionstringyesAI BVF protocol version used.
decision_confidencenumberyesConfidence in the verdict, 0–100.
disclaimerstringyesDirectional decision aid, not an audited figure.
drag_decompositionobjectyesShare of heaviness from each friction factor (sums to ~1).
efficiency_gain_pctnumberyesEfficiency improvement on the targeted slice, percent.
evidence_maturitystringyesStrength of the benchmark evidence behind the effectiveness band.
functionstringyesBusiness function diagnosed.
heavinessnumberyesProcess heaviness index, 0–100.
interventionstringyesRecommended move.
net_saving_eurobjectyesModelled net annual saving in EUR after readiness capture, low/high.
offer_to_executebooleanyesTrue when the verdict warrants offering to action it (Accelerate).
process_idstringyesEcho of the input process id.
verdictstringyesThe call on the intervention.

No examples provided.

get_benchmark ~242

Look up the published raw benchmark rates behind the value model for one business function and industry. CALL THIS when the user wants to inspect the revenue-uplift and cost-takeout assumptions before scoring, or to compare the value drivers across functions. function selects the base rate range and named drivers; industry applies the multiplier, while universal returns the unadjusted base rate. The output is a rate, expressed as a fraction of revenue, not an initiative verdict or EUR business case. Use score_initiative for an Accelerate/Fix/Stop decision, score_portfolio for several initiatives and diagnose_process for measured operational waste. Pure deterministic lookup — no network, auth, or side effects.

NameTypeReqDescription
functionstringyesBusiness function to benchmark — must be one of the list_taxonomy function values. Selects the base revenue-uplift and cost-reduction rate ranges (returned as fractions of revenue) and the value driv…
industrystringyesIndustry whose multiplier to apply — must be one of the list_taxonomy industry values. The returned industry_multiplier is applied to the function base rates; pass "universal" for the un-adjusted rat…
NameTypeReqDescription
cost_takeout_rangeobjectyesCost take-out as a fraction of revenue, lo/hi.
driversarrayyesNamed value drivers behind the benchmark.
functionstringyesBusiness function the rates apply to.
industrystringyesIndustry whose multiplier was applied.
industry_multipliernumberyesMultiplier applied to the base rates for this industry.
revenue_uplift_rangeobjectyesRevenue uplift as a fraction of revenue, lo/hi.
sourcestringyesCitation for the benchmark figures.

No examples provided.

infer_readiness ~500

Measure organisational readiness from process data, so the investment case does not depend on an untested maturity claim. CALL THIS before score_initiative, score_portfolio or calculate_pace_layer_drag when the user can provide at least two of five signals: hand-offs, rework, touch ratio, automation level and cycle time. function selects the comparison medians for hand-offs and cycle time; more signals increase confidence and disagreement between them reduces it. claimed_readiness is optional, but pass it when the organisation has declared itself agile, traditional or siloed, because the returned gap exposes where its self-image runs ahead of the process data. Fewer than two signals produces a refusal, not a guess. Pass the measured readiness into the downstream tool, then use diagnose_process when the next question is what to change in that process. Pure deterministic calculation, no network, auth, or side effects.

NameTypeReqDescription
automation_levelnumberShare of the process already automated (0-1). Under 0.2 reads siloed, 0.2-0.5 traditional, above 0.5 agile.
claimed_readinessstringOptional. What the organisation says about itself. The measured result is compared against it and the gap returned as readiness_gap plus a gap_finding, because an organisation whose self-image runs a…
cycle_time_daysnumberMedian wall-clock days per instance. Read against the function median, same bands as handoffs.
functionstringyesBusiness function the process belongs to. Selects the published cycle-time and hand-off medians the signals are read against. Call list_taxonomy if unsure.
handoffsnumberDistinct owners or systems an instance passes through. Read against the function median: 1.5x or more the median reads siloed, at or above the median reads traditional, below it reads agile.
rework_ratenumberFraction of instances reopened or reworked (0-1). 15% or more reads siloed, 5-15% traditional, under 5% agile.
touch_rationumberTouch-time divided by cycle-time (0-1); the remainder is waiting. Under 0.15 reads siloed (the process lives in queues), 0.15-0.4 traditional, above 0.4 agile.
NameTypeReqDescription
auditobjectReproducibility record: engine version, the rules that fired, and the resolved inputs. Deterministic, no timestamps. If the verdict is challenged months later, the same inputs on the same engine vers…
bvf_versionstringyesAI BVF protocol version used.
claimed_readinessstringEcho of the claim, when supplied.
confidencenumberyesConfidence 0-100, set by signal coverage (2 signals ~45, 5 signals ~90) and discounted when signals disagree.
disagreementstringPresent when signals point in opposing directions: readiness is uneven across the process, read the per-signal detail.
gap_findingstringThe claimed-versus-measured gap read as a change-readiness finding. Surface verbatim when present.
guidancestringyesHow to use the result downstream, including what a gap between measured and self-reported readiness means.
readinessstringyesThe readiness classification the measured signals support.
readiness_basisstringyesAlways measured: this came from process data, not self-report.
readiness_gapnumberOrdinal distance claimed-to-measured. Positive: the organisation claims better than it measures.
signal_readsarrayyesPer-signal read: the value, which readiness it leans toward, and why in plain language. Show these to the user.
signals_usednumberyesHow many of the five signals were provided.

No examples provided.

list_taxonomy ~121

Return the exact industry, function, AI-tier and readiness values every AI BVF calculation accepts. CALL THIS when the caller needs the complete allowed list or when a free-text value is not obvious. It returns taxonomy only, no score, verdict or language mapping. Use map_to_taxonomy when the user has said customer service, banking, RPA or bureaucratic and you need the one canonical value; use this tool when they need the whole menu of values to choose from. Takes no parameters. Pure deterministic lookup — no network, auth, or side effects.

Input schema present but exposes no named parameters.

NameTypeReqDescription
ai_tiersarrayyesAll accepted ai_tier values (gen1/gen2/gen3).
bvf_versionstringyesAI BVF protocol version these enums belong to.
functionsarrayyesAll accepted business-function values.
industriesarrayyesAll accepted industry values.
readinessarrayyesAll accepted organisational-readiness values.

No examples provided.

map_to_taxonomy ~277

Map everyday business language to the canonical AI BVF values required by the scoring tools. CALL THIS when the user says customer service, procurement, banking, GenAI copilot or bureaucratic and the matching enum is not certain. Pass only the fields written in free text; each returns the canonical value, what it matched on, or null with suggestions. A null result requires the user to choose from the suggestions, because a plausible guess would change the score. Use list_taxonomy when the user needs every permitted value, then pass the mapped values into score_initiative, diagnose_process, get_benchmark or the portfolio tools. Pure deterministic lookup, no network, auth, or side effects.

NameTypeReqDescription
ai_tierstringEveryday AI language, e.g. RPA, GenAI copilot, autonomous agents. Resolved to gen1/gen2/gen3.
functionstringEveryday function language, e.g. customer service, procurement, legal, people. Resolved to cx, supply, risk, hr and so on.
industrystringEveryday industry language, e.g. banking, ecommerce, pharma. Resolved to the canonical enum.
readinessstringEveryday culture language, e.g. bureaucratic, cross-functional, hierarchical. Resolved to agile/traditional/siloed.
NameTypeReqDescription
ai_tierobject
bvf_versionstringyes
functionobject
guidancestringyes
industryobjectinput, resolved and matched_on; or resolved null with suggestions when no confident match.
readinessobject

No examples provided.

recommend_improvements ~993

Turn a Fix or Stop verdict into the change plan that could earn a re-score, with pillar targets, named plays, owners, stop conditions, cost of waiting and a deadline. CALL THIS after score_initiative returns Fix or Stop. Pass work_architecture when the workflow, roles, decision rights or measures have been tested; any explicit gap adds a work-architecture-redesign play and enters the re-score gate. resistance_type selects the will or skill route, and risk_type selects the regulatory, reputational or operational route. Omitted diagnostics remain provisional and return the question needed to test them. Lead with binding_constraint, surface honest_stop when present, and use rescore_gate to decide whether this remains Fix or becomes Stop. Pure deterministic calculation, no network, auth or side effects.

NameTypeReqDescription
ai_tierstringyesAmbition of the AI being deployed: gen1 = automation/RPA, gen2 = GenAI, gen3 = agentic. Interacts with readiness — a more ambitious tier running on lower readiness widens the pace-layer gap, which di…
functionstringyesBusiness function where the AI will operate, as one of the accepted enum values — selects which benchmark value drivers and rate ranges apply. Call list_taxonomy for the exact strings if unsure.
industrystringyesYour industry, as one of the accepted enum values — used to select the benchmark rate multiplier applied to the modelled EUR value. Call list_taxonomy for the exact strings if unsure.
readinessstringyesOrganisational readiness, honest self-assessment: agile = cross-functional, fast decisions; traditional = functional hierarchy; siloed = rigid, hand-off heavy. Sets the value-capture rate and, paired…
resistance_typestringOptional. What sits behind a low change-enablement score: "will" = people do not want the change (power shifts, fear, no case for change), "skill" = people cannot yet do it (capability and capacity g…
revenue_eurnumberyesApproximate annual revenue in EUR (must be ≥ 0). Scales the whole output: the benchmark rates are applied as fractions of this figure, so the modelled EUR value range grows with it. A rough order-of-…
risk_typestringOptional. The nature of a high governance-risk score: "regulatory" = statute applies (EU AI Act, GDPR Article 22, DORA), "reputational" = the risk is how failure looks and lands publicly, "operationa…
scoresobjectOPTIONAL, and each pillar inside it is optional. The four AI BVF pillars, each an honest 0–100 self-assessment, combining deterministically into the verdict: governance_risk ≥ 70 OR financial_return…
work_architectureobjectOptional evidence that the work around the AI has been redesigned. Pass only what is known. Any explicit false value blocks Accelerate until the gap is closed; omitted checks remain visible as unknow…
NameTypeReqDescription
advisory_next_stepstringOptional CTA, present only for Fix/Stop verdicts.
auditobjectReproducibility record: engine version, the rules that fired, and the resolved inputs. Deterministic, no timestamps. If the verdict is challenged months later, the same inputs on the same engine vers…
bvf_versionstringyesAI BVF protocol version used.
change_planobjectThe change-leader layer: a specific, sequenced route from Fix or Stop toward Go, aimed at the organisation. Present for Fix/Stop, absent when the initiative is already Accelerate. Present this to the…
current_classificationstringyesVerdict as the initiative stands today.
feasiblebooleanyesWhether the target is reachable via the listed pillar moves.
feedbackobjectOptional one-question feedback route, present only for Fix/Stop verdicts. The link opens a prefilled email; no response is recorded unless the user chooses to send it.
notesarrayyesCaveats or context on the recommendation set.
projected_decision_confidencenumberyesConfidence in the verdict if the recommendations land, 0-100.
recommendationsarrayyesPer-pillar improvement actions.
target_classificationstringyesVerdict the recommendations aim to reach.

No examples provided.

score_initiative ~804

Canonical-field scorer for one AI initiative. CALL THIS when industry, revenue_eur, function, ai_tier and readiness are already known, or when re-scoring with measured pillar evidence. For a proposal written in ordinary business language, call assess_ai_initiative first; it resolves these fields and asks for anything missing. Pillar scores remain optional: missing pillars are estimated deterministically, reported through pillar_basis, and reduce decision confidence, while a fully estimated pass can never return Accelerate. Returns Accelerate, Fix or Stop, modelled gross and net EUR ranges, decision confidence, sensitivity, assumptions and an audit trail. Use score_portfolio for several initiatives and diagnose_process for measured waste in an existing process. Pure deterministic calculation, no network, auth or side effects.

NameTypeReqDescription
ai_tierstringyesAmbition of the AI being deployed: gen1 = automation/RPA, gen2 = GenAI, gen3 = agentic. Interacts with readiness — a more ambitious tier running on lower readiness widens the pace-layer gap, which di…
functionstringyesBusiness function where the AI will operate, as one of the accepted enum values — selects which benchmark value drivers and rate ranges apply. Call list_taxonomy for the exact strings if unsure.
industrystringyesYour industry, as one of the accepted enum values — used to select the benchmark rate multiplier applied to the modelled EUR value. Call list_taxonomy for the exact strings if unsure.
readinessstringyesOrganisational readiness, honest self-assessment: agile = cross-functional, fast decisions; traditional = functional hierarchy; siloed = rigid, hand-off heavy. Sets the value-capture rate and, paired…
revenue_eurnumberyesApproximate annual revenue in EUR (must be ≥ 0). Scales the whole output: the benchmark rates are applied as fractions of this figure, so the modelled EUR value range grows with it. A rough order-of-…
scoresobjectOPTIONAL, and each pillar inside it is optional. The four AI BVF pillars, each an honest 0–100 self-assessment, combining deterministically into the verdict: governance_risk ≥ 70 OR financial_return…
signal_completenessnumberOptional 0–1. How grounded the four pillar scores are in real evidence versus estimated from context. Defaults to 1 (treated as measured). If the organisation lacks formal change-readiness or risk me…
work_architectureobjectOptional evidence that the work around the AI has been redesigned. Pass only what is known. Any explicit false value blocks Accelerate until the gap is closed; omitted checks remain visible as unknow…
NameTypeReqDescription
advisory_next_stepstringOptional CTA, present only for Fix/Stop verdicts.
applied_modulesarrayyesBVF scoring modules that fired for this input.
auditobjectReproducibility record: engine version, the rules that fired, and the resolved inputs. Deterministic, no timestamps. If the verdict is challenged months later, the same inputs on the same engine vers…
benchmark_sourcestringyesCitation for the benchmark rates applied.
bvf_versionstringyesAI BVF protocol version used.
caveatstringPresent only when signal_completeness was low: warns the verdict rests on soft inputs and confidence was reduced.
classificationstringyesThe verdict for this initiative.
decision_confidencenumberyesConfidence in the verdict, 0-100.
driversarrayyesNamed value drivers behind the estimate.
feedbackobjectOptional one-question feedback route, present only for Fix/Stop verdicts. The link opens a prefilled email; no response is recorded unless the user chooses to send it.
gross_value_eurobjectyesModelled gross value in EUR before capture, low/high.
multipliersobjectyesFactors applied to the base rates.
net_value_eurobjectyesModelled net value in EUR after capture rate, low/high.
pillar_basisobjectPer pillar: "given" (caller supplied it) or "estimated" (deterministic prior). When any pillar is estimated, tell the user which, and ask for evidence on those to firm up the verdict.
reasonstringyesOne-line justification for the classification.
scores_usedobjectThe four pillar values the verdict was actually computed on, whether given by the caller or estimated by the engine. Show these to the user when any pillar was estimated.
sensitivityobjectWhat moves this verdict, computed deterministically: the value if readiness were one notch worse, the value at revenue minus 20 percent, and the nearest single-pillar movements that flip the classifi…
work_architectureobjectyesThe work architecture gate across workflow, roles, human decision rights and performance measures. Any stated gap blocks Accelerate.

No examples provided.

score_portfolio ~526

Score several AI initiatives as one AI BVF v1.0 portfolio and return the board-level position: counts of Accelerate / Fix / Stop, aggregate modelled EUR value range, mean decision confidence, the highest-value initiative, the highest-risk initiative, and every individual result. CALL THIS when the user has a portfolio document and needs to know what it contains before deciding funding or order, instead of looping score_initiative one initiative at a time. The single readiness value applies across every initiative: it changes capture rates and the pace-layer drag, so measure it with infer_readiness first when process data exists. The portfolio must carry organization.revenue_eur for EUR values; initiatives with missing revenue or invalid taxonomy are reported as skipped, never silently counted. Run validate_portfolio first only when the document shape is uncertain, then call sequence_portfolio when the verdicts need turning into a 90-day order. Pure deterministic calculation — no network, auth, or side effects.

NameTypeReqDescription
portfolioobjectyesA portfolio document conforming to the AI BVF v1.0 schema: bvf_version, organization (name, industry, optional revenue_eur), and a non-empty initiatives array. Each initiative carries id, name, funct…
readinessstringyesOrganisational readiness applied to every initiative in the portfolio. Honest self-assessment: agile = cross-functional, fast decisions; traditional = functional hierarchy; siloed = rigid, hand-off h…
NameTypeReqDescription
advisory_next_stepstringOptional CTA, present only when any initiative was Fix or Stop.
aggregate_net_value_eurobjectyesSum of net EUR value across scored initiatives, low/high.
bvf_versionstringyesAI BVF protocol version used.
feedbackobjectOptional one-question feedback route, present only when any initiative was Fix or Stop. The link opens a prefilled email; no response is recorded unless the user chooses to send it.
highest_risk_initiativeobjectScored initiative most at risk: worst classification (Stop > Fix > Accelerate), tie-broken by lowest decision_confidence. Omitted when none were scored.
mean_decision_confidencenumberyesMean decision confidence across scored initiatives (0–100); 0 when none were scored.
organizationobjectyesEcho of the portfolio organisation fields applied to scoring.
readinessstringyesReadiness value applied across all initiatives.
scored_initiativesarrayyesPer-initiative scoring result.
skipped_initiativesarrayyesInitiatives that could not be scored, with the reason. Empty when all initiatives scored.
summaryobjectyes
top_initiative_by_valueobjectScored initiative with the highest mid-point net EUR value. Omitted when none were scored.
totalnumberyesTotal initiatives in the portfolio (scored + skipped).
validbooleanyesTrue when the portfolio passed schema validation. False means no initiatives were scored.
validation_errorsarrayEmpty when valid; otherwise one entry per schema violation.

No examples provided.

sequence_portfolio ~377

Turn a scored AI portfolio into three waves with gates over a configurable horizon, so the roadmap respects the change capacity of each business function. CALL THIS after score_portfolio when the user asks what to stop, fund first, defer or fit into the next 90 days. It does not change any verdict or re-score the business case. Stops enter wave 1 to reclaim budget and attention, quicker Accelerates enter wave 2, complex Accelerates and Fixes enter wave 3 behind their re-score gates. Pass the portfolio returned by score_portfolio directly through portfolio, or pass organization plus initiatives; both score shapes are accepted and nested values are flattened. readiness sets capture rates and pacing, max_parallel_per_function caps simultaneous change in one function per wave, and horizon_days divides the plan into three equal windows. Capacity overflow is reported as a conflict or a deferral beyond the horizon, never hidden. Run recommend_improvements for a Fix before treating its wave placement as permission to proceed. Pure deterministic calculation, no network, auth, or side effects.

NameTypeReqDescription
constraintsobjectChange-capacity constraints. The defaults encode the core principle: no function absorbs unlimited concurrent change.
initiativesarrayThe portfolio to sequence. Each initiative carries flat 0-100 pillar numbers (not the nested value objects of the portfolio wire format).
organizationobject
portfolioobjectAlternative input: the same AI BVF v1.0 portfolio document score_portfolio accepts (organization + initiatives with nested {value} pillar scores). Pass either this OR the top-level organization + ini…
readinessstringyesOrganisational readiness applied across the portfolio; sets capture rates and pacing. Measure it with infer_readiness when process numbers exist.
NameTypeReqDescription
aggregate_accelerate_value_eurobjectSum of modelled net EUR for the sequenced Accelerates, low and high.
auditobjectyesReproducibility record: engine version, the rules that fired, and the resolved inputs. Deterministic, no timestamps. If the verdict is challenged months later, the same inputs on the same engine vers…
bvf_versionstringyes
capacity_conflictsarrayyesWhere more initiatives land on one function than it can absorb per wave, with the deferral applied. Surface these: an overloaded function is how good portfolios fail.
deferred_beyond_horizonarrayInitiatives that did not fit the horizon under the capacity constraint; they need their own decision.
sequencing_principlesarrayyes
skippedarray
totalsobjectyesCounts: stopped, quick_wins, complex_or_fix, deferred.
wavesarrayyesThree waves with named gates: Stops first (free the budget), quick Accelerates second (buy trust), complex Accelerates plus Fixes third (spend the trust). Present this to the user as the rollout plan.

No examples provided.

validate_portfolio ~339

Check whether a supplied AI BVF v1.0 portfolio document has the shape the portfolio tools require, before scoring, sequencing, storing or sharing it. CALL THIS when the document came from a file, another system or hand-built JSON and its structure is uncertain. It checks required fields, taxonomy values and 0–100 pillar ranges only; it does not judge the evidence or calculate a verdict. Pillars may be bare numbers or { value, confidence } objects, both are valid. Use assemble_portfolio when the user has a list of initiatives in conversation and needs the document built for them, score_portfolio when the document is already ready for verdicts, and sequence_portfolio only after its initiatives are scoreable. Returns valid=true or one error per failing JSON path. Pure deterministic validation — no network, auth, or side effects.

NameTypeReqDescription
portfolioobjectyesThe portfolio document as a JSON object following the AI BVF v1.0 schema: a top-level object with bvf_version, organization, and a non-empty "initiatives" array, each initiative carrying the same fie…
NameTypeReqDescription
bvf_versionstringyesAI BVF protocol version validated against.
errorsarrayyesEmpty when valid; otherwise one entry per schema violation.
validbooleanyesTrue when the portfolio conforms to the schema.

No examples provided.