Skip to main content
Glama
ferinator

BullRun

by ferinator

Server Quality Checklist

83%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.1.0

  • Disambiguation5/5

    Each tool targets a distinct action or data type: portfolio vs position drafts, holdings snapshot vs risk analytics, and separate financial data queries. No two tools overlap in purpose.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (e.g., create_portfolio_draft, get_financial_history, list_portfolios). The naming is clear and predictable.

    Tool Count5/5

    14 tools cover the core functionalities of portfolio management and financial research without being excessive or sparse. The scope is well-defined.

    Completeness5/5

    The tool surface provides comprehensive coverage: portfolio CRUD (draft creation), analytics, screening, and fundamental data. Users can perform end-to-end portfolio analysis and suggestions.

  • Average 4.4/5 across 14 of 14 tools scored. Lowest: 3.9/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 6 commits in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • This repository includes a glama.json configuration file.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior4/5

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

    Annotations indicate readOnlyHint=true, and the description confirms 'Read-only.', consistent and non-contradictory. It further discloses that it uses the same rule engine as the app, and mentions deprecated aliases (mode, periods) for compatibility, adding behavioral context beyond annotations.

    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 concise, with four focused sentences: main action, filter enumeration, return format, and read-only note. All sentences add value; no redundant or extraneous text.

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

    Completeness3/5

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

    Given the tool's complexity (15 parameters, no output schema), the description covers filtering capabilities well but lacks details on the returned 'compact table' structure, error conditions, or data freshness. It is adequate but leaves gaps.

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

    Parameters3/5

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

    Schema coverage is 100% with detailed parameter descriptions. The description adds high-level categorization of filter types but no new semantic details. Baseline 3 is appropriate as the schema does the heavy lifting.

    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 clearly states the verb 'Screen' and the resource 'global Bullrun stock universe', specifies the rule engine similarity to the app screener, and enumerates filter capabilities (sector, industry, country, etc.). It distinguishes from sibling tools by emphasizing complex rule-based filtering.

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

    Usage Guidelines3/5

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

    The description implies usage for screening with rules but does not explicitly state when to use this tool versus alternatives like get_stock_metrics or query_etfs. No 'when not to use' or exclusion guidance is provided.

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

  • Behavior3/5

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

    The description declares 'Read-only,' which aligns with the annotation readOnlyHint=true, but adds little beyond that. It mentions optional filtering by fiscal period or search text, but does not disclose rate limits, auth requirements, or error behavior for missing tickers.

    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?

    Two sentences: the first defines the function and constraints, the second states use cases. No redundant words, tightly packed with relevant information.

    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?

    For a tool with 6 parameters (1 required) and no output schema, the description covers purpose, filtering, and use case. It hints at output structure ('speaker-tagged chunks'), but could mention that maxChunks defaults to 80 (available in schema) or that chunks are returned in order.

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

    Parameters3/5

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

    Schema coverage is 100%, so the input schema already describes all parameters adequately. The description only summarizes filtering options without adding new semantics or format details beyond what the schema provides.

    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 specifies 'Fetch speaker-tagged earnings-call transcript chunks for one exact Bullrun ticker', which is a specific verb-resource pair. It distinguishes from siblings like get_financial_history or get_forward_estimates by focusing on qualitative transcript data, not quantitative metrics.

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

    Usage Guidelines4/5

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

    The description advises using this tool for 'management guidance language, analyst Q&A, and qualitative judgment not visible in financial statements,' providing clear context. It lacks explicit exclusion statements or alternative tool mentions, but the sibling list implies alternatives for quantitative data.

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

  • Behavior4/5

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

    Annotations declare readOnlyHint: true, and the description reinforces 'Read-only.' It adds behavioral context by detailing derived P/E and PEG calculations from the latest close, which goes beyond the annotation alone.

    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 two sentences, front-loaded with the primary action, and contains no unnecessary words. Every sentence adds value.

    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?

    With no output schema, the description adequately explains the returned data: consensus estimates, management guidance, revision percentages, and derived P/E/PEG. It is comprehensive for a tool with 3 parameters and moderate complexity.

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

    Parameters3/5

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

    Schema description coverage is 100%, so the schema already explains all parameters. The description reinforces the ticker requirement ('one exact Bullrun ticker') but adds no new parameter details beyond what the schema provides.

    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 clearly states 'Fetch forward consensus revenue/EPS/EBITDA estimates...' with a specific verb and resource (forward estimates for a Bullrun ticker). It distinguishes from siblings like get_financial_history or get_earnings_call_transcript by focusing on forward estimates and derived P/E/PEG context.

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

    Usage Guidelines3/5

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

    The description implies usage by stating 'for one exact Bullrun ticker' but does not explicitly state when not to use the tool or suggest alternatives. No guidance on when to prefer this over siblings like get_financial_history is provided.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true. The description adds context about period-specific data and example metrics, but does not disclose pagination, rate limits, or return format. With annotations covering safety, the description adds minimal extra behavioral insight.

    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 two sentences, front-loaded with purpose, and contains no extraneous information. Every word adds value.

    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?

    Given no output schema, the description gives sufficient context by listing example metrics and stating period-specific behavior. It could mention pagination or result format, but the core completeness is adequate for an agent.

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

    Parameters3/5

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

    Schema coverage is 100%, and the description lists example metric keys that are already present in the schema's property descriptions. No additional parameter semantics are provided beyond what the schema already conveys.

    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 clearly specifies the tool's purpose: fetch period-specific operating KPIs and unit-economics metrics for a single Bullrun ticker. It lists example metrics, distinguishing this from sibling tools like get_financial_history or get_forward_estimates.

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

    Usage Guidelines4/5

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

    The description implies usage for retrieving operating metrics for one ticker, providing context but not explicitly stating when to use vs alternatives or excluding cases. It is clear but lacks explicit when-not guidance.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true, so the 'Read-only' statement is redundant but consistent. The description adds minimal behavioral context beyond what annotations provide, such as the requirement for an 'exact' ticker. No contradictions.

    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 three short sentences: one for purpose, one for usage guidance, and one for read-only status. No wasted words, and the most critical information is front-loaded.

    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?

    Given the tool has 3 parameters and no output schema, the description adequately covers the tool's purpose, usage context, and safety (read-only). It does not describe output format or pagination behavior, but the limit parameter hints at row count. For a simple filtering tool, this is mostly complete.

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

    Parameters3/5

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

    Schema description coverage is 100%, so each parameter is well-documented in the schema. The description does not add significant new meaning beyond the schema, simply mentioning 'revenue breakdown rows' without detailing parameter formats or relationships. Baseline 3 is appropriate.

    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 clearly states the action ('Fetch') and the resource ('revenue breakdown rows for one exact Bullrun ticker'), lists the supported dimensions (segment, geography, product, customer, other), and distinguishes this tool from siblings by focusing on revenue breakdown specifically.

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

    Usage Guidelines4/5

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

    The description explicitly advises using this tool to 'separate cyclical businesses from recurring segments or inspect geographic exposure instead of relying on blended revenue,' providing clear usage context. While it doesn't name alternative tools, the siblings are listed and the description implies when not to use this tool (e.g., for other financial metrics).

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

  • Behavior3/5

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

    Annotations already provide readOnlyHint=true, so no destructive behavior. Description adds return details (profile, prices, holdings) but no further behavioral traits like rate limits or permissions. No contradiction.

    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?

    Two sentences, front-loaded with core functionality, no fluff. Every sentence adds value.

    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 13 parameters and no output schema, the description gives a clear overview of search capabilities and exact-ticker returns. Could elaborate on output structure, but current level is adequate.

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

    Parameters3/5

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

    Schema description coverage is 100%, with each parameter individually described. The tool description provides some context (e.g., 'maps to Bullrun's ETF focus column') but doesn't significantly add beyond the schema. Baseline of 3 is appropriate.

    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?

    Description uses specific verb 'Search' and resource 'Bullrun ETF universe', lists search criteria (ticker/fund name, category, focus, domicile, exchange, currency), and distinguishes exact-ticker returns (profile, prices, holdings). It also states 'Read-only', aligning with annotations.

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

    Usage Guidelines4/5

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

    Clearly states when to use (searching ETFs) and what inputs are available. Does not explicitly mention when not to use or alternatives among siblings, but the context is clear.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true. The description goes beyond by listing computed metrics, explaining parameter effects (e.g., WACC fallback, tax-rate fallback), and stating it uses existing financial statements. No contradiction.

    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?

    Description is efficient: two sentences that immediately state purpose, list metrics, and note read-only nature. No fluff, well front-loaded.

    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?

    Given complexity (4 params, no output schema), description covers purpose, metrics, parameter behavior, and read-only nature. It does not specify the output format or structure, which would be helpful for an agent, but overall it is fairly complete.

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

    Parameters5/5

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

    Schema covers 100% of parameters with descriptions. The description adds value by explaining that ROIC-vs-WACC spread returns null when WACC is omitted and that taxRateFallbackPct only used when reported data missing. This enhances understanding beyond schema.

    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?

    Description clearly states the tool computes annual quality and moat metrics for a single Bullrun ticker, listing specific metrics (ROIC, ROE/ROA, etc.). This distinguishes it from siblings like get_financial_history or get_stock_metrics, which handle raw data or different analyses.

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

    Usage Guidelines3/5

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

    The description explains what the tool does but does not explicitly state when to use it versus alternatives or when not to use it. It implies usage for a single ticker but lacks guidance on context or exclusion.

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

  • Behavior4/5

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

    The annotations include readOnlyHint: true, so the description doesn't need to reiterate that. It adds behavioral context by describing the returned structure (groups like income statement, balance sheet, etc.) and mentioning consistency checks. This goes beyond what annotations provide.

    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 a single, well-structured paragraph that front-loads the key action and details. Every sentence adds value: it states the fetch range, return types, data groups, and use cases. No wasted words.

    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?

    Given the absence of an output schema, the description compensates by listing the return data groups (income statement, balance sheet, etc.) and mentioning specific use cases. It provides a good sense of what the tool returns, though a bit more detail on the exact output format could improve completeness.

    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 parameters are well documented. The description adds meaningful context beyond the schema, such as specifying that tickers must be exact Bullrun tickers, explaining that annual rows use fiscalQuarter=0, and describing the nature of includeEmptyRows. This enriches the parameter understanding.

    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 clearly states the tool fetches historical financial statements for a Bullrun ticker, specifying the range (1-15 years), return types (annual/quarterly), and data groups (income statement, etc.). It distinguishes well from sibling tools like get_forward_estimates or get_quality_moat_metrics.

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

    Usage Guidelines4/5

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

    The description explicitly says 'Use this when evaluating multi-year revenue/net-income growth, margin trajectories, leverage, cash flow quality, or whether a stock passed a rule such as 10% revenue and net-income growth every year.' This provides strong usage context, though it doesn't explicitly state when not to use it or name alternative tools for different purposes.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true, and the description adds 'Read-only', confirming no side effects. The description details exactly what data is returned, but does not discuss rate limits, data freshness, or authorization requirements. The transparency is good but not exhaustive.

    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 concise: two sentences. The first sentence efficiently lists all data categories, and the second provides a critical usage instruction. No redundant or filler content.

    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?

    Given the tool's complexity (multiple metric categories) and the absence of an output schema, the description adequately enumerates the returned data (identity, price, valuation, financials, description). It does not specify data structure or units, but the categories are sufficient for an AI agent to understand the tool's output.

    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% for the single parameter (ticker), with a clear description. The description adds value by reiterating the ticker format and providing examples (e.g., AAPL, ABBN.SW), which helps disambiguate usage beyond the schema.

    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 explicitly states the tool fetches a consolidated metrics snapshot for a single stock by ticker, listing specific categories (identity, price, valuation, financials, description). This clearly distinguishes it from sibling tools like get_financial_history or get_earnings_call_transcript, which focus on narrower aspects.

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

    Usage Guidelines4/5

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

    The description includes a usage guideline to use the exact ticker as listed on Bullrun with Yahoo-style suffixes, providing examples. While it does not explicitly state when not to use this tool or compare to alternatives, the broad snapshot nature implies it is for a quick overview, and the parameter guidance is clear.

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

  • Behavior5/5

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

    The description discloses that it is read-only, returns the caller's own data only, and details the output structure (summary, holdings with weights/sectors/returns, and insights). It also warns about the coverage banner and that matched-only figures should not be presented as the whole portfolio. This goes well beyond the readOnlyHint annotation.

    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?

    The description is relatively long but well-structured: it starts with the primary use case, then details what is returned, then important caveats, then alternative tools, then authorization. Each sentence adds value. Slightly verbose but justified by the tool's complexity.

    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?

    Given no output schema, the description thoroughly explains the return value: summary (value, day change, total return), holdings (position weight %, sector, return), and insights (benchmark comparison, concentration, diversification, dividend income). It also covers the coverage nuance and privacyMode behavior. Completeness is excellent.

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

    Parameters3/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 context for portfolioId (explains it comes from list_portfolios) and privacyMode (explains 'weights_only' and 'full'), but does not significantly expand on days. This meets the baseline.

    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 starts with a clear verb and resource: 'look at, review, or analyze THEIR portfolio'. It provides explicit usage triggers ('analyze my portfolio', 'how is my portfolio doing', etc.) and distinguishes from sibling tools by naming get_portfolio_analytics for risk/diversification.

    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?

    The description explicitly states when to use ('Use when the user asks...'), when not to use ('For risk/diversification math... use get_portfolio_analytics'), and prerequisites ('call list_portfolios first if the user hasn't named a portfolio'). This provides complete guidance.

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

  • Behavior5/5

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

    Discloses that it is draft-only, never changes live positions, requires OAuth write:drafts scope and Bullrun Pro account. This adds significant context beyond the annotations, which only indicate non-read-only and non-destructive.

    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?

    The description is relatively long but well-structured with key points front-loaded. Every sentence adds value, though it could be slightly more concise without losing 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?

    Given 3 parameters, 100% schema coverage, and no output schema, the description covers prerequisites, behavior, interaction, and expectations. It is complete enough for an agent to use correctly.

    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 baseline is 3. Description adds extra context: explains that omitting prompt triggers user elicitation, and provides default values for maxPositions and startingCash. This adds value beyond the schema.

    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 clearly states the tool's purpose: building or proposing a brand-new portfolio by generating a reviewable draft. It uses specific verbs like 'BUILD' or 'PROPOSE' and distinguishes it from create_position_draft, which handles additions to existing portfolios.

    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?

    Explicitly says when to use (user wants a new portfolio) and when not to (use create_position_draft for existing portfolios). Provides guidelines for vague briefs, including asking one round of multiple-choice questions with defaults.

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

  • Behavior5/5

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

    Discloses draft-only behavior: 'saved to the user's account... never changes live holdings by itself'. Also mentions required OAuth scope and Bullrun Pro account. Annotation readOnlyHint=false and destructiveHint=false are consistent and complemented by this context.

    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?

    Description is well-structured with trigger, purpose, prerequisites, distinctions, and guidance. Each sentence serves a purpose; slightly long but earns its length. Could be more concise but effective.

    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 purpose, prerequisites, behavioral constraints, alternatives, and disambiguation guidance. With no output schema, description provides sufficient context for agent to decide when and how to invoke correctly.

    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 baseline is 3. Description adds value by mentioning OAuth scope and Pro account requirement, and provides usage hints for clarifying portfolio and number of ideas. Does not repeat schema descriptions but adds overall parameter usage context.

    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 clearly states the tool generates 'REVIEWABLE suggested additions for one existing Bullrun portfolio' and uses specific trigger phrases like 'BUY' or 'ADD' to an existing portfolio. It distinguishes itself from sibling tools like create_portfolio_draft and get_portfolio_analytics.

    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?

    Provides explicit when-to-use triggers ('when the user asks what to BUY or ADD to an EXISTING portfolio'), when-not-to-use (use create_portfolio_draft for new portfolio, get_portfolio_analytics for specific ticker), and guidance for unclear cases (confirm portfolio and number of ideas).

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

  • Behavior5/5

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

    Discloses important behaviors beyond annotations: risk math drops unpriced holdings, coverage banner, privacyMode effects, OAuth requirements. Consistent with readOnlyHint annotation.

    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?

    Well-structured with use cases first, then technical details. Slightly verbose but all sentences add value. Could be tightened slightly.

    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?

    Despite no output schema, description thoroughly explains what analytics are returned (correlation matrices, contributions, exposures, scenario tests) and warns about coverage limitations.

    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 already documents all parameters (100% coverage). Description adds context for candidateTicker and candidateWeightPct, explaining their purpose in candidate diversification analysis.

    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 clearly states it fetches portfolio-level relationship analytics for risk, diversification, concentration, and adding stocks. It distinguishes from sibling get_portfolio_context.

    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?

    Explicitly states when to use (portfolio risk/diversification/concentration queries) and when not to (use get_portfolio_context for plain holdings snapshot).

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

  • Behavior5/5

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

    Discloses read-only nature (consistent with readOnlyHint annotation), describes returned fields (name, value, day change, etc.), and explains privacyMode behavior.

    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?

    Efficiently structured with usage guidance first, then functional details, and parameter specifics. Slightly verbose but no extraneous 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?

    Fully covers tool purpose, when to use, authentication requirements, parameter details, and relationship to sibling tools. No gaps given simplicity of tool.

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

    Parameters5/5

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

    The enum parameter privacyMode is explained beyond the schema: default behavior and what each value yields, compensating for schema's minimal description.

    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 clearly states the tool lists the signed-in Bullrun user's virtual portfolios with computed summaries, distinguishing it from sibling tools that require a specific portfolio ID.

    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?

    Explicitly states when to use (user refers to 'their' portfolios/holdings) and when not (use get_portfolio_context/get_portfolio_analytics for specific portfolios), and mentions required OAuth scope.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

bullrun-mcp MCP server

Copy to your README.md:

Score Badge

bullrun-mcp MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ferinator/bullrun-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server