Skip to main content
Glama
chensirui2008

Schwab Read-Only MCP

Server Quality Checklist

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

  • Disambiguation5/5

    Each tool targets a distinct data type or action: quotes, transactions, price history, indicators, fundamentals, options, market hours, movers, and account details. While get_accounts and get_account overlap slightly, they are clearly list-vs-detail, and all price-related tools are differentiated by purpose (live snapshot vs historical vs derived). No two tools appear to do the same thing.

    Naming Consistency5/5

    All tool names follow a consistent 'get_' prefix followed by a noun, e.g., get_quotes, get_transactions, get_accounts. The pattern is uniform and predictable, making it easy for an agent to infer the function of each tool from its name.

    Tool Count5/5

    Ten tools is a well-scoped size for a read-only financial data server. Each tool covers a meaningful aspect of market or account data without excessive fragmentation or bloat, and the count is within the ideal range for an agent to manage.

    Completeness4/5

    The server covers the core read-only workflows: quotes, historical data, indicators, fundamentals, options, market hours, movers, transactions, and account balances. Minor gaps exist, such as lack of order-status retrieval or news, but these are not essential for a read-only market/account server and can be worked around.

  • Average 3.4/5 across 10 of 10 tools scored.

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

    • No community issues in the last 6 months
    • 4 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.

    If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.

    MCP servers without a LICENSE cannot be installed.

  • 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.

  • Add a glama.json file to provide metadata about your server.

  • 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.

  • Add related servers to improve discoverability.

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

  • Behavior2/5

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

    With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'Schwab candles' as the data source but does not reveal whether it fetches data, if there are rate limits, or what error behavior to expect. The read-only implication of 'Calculate' is not explicit.

    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, front-loaded sentence that lists indicators without wasted words. It is appropriately concise for the information it conveys.

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

    Completeness2/5

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

    With five parameters, no output schema, and no annotations, a one-sentence description is insufficient. It omits parameter meanings, return structure, and usage context, leaving an agent without enough information to invoke it correctly.

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

    Parameters1/5

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

    Schema description coverage is 0%, and the description does not explain any of the five parameters (period, symbol, frequency, period_type, frequency_type). The indicator names do not clarify how parameters affect calculations, so the description fails to compensate for the schema gap.

    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 uses the specific verb 'Calculate' and names exact technical indicators (SMA20, EMA20, RSI14, MACD, Bollinger, ATR14, VWAP) with a clear data source ('Schwab candles'). This clearly distinguishes it from sibling tools like get_price_history or get_fundamentals.

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

    Usage Guidelines2/5

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

    The description provides no guidance on when to use this tool vs alternatives. It only states what it does, with no mention of use cases, exclusions, or references to related tools.

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

  • Behavior2/5

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

    No annotations are present, so the description must carry the full burden of behavioral disclosure. It vaguely mentions 'Schwab allows' but does not explain rate limits, pagination, response format, or error handling. The description offers minimal behavioral insight beyond the basic read operation.

    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 front-loaded sentence that directly states the action and resource. It wastes no words and is appropriately concise for a simple read operation, even though it under-specifies details.

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

    Completeness1/5

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

    For a tool with 8 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain how to construct a valid request, the meaning of default values, or what the returned data looks like. The one-line description is insufficient for correct invocation.

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

    Parameters1/5

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

    With zero schema description coverage, the description needed to explain the 8 parameters. It only alludes to 'period' and 'ISO-8601 time range' without mapping them to specific parameters (e.g., `period_type`, `frequency_type`, `start_datetime`, `end_datetime`). Essential parameters like `frequency` and `include_extended_hours` are entirely unaddressed.

    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 identifies the tool's function: retrieving OHLCV price history with period or time-range specifications. It uses a specific verb ('Get') and resource ('OHLCV candle'), and distinguishes it from sibling tools like get_quotes (current prices) and get_technical_indicators (derived metrics).

    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 the tool is for historical price data, but it does not explicitly state when to use it over alternatives such as get_quotes or get_technical_indicators. No exclusion criteria or alternative comparisons are provided, leaving usage guidance implied rather than explicit.

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

  • Behavior2/5

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

    With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'market-session hours' but does not explain return format, timezone handling, behavior for invalid dates, or whether both regular and after-hours sessions are included. Minimal detail beyond the tool name.

    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, concise sentence that front-loads the core action. Every word contributes meaning, and there is no redundancy or unnecessary detail.

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

    Completeness2/5

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

    Given the low complexity (2 params, no output schema), the description is quite minimal. It lacks performance expectations, edge cases, and any context on what constitutes a 'market session.' While not a complex tool, the sparse description leaves several important gaps for an AI agent.

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

    Parameters2/5

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

    Schema coverage is 0%, so the description must compensate. It does add meaning for the 'date' parameter by indicating it accepts an ISO date and is optional. However, the 'markets' parameter is only implied by the phrase 'market-session hours' with no explanation of expected values or format, leaving significant ambiguity.

    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 with a specific verb ('Get') and resource ('market-session hours'). It also notes the optional ISO date parameter, distinguishing it from sibling tools that handle quotes, transactions, or indicators.

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

    Usage Guidelines2/5

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

    No guidance is provided on when to use this tool versus alternatives. The description simply states what it does without mentioning context, prerequisites, or exclusions. Sibling tool names are listed but not referenced.

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

  • Behavior2/5

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

    With no annotations provided, the description bears full responsibility for behavioral disclosure. It only states the basic action and does not explain what 'movers' includes (up/down, magnitude), how sorting or frequency parameters affect results, or what the response structure looks like. This is a significant gap for a tool with three parameters.

    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, front-loaded sentence with no filler or redundancy. Every word contributes to the core message, making it highly scannable. While sparse, the structure is exceptionally concise and efficient.

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

    Completeness2/5

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

    Given the tool's three parameters, lack of annotations, and no output schema, the description is too minimal to ensure correct invocation. It omits crucial context about the sort parameter (e.g., 'PERCENT_CHANGE_UP' default), frequency meaning, and the exact nature of 'movers' (e.g., top gainers/losers). The description needs to elaborate to be considered complete.

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

    Parameters2/5

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

    The schema has 0% description coverage, and the description provides only minimal compensation by listing the specific index values ($SPX, $COMPX, $DJI), which maps to the 'index' parameter. However, it fails to explain the 'sort' and 'frequency' parameters, leaving their semantics unclear. The description does not sufficiently bridge the missing schema documentation.

    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 primary function: retrieving top movers for specific indices ($SPX, $COMPX, or $DJI). The verb 'Get' combined with the resource 'top movers' is specific, and the explicit index list distinguishes this from sibling tools like get_quotes or get_price_history.

    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 when top movers are needed for these specific indices, but provides no explicit guidance on when to use this tool versus alternatives, nor any exclusions. It does convey a clear context (top movers by index), but leaves the decision to the agent without comparative direction.

    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?

    No annotations are provided, so the description carries the full transparency burden. It does disclose that 'Values may be delayed by exchange entitlement,' which is a useful behavioral warning. However, it doesn't describe the return format, handling of invalid symbols, or any authentication requirements, leaving significant behavioral aspects undisclosed.

    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 extremely concise, consisting of two short sentences that front-load the purpose and add a critical behavioral note. Every word earns its place with no filler or redundancy.

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

    Completeness2/5

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

    For a tool with no output schema and no parameter descriptions, the description is insufficient. It doesn't clarify what data a 'quote' contains, how the 'fields' parameter modifies the response, or how this tool differs from closely related siblings like get_price_history. This leaves important gaps for an AI agent to select and invoke the tool correctly.

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

    Parameters2/5

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

    Schema coverage is 0%, and the description does not mention either parameter. While 'symbols' is self-explanatory from the name, 'fields' is ambiguous — there's no indication of what fields are available or how they affect the response. The description adds no value over the bare parameter names.

    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 function: 'Get Schwab quotes for US equity symbols.' It uses a specific verb (Get) and resource (Schwab quotes), and specifies the scope (US equity symbols). This distinguishes it from sibling tools like get_price_history and get_fundamentals, which handle related but different data.

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

    Usage Guidelines2/5

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

    The description provides no guidance on when to use this tool versus alternatives. It doesn't mention that get_price_history should be used for historical data or get_fundamentals for fundamental data. Usage is implied by the purpose, but no explicit when/when-not/alternatives are given.

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

  • Behavior2/5

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

    With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only hints at a limitation ('available issuer fundamentals', 'not a replacement'), but does not explicitly state whether the operation is read-only, what data is returned, or any side effects or prerequisites, which is insufficient for a tool without 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 a single concise sentence with two clauses, every word earns its place, and the key information is front-loaded. No redundant filler or restating of the tool name.

    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 simplicity (one required parameter, no output schema, no annotations), the description is minimally viable but leaves ambiguity about what 'fundamentals' includes and what the return payload looks like. The caveat about full financial statements adds context but does not complete the picture for an agent invoking the tool.

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

    Parameters2/5

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

    Schema description coverage is 0%, so the description must compensate. It clarifies that the tool works for 'one symbol', giving minimal cardinality context, but does not explain the expected format (e.g., ticker symbol), any constraints, or how the symbol parameter is used beyond that.

    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 uses a specific verb ('Get') and resource ('Schwab's available issuer fundamentals') for one symbol, clearly distinguishing this from sibling tools like get_quotes or get_price_history. The added clause 'not a replacement for full financial statements' further clarifies its scope.

    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 fetching per-symbol fundamentals and explicitly warns it is not a substitute for full financial statements, but it does not name alternative tools or provide explicit when-to-use versus when-not-to-use guidance relative to siblings.

    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?

    With no annotations provided, the description carries the full burden. It explicitly states 'This tool never changes accounts,' which is a strong behavioral disclosure for a read operation. However, it does not mention return format, authentication needs, or other behavioral details, but given the simplicity of the tool, this is a reasonable and valuable disclosure.

    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 extremely concise: two sentences, front-loaded with the primary purpose, and every sentence adds value. 'This tool never changes accounts' is a useful safety statement. No unnecessary words 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?

    Given the tool's simplicity (one optional parameter, no output schema, no annotations), the description covers the key aspects: what it does, what it can optionally include, and that it is non-mutating. It doesn't detail the return structure, but 'List' implies an array/list of accounts. For a tool of this complexity, it is reasonably 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?

    The description mentions 'optionally, their positions,' which alludes to the 'include_positions' parameter, but it does not explicitly connect the parameter name or describe the effect of setting it true/false. Since schema description coverage is 0%, the description partially compensates by linking the optional positions feature, but it lacks precise parameter semantics.

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

    Purpose4/5

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

    The description clearly states the tool's action: 'List linked Schwab accounts and, optionally, their positions.' This is a specific verb ('List') with a clear resource ('linked Schwab accounts'). It distinguishes from the sibling 'get_account' by using plural 'accounts', but does not explicitly name the alternative, so it misses full sibling differentiation.

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

    Usage Guidelines2/5

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

    The description provides no explicit guidance on when to use this tool versus alternatives like 'get_account' or 'get_transactions'. It implies usage by stating its purpose, but there are no when-to-use or when-not-to-use instructions, prerequisites, or exclusions. This is a clear gap.

    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?

    With no annotations, the description carries the burden of disclosing behavior. It explicitly states 'read-only' and adds nuance about Greeks being 'where available', which informs expectations about data completeness. This is useful behavioral context beyond a generic getter, though it lacks details on response format or pagination.

    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-formed sentence that is front-loaded with the core action and resource. It is concise, with no unnecessary words, and effectively communicates the essential purpose.

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

    Completeness2/5

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

    For a tool with 3 parameters and no output schema, the description is too sparse to support correct invocation. It does not clarify parameter defaults, allowed contract types, or the structure of the returned chain, leaving significant gaps for an agent to interpret.

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

    Parameters2/5

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

    The input schema has 3 parameters with zero description coverage, and the description does not explain the meaning or semantics of 'symbol', 'strike_count', or 'contract_type'. The description adds no parameter-level value, leaving the agent to guess the expected values and formats.

    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 'Get' and the resource 'option chain', and the mention of 'Schwab-provided Greeks' distinguishes it from sibling quote/price tools. The scope is unambiguous and directly identifies the tool's purpose.

    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 use for retrieving option chain data but provides no explicit guidance on when to use this tool versus alternatives like get_quotes or get_price_history. There is no mention of exclusions or alternative tools, leaving usage context only implicit.

    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?

    With no annotations provided, the description carries the full burden. It discloses the read-only nature and inclusive date behavior, but lacks details on pagination, authentication requirements, or behavior when no transactions are found.

    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 concise two-sentence structure, with the main action front-loaded. The second sentence adds a key safety clarification without unnecessary detail.

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

    Completeness2/5

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

    Given no annotations, no output schema, and 0% parameter coverage, the description is inadequate for a 4-parameter tool. It omits parameter explanations, return format, and edge-case behavior, leaving the agent without critical information.

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

    Parameters2/5

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

    Schema coverage is 0%, so the description must compensate. It only hints at the date range format (inclusive ISO-date) but does not explain account_hash, transaction_types, or the exact syntax for start_date and end_date, leaving significant gaps.

    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 reads transaction history within an inclusive ISO-date range. The verb 'Read' and resource 'transaction history' distinguish it from sibling market data and account tools, and the explicit note that it never submits an order clarifies its read-only nature.

    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 provides clear context for use: reading transactions in a date range. The phrase 'never submits an order' signals a safety distinction and implies a when-not scenario, but it does not explicitly name alternative tools or exclusions.

    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?

    With no annotations, the description carries the transparency burden. The verb 'Read' implies non-mutating behavior, and the prerequisite 'returned by get_accounts' adds context. However, it does not disclose error behavior, authentication, or response format beyond stating it returns balances and optional positions.

    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 concise sentence that front-loads the action and resource. Every word earns its place, with no redundancy or filler.

    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?

    The description covers the tool's purpose, the prerequisite relationship with get_accounts, and the optional positions parameter. Since there is no output schema, it gives a high-level indication of return data ('balances and optional positions'), though it omits details on error handling and exact response structure.

    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 0%, so the description must compensate. It explains that account_hash is 'one account hash returned by get_accounts' and that positions are optional (corresponding to include_positions). This adds meaningful semantic context beyond the raw 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 uses a specific verb ('Read') and resource ('balances and optional positions') for a single account hash. It explicitly distinguishes from the sibling get_accounts by stating the hash comes from that call, making the tool's scope clear.

    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 phrase 'returned by get_accounts' establishes a clear prerequisite and implies when to use this tool (after retrieving account hashes). It does not explicitly mention alternatives or exclusions, but the context is sufficient for basic guidance.

    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

schwab-readonly-mcp MCP server

Copy to your README.md:

Score Badge

schwab-readonly-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/chensirui2008/schwab-readonly-mcp'

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