Schwab MCP Server
Server Quality Checklist
Latest release: v1.0.0
- Disambiguation4/5
Most tools have distinct purposes, but there is some overlap between get_quote and get_quotes, which could cause confusion as they differ only in handling single vs. multiple symbols. The load_* tools and query_market_data are clearly differentiated by their data loading vs. querying roles, and other tools like get_positions and get_movers target unique functions.
Naming Consistency5/5All tool names follow a consistent verb_noun pattern using snake_case, such as get_instruments, load_option_chain, and query_market_data. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions.
Tool Count5/5With 9 tools, the server is well-scoped for market data and trading analysis, covering key areas like quotes, positions, movers, instruments, and SQL-based data handling. Each tool serves a clear purpose without redundancy, making the count appropriate for the domain.
Completeness4/5The tool set provides strong coverage for market data retrieval and analysis, including real-time quotes, historical data, options, and positions. A minor gap exists in the lack of tools for executing trades or managing orders, which might be expected in a trading context, but the available tools support comprehensive data workflows.
Average 3.4/5 across 9 of 9 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 0 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
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.
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.jsonto 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 provided, the description carries the full burden of behavioral disclosure. It mentions search and data retrieval functions but doesn't cover critical aspects like whether this is a read-only operation, potential rate limits, authentication needs, or what happens with invalid inputs. This leaves significant gaps for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core functionality without any wasted words. It directly communicates the tool's purpose in a compact form, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool with two parameters and multiple search types. It doesn't explain return values, error handling, or behavioral constraints, which are essential for proper agent usage in this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds minimal value by mentioning 'symbol or description' and 'fundamental data', which loosely map to parameters but don't provide additional syntax or format details beyond what the schema specifies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('search' and 'get') and resources ('instruments' and 'fundamental data'), making it easy to understand what the tool does. However, it doesn't explicitly distinguish this from sibling tools like 'get_quote' or 'get_quotes', which might also retrieve instrument-related 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/5Does 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 like 'get_quote' or 'get_quotes', nor does it mention any prerequisites or exclusions. It implies usage through its functional description but lacks explicit context for selection among siblings.
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 behavioral disclosure. It states what data is returned but doesn't cover critical aspects like whether this is a read-only operation (implied by 'Get' but not explicit), potential rate limits, authentication requirements, error conditions, or response format. For a financial data tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Get all positions') followed by specific data fields. Every word earns its place with zero redundancy or wasted phrasing. It's appropriately sized for a simple retrieval tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (financial data retrieval), lack of annotations, and no output schema, the description is incomplete. It doesn't explain the return structure, pagination, error handling, or data freshness—critical context for an agent to use this tool effectively. The description alone is insufficient for reliable tool invocation despite good conciseness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents the single optional parameter (account_id). The description adds no additional parameter semantics beyond implying the tool operates on an account. Since the schema already provides complete parameter documentation, the baseline score of 3 is appropriate—the description doesn't add value here but doesn't need to compensate for gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get all positions') and specifies the data fields returned (cost basis, quantity, market value, gain/loss) for a specific resource (account). It distinguishes from siblings like get_quote or get_quotes by focusing on portfolio positions rather than market data. However, it doesn't explicitly differentiate from all siblings (e.g., get_instruments might overlap in scope).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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 prerequisites, timing considerations, or compare it to sibling tools like get_instruments or query_market_data. The agent must infer usage solely from the tool name and description without explicit context.
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 provided, so the description carries the full burden of behavioral disclosure. It states the tool provides 'real-time quotes' but doesn't cover critical aspects like rate limits, authentication needs, data freshness, error handling, or response format. For a data-fetching tool with zero annotation coverage, this leaves significant gaps in understanding its 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key information ('Get real-time quotes for multiple symbols at once'). It wastes no words and directly communicates the core functionality, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool that fetches market data. It doesn't explain what the quotes include (e.g., price, volume), how results are returned, or any limitations. For a tool with no structured behavioral or output information, the description should provide more context to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'symbols' parameter clearly documented as 'List of ticker symbols'. The description adds no additional parameter details beyond what the schema provides, such as format examples or constraints. With high schema coverage, the baseline score of 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.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('real-time quotes for multiple symbols'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_quote' (singular) or 'query_market_data', which might offer similar functionality. The description is specific about batch processing ('multiple symbols at once') but lacks sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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 doesn't mention prerequisites, exclusions, or compare it to siblings like 'get_quote' (which might handle single symbols) or 'query_market_data' (which could offer broader market data). Usage context is implied by the batch nature but not explicitly stated.
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 provided, so the description carries the full burden of behavioral disclosure. It describes what information is returned but doesn't address important behavioral aspects such as whether this is a read-only operation (implied by 'get'), potential rate limits, authentication requirements, or response format. The description adds some context about content but lacks operational transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the tool's purpose and scope. It front-loads the main action ('get schema information') and includes relevant details without redundancy. Every part of the sentence contributes meaning, though it could be slightly more concise by removing 'like volume profile' which is somewhat extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no annotations, and no output schema, the description provides a basic understanding of what the tool does. However, it lacks details on behavioral traits (e.g., safety, performance) and doesn't explain the return format or structure. For a schema retrieval tool, more information about the output (e.g., JSON structure, example response) would enhance completeness, but the absence of an output schema means the description doesn't fully compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100% (though trivial since there are no parameters). The description appropriately doesn't discuss parameters, which is correct for a parameterless tool. It adds value by explaining what schema information is retrieved without needing to compensate for parameter documentation gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('get schema information') and resources ('market data tables'), including what information is retrieved (column definitions, available data, example SQL queries). It distinguishes from siblings by focusing on schema metadata rather than actual data retrieval or queries. However, it doesn't explicitly contrast with each sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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. While it mentions 'example SQL queries for common analyses,' it doesn't specify when this tool is appropriate compared to direct querying tools like 'query_market_data' or data retrieval tools like 'get_quote.' There are no explicit when/when-not statements or named alternatives.
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 full burden but only states what data is returned, not behavioral traits. It doesn't disclose whether this is a cached or live feed, rate limits, authentication requirements, error conditions, or what happens with invalid symbols. For a real-time data tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the core purpose, efficiently lists included data fields without unnecessary elaboration. Every word earns its place—no redundant phrases or structural waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter with full schema coverage and no output schema, the description adequately covers the basic purpose but lacks context for a real-time data tool. It doesn't explain return format, error handling, or behavioral nuances, making it minimally viable but with clear gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with one well-documented parameter, so the baseline is 3. The description adds no additional parameter semantics beyond what the schema provides (it doesn't clarify symbol format constraints, exchange requirements, or validation rules). The description's mention of 'stock symbol' aligns with but doesn't expand upon the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'real-time quote for a stock symbol', specifying what data is included (price, bid/ask, volume, fundamentals). It distinguishes from siblings like 'get_quotes' (plural) by focusing on a single symbol, but doesn't explicitly contrast with other market data tools like 'get_movers' or 'load_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 Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'get_quotes' (plural), 'load_price_history', or 'query_market_data'. The description implies it's for real-time single-symbol quotes but doesn't state exclusions or prerequisites, leaving the agent to infer usage context from the tool name alone.
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 behavioral disclosure. It describes the tool's function but lacks details on behavioral traits such as rate limits, authentication needs, output format, or whether it's a read-only operation. This leaves significant gaps for an agent to understand how to interact with it effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Get top movers') and includes key details without waste. Every word contributes to understanding the tool's function, making it appropriately sized and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters with enums) and no output schema, the description is adequate but incomplete. It covers the basic purpose and parameters but lacks information on return values, error handling, or behavioral constraints, which are important for an agent to use it correctly without annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with clear descriptions for all parameters (index, direction, change) including enums and defaults. The description adds minimal value beyond the schema by summarizing the parameters ('by percent or value change'), but doesn't provide additional context or usage examples, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get top movers') and resources ('for an index'), specifying what kind of data it retrieves. It distinguishes itself from siblings by focusing on market movers rather than quotes, positions, or schemas, though it doesn't explicitly contrast with similar tools like query_market_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning 'gainers or losers' and 'percent or value change,' suggesting when to use it for ranking market movements. However, it lacks explicit guidance on when to choose this tool over alternatives like get_quote or query_market_data, and no exclusions or prerequisites are stated.
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 full burden. It discloses that data is loaded into a SQL database (important behavioral context), but doesn't mention permissions needed, whether this is a read/write operation, potential data volume limitations, or what happens if the database already contains data. It adds some value but leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with zero waste: first states purpose, second provides usage guidance with alternative, third gives next-step workflow. Every sentence earns its place and information is front-loaded appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, 100% schema coverage, and no output schema, the description provides good contextual completeness. It explains the purpose, when to use it, and what to do next. However, as a data loading tool with no annotations, it should ideally mention more about the SQL database behavior (permissions, overwrite policy, etc.).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, but doesn't need to since schema coverage is complete. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Fetch option chain and load into SQL database') and distinguishes it from sibling 'get_option_chain' by specifying when to use this alternative ('when you need to analyze the data with SQL'). It provides both verb and resource with clear differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('Use this instead of get_option_chain when you need to analyze the data with SQL') and provides a clear workflow ('After loading, use query_market_data to run SQL queries'), giving both alternatives and next steps.
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 of behavioral disclosure. It explains the tool's primary behavior (fetching and loading data into a database) and mentions the need for subsequent querying, but lacks details about permissions, rate limits, error handling, or what 'loading' entails (e.g., overwriting existing data, appending). It doesn't contradict annotations, but could provide more operational 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and well-structured in just two sentences. The first sentence states the purpose and differentiation, while the second provides usage guidance and workflow. Every word earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, 100% schema coverage, and no output schema, the description provides good contextual completeness. It explains the tool's purpose, differentiation, and workflow. However, it could be more complete by mentioning what happens after loading (e.g., confirmation message, error handling) or prerequisites, though the lack of annotations means some behavioral gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, meaning all parameters are documented in the schema itself. The description doesn't add any specific parameter semantics beyond what's in the schema (e.g., it doesn't explain how 'period' interacts with 'period_type' or provide examples). Since the schema does the heavy lifting, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('fetch price history' and 'load into SQL database') and distinguishes it from sibling tools by explicitly mentioning 'use this instead of get_price_history'. It identifies the resource (price history) and the transformation (loading into SQL database).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('when you need to analyze the data with SQL') and when not to use it (instead of get_price_history). It also specifies the workflow by mentioning the subsequent tool to use ('After loading, use query_market_data to run SQL queries').
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 of behavioral disclosure. It effectively communicates key constraints: data must be pre-loaded, only SELECT queries are permitted, and specific tables are available. However, it doesn't mention potential limitations like query timeout, result size limits, or error handling, leaving some behavioral aspects unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with three sentences that each serve a distinct purpose: stating the tool's function, providing prerequisites and constraints, and directing to related tools. There is no wasted text, and critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (SQL query execution with dependencies) and lack of annotations/output schema, the description is mostly complete. It covers purpose, prerequisites, constraints, and related tools. However, it doesn't explain what the query returns (e.g., result format, error responses), which would be helpful since there's no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the single 'sql' parameter. The description adds minimal value beyond the schema by reiterating that it's a SELECT query against specific tables, but doesn't provide additional syntax, format examples, or constraints not already in the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('run SQL query') and resources ('against loaded market data'), explicitly naming the tables ('price_history and options tables'). It distinguishes from siblings by specifying this is for querying loaded data, unlike tools like get_quote or load_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 Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage instructions: 'First use load_price_history or load_option_chain to load data, then query it' and 'Only SELECT queries are allowed.' It also directs users to get_data_schema for table schemas and examples, clearly differentiating when to use this tool versus alternatives.
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
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/acidsolution/schwab-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server