agentladle/mcp-sec
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation5/5
Each tool targets a distinct stage of the SEC report lifecycle: discovery (list_sec_filings, lookup_ticker_cik), acquisition (download_sec_report), processing (parse_sec_report), and content access (keyword_search, get_report_pages, get_report_toc). The detailed strategy notes explicitly separate search vs. page reading vs. TOC retrieval, so an agent can reliably select the right tool.
Naming Consistency4/5Six of seven tools follow a clear verb_noun pattern (download_, parse_, get_, list_, lookup_), but keyword_search breaks the convention by leading with a noun/modifier instead of a verb (e.g., search_keywords would be consistent). Overall the pattern is still predictable and readable.
Tool Count5/5Seven tools is well-scoped for the server's purpose: a complete pipeline from ticker resolution to full-text search and page retrieval. Each tool covers a distinct function without redundancy, and the count sits comfortably in the ideal 3-15 range.
Completeness5/5The tooling covers the full lifecycle of SEC report analysis: listing available filings, resolving tickers, downloading, parsing, searching, navigating via TOC, and reading specific page ranges. There are no obvious dead ends; the explicit fallback flow from error-prone tools to download/parse/lookup ensures agents can recover.
Average 4.6/5 across 7 of 7 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 10 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.
This repository includes a glama.json configuration file.
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
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It reveals error behavior ('if missing, an error will prompt you to download and parse') and performance characteristics ('Reading TOC to find a chapter and then reading pages is much slower than direct keyword search'). It does not cover auth or rate limits, but the output schema exists, so return-value details are not required in the description.
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 well-structured with strategy and critical rules sections, each sentence earning its place. The Args section is redundant with the schema, but it is short and does not detract significantly. Overall it is appropriately sized for the complexity.
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?
The description provides strong usage guidance, alternatives, error behavior, and performance considerations. It is missing detailed parameter formats, but given the output schema exists and the tool is relatively simple, the description gives enough context for an agent to select and invoke it correctly for most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description merely lists parameter names without adding any semantics. It does not define what 'form' values are accepted, what date format 'report_date' expects, or how 'ticker' should be provided. The names are self-explanatory to a domain expert, but the description adds no value beyond the schema itself.
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 opens with a specific verb+resource: 'Retrieve the Table of Contents of a report,' and adds that it returns structured section metadata. It clearly differentiates from siblings by explicitly naming get_report_pages and keyword_search as alternatives for different use cases.
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?
Usage guidelines are explicit and thorough. The strategy block states when to use the tool ('when you need an overview or want to read a specific chapter in its entirety'), and the critical rules give a clear when-not-to-use: 'If you only need to locate specific numbers or singular facts, do NOT use this tool. Use keyword_search instead.' It also advises against using it when performance matters.
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 burden of behavioral disclosure. It does clarify that this tool is for verifying available dates and is not a mandatory first step, but it does not explicitly state that the operation is read-only, nor does it describe any rate limits, sorting, pagination, or response behavior. For a listing tool this is acceptable but not fully transparent.
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 well-structured with a summary, strategy, critical rules, examples, and Args. It is longer than necessary, and the strategy/critical_rules sections slightly overlap, but every section serves a distinct purpose and the content is front-loaded with the core purpose first.
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 that an output schema exists, the description covers the essential context: when to use, when to skip, parameter meanings, and example flows. It does not elaborate on return value details, but the output schema presumably handles that. Overall this is a complete, decision-useful description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema has 0% description coverage, the description's 'Args' section fully compensates by explaining each parameter: ticker with an example, form as a filing type filter with the ability to omit, and limit with default and max values. This adds clear meaning beyond the schema's bare type definitions.
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 opens with 'List available SEC filings for a company,' a specific verb+resource statement that clearly distinguishes this tool from siblings like keyword_search and download_sec_report. The examples reinforce the purpose by showing when to list filings versus skipping to search or download.
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 when-to-use and when-not-to-use guidance: skip this tool if the user specifies a year/date, and instead go to keyword_search or download_sec_report. It also states the fallback condition (if download fails due to invalid date/missing filing) and includes concrete examples for both skip and use cases.
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 must carry the full burden. It discloses the main behavior (parsing to JSON) and sequencing ('typically called immediately after download'), but lacks details on side effects, error handling, or whether existing JSON files are overwritten. However, parsing is inherently non-destructive, and the description does not contradict any 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear one-sentence summary, followed by concise, well-structured strategy and critical rules sections. The Args list is formatted cleanly with examples, ensuring every line adds value without redundancy.
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?
An output schema exists, so return values don't need explanation. The description covers purpose, usage conditions, and all parameter semantics, making it quite complete. Minor gaps include a lack of detail on how 'page-split' is structured or how exhibits are handled, but these are likely addressed by the output schema and are not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description fully compensates by defining each parameter with examples: 'ticker: Stock ticker symbol, e.g. AAPL', 'form: Report type, e.g. 10-K, 10-Q, 6-K, 8-K', and 'report_date: Report date (fiscal period end date), e.g. 2025-01-31.' It even clarifies the specific meaning of report_date, which is absent from the schema.
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 first sentence clearly states the tool's function: 'Parse a downloaded HTML report (and HTML exhibits, if present) into a page-split JSON file.' This specifies the verb (parse), resource (downloaded HTML report), and output (page-split JSON). The mention of 'immediately after download_sec_report' distinguishes it from sibling tools like search or listing.
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 'strategy' section explicitly lists two specific system states when the tool should be invoked: after a successful download via download_sec_report, or when a retrieval tool returns a parsing error. The 'critical_rules' further states 'Never call this tool preemptively,' providing clear exclusions and naming the prerequisite tool.
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?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It reveals error behavior (returning an error if file is missing, prompting download/parse) and warns about context overflow from excessive page_count. While it does not mention auth needs or rate limits, it addresses key operational risks and dependencies, going beyond a minimal description.
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 well-structured with sections for strategy, critical rules, and arguments. It is appropriately sized for a tool with 5 parameters and complex usage patterns. Some redundancy exists between the strategy statement and critical rule 1 (both emphasize not using blindly and finding start_page first), but overall it is efficient and scannable.
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 presence of an output schema, the description need not explain return values. It covers usage context (when to call, prerequisites), error behavior, and page_count limits. It adequately describes all required parameters. Minor gaps include potential edge cases like invalid start_page, but these are not critical for basic invocation. The description provides enough context for successful tool selection and use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides zero descriptions for parameters (0% coverage). The description compensates fully through the 'Args' list, explaining each parameter: ticker, form, report_date (fiscal period end date), start_page (1-based), and page_count (default 3, max 5). This is exactly the meaning the schema would otherwise lack, making the tool usable.
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 opens with a clear and specific action: 'Retrieve full page content for a range of pages from a report.' It identifies the exact resource (report pages) and scope (range, continuous blocks). It also distinguishes itself from sibling keyword_search by explicitly stating that tool is for specific data points, making purpose boundaries obvious.
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 <strategy> block provides explicit guidance on when to invoke this tool ('Directly invoke this tool to retrieve large, continuous blocks of text'), when not to use it ('If looking for specific data points, use keyword_search instead'), and prerequisites ('typically called after keyword_search or get_report_toc has provided the starting page'). Critical rules reinforce the need to determine start_page first, effectively outlining the correct workflow.
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 full burden. It discloses sorting by relevance (TF), word-boundary matching, and error behavior for missing files. It does not mention edge cases like empty results or pagination, but it covers the key behavioral traits beyond basic 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 well-structured with clear headings (<strategy>, <critical_rules>, <examples>, Args). Every section adds value, including concrete examples. It is appropriately sized for a complex tool with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the six parameters, no annotations, and the presence of an output schema, the description fully covers the tool's operation, usage guidelines, parameter semantics, and even includes example inputs. It explains error behavior and provides enough context for an agent to select and invoke the tool correctly without needing additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions (0% coverage), but the description compensates with an 'Args' section explaining each parameter (e.g., 'report_date: Report date (fiscal period end date)') and provides critical rules for keyword selection, including synonym expansion and cognitive translation. This adds substantial meaning beyond the raw schema.
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 verb and resource: 'Search parsed reports by keyword full-text search' and further specifies results orientation and matching behavior. It distinguishes from siblings by noting when to use get_report_pages for lengthy chapters instead, and positions itself as the tool for precise information extraction.
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 <strategy> section explicitly says when to invoke the tool ('Directly invoke this tool to find specific financial data, facts, or keyword discussions') and provides guidance on not pre-checking file existence. It also mentions an alternative tool (get_report_pages) for a different use case, giving clear when-to/when-not-to 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?
With no annotations, the description carries full behavioral burden. It clearly discloses that PDF exhibits are skipped and never parsed, that HTML exhibits are included by default for 6-K/8-K, and that a successful download must be followed by parse_sec_report. It also notes the pdf_not_supported limitation, providing useful 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 well organized with purpose, strategy, critical rules, and args. However, there is some redundancy: 'PDF exhibits are skipped, not parsed' appears twice, and the proactive-call warning overlaps with critical rule 1. Still, the structure is clear and all content is relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides fallback triggers, post-download parse requirements, exhibit handling rules, and parameter semantics. An output schema exists, so return value details are not necessary in the description. This is complete enough for an agent to use the tool correctly within the sibling workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by giving concrete examples: ticker like 'AAPL', form types like '10-K' and '6-K', report_date as fiscal period end date or fiscal year, and include_exhibits with context-dependent defaults plus the note that PDF exhibits are never parsed.
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 uses a specific verb and resource: 'Download a SEC report from EDGAR for the specified company, form type, and report date.' It also mentions exhibit handling for 6-K/8-K, which adds detail and distinguishes this tool from siblings like keyword_search and parse_sec_report.
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 <strategy> block explicitly states to invoke this tool 'ONLY as a fallback when keyword_search, get_report_pages, or get_report_toc explicitly returns a "file not found" error' and includes 'Do not proactively call this tool without receiving an error first.' Critical rule 1 reinforces the search-before-download ordering, making the usage conditions unambiguous.
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?
With no annotations, the description carries full burden and does so well. It discloses that the tool bypasses and can clear the session-level failed-ticker blacklist, explains cache-first behavior via refresh=false, and notes alias retry behavior—all critical operational traits beyond the schema.
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 longer than minimal but well-structured with a one-line summary, strategy, critical rules, and an example. Every section adds actionable value and the critical rules are front-loaded after the summary, making it easy for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers trigger conditions, recovery workflow, cache/refresh policy, side effects, and alias retry. Since an output schema exists, it does not need to explain return values, and the included operational guidance makes it complete for this diagnostic tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description fully compensates. It explains 'ticker' with the example 'BABA' and clarifies 'refresh' as 'Force re-download of company_tickers.json from SEC (default: false)', adding practical meaning beyond the bare schema fields.
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 opens with a specific verb+resource: 'Look up the SEC CIK mapping for a ticker symbol.' It also labels the tool as a 'Diagnostic / recovery tool,' clearly distinguishing it from siblings like download_sec_report or list_sec_filings.
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 <strategy> section states exactly when to invoke: ONLY when download_sec_report or list_sec_filings returns 'CIK not found' or 'Ticker not found', and explicitly says not to use it as a routine first step. It also provides post-lookup retry guidance and alias handling.
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/agentladle/mcp-sec'
If you have feedback or need assistance with the MCP directory API, please join our Discord server