Skip to main content
Glama

assemble_portfolio

Read-onlyIdempotent

Build a valid AI BVF portfolio document from loose organization and initiative inputs, estimating missing pillar scores and validating the output.

Instructions

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. Addedv0.14.14

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.