Skip to main content
Glama

Save a portfolio from explicit holdings

create_portfolio_from_positions

Use when YOU (or the user) have ALREADY decided the exact holdings and want them saved as-is — e.g. after researching and settling on a specific basket with target weights. Persists a REVIEWABLE paper-portfolio draft built from the tickers you supply, sized by weight (percent) or by explicit USD amount. Unlike create_portfolio_draft this does NOT use the LLM and NEVER re-selects tickers: your basket lands exactly as given. It is NOT Pro-gated (it mirrors manual position entry, which is free) and needs only OAuth with the write:drafts scope. DRAFT-ONLY: the draft is saved to the user's Bullrun account and appears in the Portfolio tab under "Pending AI drafts", where the user reviews it and explicitly accepts it (creating a NEW portfolio) or discards it — it never changes any live position. Tickers must exist in Bullrun's priced stock/ETF universe; any that cannot be priced are returned in unresolved and skipped (use search_etfs / get_etf_snapshot / screen_stocks / get_stock_metrics to confirm exact tickers first). For a vague brief where the model should pick, use create_portfolio_draft instead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoPortfolio name. Default "Custom Portfolio Draft".
cashPctNoExplicit cash percentage to hold back. Overrides the weight-remainder rule.
positionsYesThe exact holdings to persist (1-30). Tickers are used verbatim, never re-selected.
startingCashNoTotal portfolio cash in USD. Default 10000 in weight mode; the sum of amounts in amount mode.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

The description goes well beyond the minimal annotations (readOnlyHint=false, destructiveHint=false) by disclosing the draft-only lifecycle: saved to user's account, appears under 'Pending AI drafts', user must explicitly accept or discard, and never changes live positions. It also explains the unresolved-ticker behavior (returned in `unresolved` and skipped), adding valuable context.

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

Conciseness5/5

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

The description is long but every sentence earns its place: usage context, sibling distinction, gating, draft lifecycle, universe constraints, and alternative tool. It is front-loaded with 'Use when...' and contains no fluff or repetition.

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

Completeness4/5

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

Despite no output schema, the description covers the essential lifecycle (draft saved, user review, accept/discard), unresolvable ticker handling, and prerequisites. It doesn't explicitly describe the success response structure (e.g., draft ID), but given the tool's moderate complexity and the detail provided, it is nearly complete.

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 description coverage is 100%, so baseline is 3. The description adds extra meaning by explaining weight versus amount mode, cash handling (remainder held as cash, normalisation), and cashPct overriding the weight-remainder rule. This goes beyond the schema's per-parameter descriptions, though not dramatically.

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 description states a specific verb ('persists') and resource ('a REVIEWABLE paper-portfolio draft') with clear scope: exact tickers supplied by the user, sized by weight or USD amount. It explicitly contrasts with create_portfolio_draft by stating it does NOT use the LLM and never re-selects tickers, making sibling differentiation strong.

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?

It gives explicit when-to-use ('when YOU have ALREADY decided the exact holdings') and when-not-to-use ('For a vague brief where the model should pick, use create_portfolio_draft instead'). It also clarifies gating (not Pro-gated), required OAuth scope, and the need to confirm tickers in Bullrun's universe.

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.