Skip to main content
Glama

Create a portfolio draft

create_portfolio_draft

Build a reviewable paper portfolio draft from a natural-language brief for a signed-in Bullrun user. The draft saves to Pending AI drafts for review and never changes live positions.

Instructions

Use when the user wants you to BUILD or PROPOSE a brand-new portfolio for them — e.g. "build me a portfolio", "put together a dividend portfolio", "draft a portfolio of AI stocks", "create a new portfolio for $10k". Generates a REVIEWABLE paper-portfolio draft for the signed-in Bullrun user from a natural-language brief (e.g. "a diversified European dividend portfolio"). Requires OAuth with the write:drafts scope. Available to signed-in free accounts; daily usage limits and portfolio capacity still apply. This is DRAFT-ONLY and never changes any live position: the draft is saved to the user's account and appears in the Bullrun Portfolio tab under "Pending AI drafts", where the user reviews it and explicitly accepts it to create a new portfolio (or discards it). To suggest additions to an EXISTING portfolio instead, use create_position_draft. Tickers are chosen only from Bullrun's priced stock/ETF universe; pass instrumentUniverse for stocks only, ETFs only, or a mix. If the brief is vague, first ask ONE quick round of up to three multiple-choice questions (investing style, region focus, and size), each with a default the user can accept with "just pick for me", then build; skip any dimension the user already specified and do not interrogate across multiple turns.

Input Schema

NameRequiredDescriptionDefault
promptNoWhat kind of portfolio to draft, e.g. "a defensive dividend portfolio of large EU stocks". Optional: if you omit it, the server collects a quick style/region/size brief from the user directly (a native form on clients that support elicitation; otherwise it asks you to gather those first).
maxPositionsNoMaximum number of holdings (3-20, default 10).
startingCashNoStarting cash in USD (default 10000).
instrumentUniverseNoCandidate universe: stocks only, ETFs only, or a mix. Default mix unless the prompt says otherwise.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.7.0
    • addedInput schema / properties / instrumentUniverse
      Added value: +{
      +  "description": "Candidate universe: stocks only, ETFs only, or a mix. Default mix unless the prompt says otherwise.",
      +  "enum": [
      +    "stocks",
      +    "etfs",
      +    "mix"
      +  ],
      +  "type": "string"
      +}
  2. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only say non-readOnly/non-destructive; the description adds what actually matters: OAuth write:drafts scope required, free-account eligibility with daily limits and portfolio capacity, and the crucial disclosure that nothing is live — the draft lands in 'Pending AI drafts' and needs explicit user acceptance or discard. That is behavioral context the structured fields cannot carry.

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 trigger condition and use-case examples, then scope, then side effects, then the alternative. It is long and slightly redundant ('DRAFT-ONLY and never changes any live position' is restated by the save/review sentence), but nearly every sentence carries operational information.

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?

Covers everything an agent needs for a 4-param, zero-required mutation: auth scope, entitlement limits, universe constraints, clarification fallback, and the post-call outcome (saved draft visible in the Portfolio tab pending acceptance). No output schema exists, and the description supplies the return context anyway.

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; the description earns more by explaining that tickers come only from Bullrun's priced stock/ETF universe and by clarifying that prompt is optional with server-side or elicitation-based brief collection. It does not add much on maxPositions/startingCash beyond the schema defaults.

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?

States a specific verb+resource ('BUILD or PROPOSE a brand-new portfolio') plus concrete trigger phrasings, and explicitly separates it from create_position_draft (existing portfolios) and implicitly from create_portfolio_from_positions. An agent can pick this tool without opening any schema.

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?

Gives when-to-use triggers, the when-not case ('to suggest additions to an EXISTING portfolio, use create_position_draft'), and a concrete clarification protocol: one round of up to three multiple-choice questions with defaults, skipping already-specified dimensions and avoiding multi-turn interrogation.

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