Skip to main content
Glama

assemble_portfolio

Read-onlyIdempotent

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 disclosed AI BVF planning assumptions 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. Deterministic calculation with no authentication. Anonymous usage telemetry may be sent; set AIBVF_TELEMETRY_DISABLE=1 to opt out.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
readinessNoOrganisational readiness, canonical or plain language (bureaucratic resolves to siloed). Drives estimation of missing pillars. Defaults to traditional.
initiativesYesOne entry per initiative, from whatever the user gave you. Only name, function and ai_tier are required.
organizationYesOrganisation identity and context shared by every initiative in the assembled portfolio.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
auditYesReproducibility 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 version reproduce it exactly.
issuesYesUnresolved inputs, each with path, message and suggestions where the taxonomy has them.
guidanceYes
portfolioNoThe assembled BVF v1.0 document, ready for validate_portfolio, score_portfolio and sequence_portfolio. Null when assembly is blocked on issues.
validationNovalidate() run on the assembled document.
assumptionsYesEvery default the assembler applied, in plain language. Surface these to the user: what was not given is named here.
bvf_versionYes
resolutionsYesEvery alias resolution performed, in plain language.
readiness_usedYes
estimated_pillarsYesInitiative id to the pillars the assembler estimated. Gather evidence for these, or expect scoring to haircut confidence.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / initiatives / items / properties / signal_completeness
      Added value: +{
      +  "description": "Optional input-quality factor retained for portfolio scoring. Lower it when supplied pillars rest on weak evidence.",
      +  "maximum": 1,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / initiatives / items / properties / work_architecture
      Added value: +{
      +  "description": "Evidence that workflows, roles, decision rights and measures are ready. Pass only what is known. Explicit gaps and omitted checks block Accelerate until all four checks are evidenced.",
      +  "properties": {
      +    "decision_rights_defined": {
      +      "description": "True only when decision, override and escalation rights have named human owners, false when authority remains unclear.",
      +      "type": "boolean"
      +    },
      +    "measures_updated": {
      +      "description": "True only when performance measures and incentives reflect the redesigned work, false when the old measures remain.",
      +      "type": "boolean"
      +    },
      +    "roles_redesigned": {
      +      "description": "True only when affected roles, accountabilities and capability expectations have been rewritten, false when roles remain unchanged.",
      +      "type": "boolean"
      +    },
      +    "workflow_redesigned": {
      +      "description": "True only when the end-to-end workflow has been redesigned around the AI and retained human judgement, false when the existing workflow remains.",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed19 schema fields changed
    • addedInput schema / description
      Added value: +"Build a valid portfolio document from loose organisation and initiative inputs. organization and at least one initiative are required. readiness defaults to traditional; missing pillar scores are estimated and reported, while unresolved taxonomy values return issues instead of guesses."
    • addedInput schema / properties / initiatives / items / properties / bucket / description
      Added value: +"Optional workforce-impact label retained in the document; it does not change the verdict today."
    • addedInput schema / properties / initiatives / items / properties / compliance / description
      Added value: +"Optional known compliance regimes retained in the document; governance risk still comes from the supplied or estimated pillar score."
    • addedInput schema / properties / initiatives / items / properties / scores / properties / change_enablement / description
      Added value: +"Optional evidenced change-enablement score, 0-100; omitted values are estimated."
    • addedInput schema / properties / initiatives / items / properties / scores / properties / change_enablement / maximum
      Added value: +100
    • addedInput schema / properties / initiatives / items / properties / scores / properties / change_enablement / minimum
      Added value: +0
    • addedInput schema / properties / initiatives / items / properties / scores / properties / financial_return / description
      Added value: +"Optional evidenced financial-return score, 0-100; omitted values are estimated."
    • addedInput schema / properties / initiatives / items / properties / scores / properties / financial_return / maximum
      Added value: +100
    • addedInput schema / properties / initiatives / items / properties / scores / properties / financial_return / minimum
      Added value: +0
    • addedInput schema / properties / initiatives / items / properties / scores / properties / governance_risk / description
      Added value: +"Optional evidenced governance-risk score, 0-100, where higher means more risk; omitted values are estimated."
    • addedInput schema / properties / initiatives / items / properties / scores / properties / governance_risk / maximum
      Added value: +100
    • addedInput schema / properties / initiatives / items / properties / scores / properties / governance_risk / minimum
      Added value: +0
    • addedInput schema / properties / initiatives / items / properties / scores / properties / strategic_alignment / description
      Added value: +"Optional evidenced strategic-alignment score, 0-100; omitted values are estimated."
    • addedInput schema / properties / initiatives / items / properties / scores / properties / strategic_alignment / maximum
      Added value: +100
    • addedInput schema / properties / initiatives / items / properties / scores / properties / strategic_alignment / minimum
      Added value: +0
    • addedInput schema / properties / organization / description
      Added value: +"Organisation identity and context shared by every initiative in the assembled portfolio."
    • addedInput schema / properties / organization / properties / headcount / description
      Added value: +"Optional employee count retained as portfolio context; it does not alter scoring today."
    • addedInput schema / properties / organization / properties / headcount / minimum
      Added value: +0
    • addedInput schema / properties / organization / properties / region / description
      Added value: +"Optional operating region retained as portfolio context; it does not alter scoring today."
  3. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, non-destructive, closed-world), the description discloses determinism, the estimation policy for missing pillars, per-initiative reporting via estimated_pillars, validation before return, plain-language assumptions, no hidden business judgements, error-as-issues behavior, statelessness ('nothing is stored, nothing is edited, no state exists between calls'), no authentication, and a telemetry opt-out env var. This is unusually complete behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then usage, then behavior — a sensible order. It is dense but nearly every sentence carries distinct information (estimation policy, assumptions, statelessness, telemetry). A couple of clauses about assumptions and hidden business judgements restate each other and could be merged.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested, 3-parameter tool with a rich input schema and an output schema, the description covers what the schema cannot: alias resolution, id generation, estimation fallbacks, assumption reporting and failure mode. Return values are not re-explained, correctly leaving that to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds real semantics the schema does not: alias resolution uses the same mapping as map_to_taxonomy, ids are generated from names and deduplicated, missing pillars are estimated from readiness, tier and function, and readiness defaults to traditional. It stops short of describing every field, which the schema already handles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a precise verb+resource+guarantee: 'Assemble a valid AI BVF v1.0 portfolio document from loose inputs, deterministically.' It immediately frames the problem it solves (agents hand-building JSON and getting the shape wrong), which separates it from validate_portfolio, score_portfolio and sequence_portfolio.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit trigger ('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'), explicit alternative ('instead of composing the JSON by hand'), and explicit when-not ('Do NOT invent pillar scores to fill it: pass only the numbers the user gave you'). Unresolvable inputs are also routed back to the user rather than guessed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.