Query SEC EDGAR filings, XBRL financials, and company data with tools for company search, full-text filing search, financial data retrieval, and cross-company metric comparison.
Do not connect
A critical issue was found. Do not connect this server as-is.
Scanned 1 month ago Due for re-check
A server can change after it's graded. Re-run the automated scan to refresh this report.
This grade is deterministic and reproducible: the same server surface always yields the same grade under a given algorithm version. It is a real automated assessment computed by the MCPGrade engine from what the probe actually observed — not a fabricated or opinion score. It is not a manual human pentest, so it can miss context-specific risks.
Every signal below was measured directly by the automated probe. The grade is derived only from evidence like this — nothing is assumed.
The secedgar-mcp-server MCP server exposes 16 tools, focused primarily on database and web capabilities. Its published description reads: "Query SEC EDGAR filings, XBRL financials, and company data with tools for company search, full-text filing search, financial data retrieval, and cross-company metric comparison". It communicates over Streamable HTTP using the 2025-06-18 protocol revision, and does not require authorization to connect. MCPGrade currently rates secedgar-mcp-server F — a critical issue was found and the server should not be connected as-is. Its most notable findings include "Cross-tool shadowing" and "Cross-tool shadowing". This report is a deterministic, reproducible automated assessment: the same observed surface always yields the same grade under a given algorithm version, and it is refreshed as new scans arrive and free to read — but it is not a substitute for a manual human security review. Always re-check secedgar-mcp-server's advertised tools, transport security, and authorization posture before connecting an autonomous agent or sharing sensitive context with it.
Add secedgar-mcp-server to an MCP client using the endpoint below. Review the grade and findings above before granting an autonomous agent access.
MCP endpoint
https://secedgar.caseyjhand.com/mcpStreamable HTTP transport. This is the MCP endpoint, not a website — paste it into your MCP client server list rather than a browser.
Captured passively during the read-only scan. Click any value to find servers that match it.
The tools this server advertises via tools/list — names, purposes, and the parameters each accepts, exactly as enumerated read-only.
Find companies and retrieve entity info with optional recent filings. Entry point for most EDGAR workflows — resolves tickers, names, or CIKs to entity details, with accession numbers in the result fe
Sorted worst-first. Each finding shows its severity, what it means, its OWASP MCP Top-10 mapping, and a recommended fix — the check id links to the exact methodology row that produced it.
tool: secedgar_company_search
A tool description tries to alter the model’s use of another tool.
result feeding secedgar_get_filing for document content.RecommendationDescriptions must describe only their own tool.
tool: secedgar_get_financials
A tool description tries to alter the model’s use of another tool.
ndly names with secedgar_search_concepts. Handles historical tag changes and deduplicateRecommendationDescriptions must describe only their own tool.
tool: secedgar_get_snapshot
A tool description tries to alter the model’s use of another tool.
places a run of secedgar_get_financials calls when the question is "what do this companRecommendationDescriptions must describe only their own tool.
tool: secedgar_get_material_events
A tool description tries to alter the model’s use of another tool.
arch_filings or secedgar_company_search, neither of which can see items. Each row carriRecommendationDescriptions must describe only their own tool.
tool: secedgar_get_insider_transactions
A tool description tries to alter the model’s use of another tool.
raded END). Use secedgar_search_filings with forms=["4"] for broader date-range queriesRecommendationDescriptions must describe only their own tool.
tool: secedgar_get_institutional_holdings
A tool description tries to alter the model’s use of another tool.
y not file. Use secedgar_search_filings with forms=["13F-HR"] for broader search.RecommendationDescriptions must describe only their own tool.
tool: secedgar_find_holders
A tool description tries to alter the model’s use of another tool.
se direction of secedgar_get_institutional_holdings: that tool takes a manager and returns its portRecommendationDescriptions must describe only their own tool.
tool: secedgar_get_beneficial_owners
A tool description tries to alter the model’s use of another tool.
direction from secedgar_get_institutional_holdings, where the input is the manager. 13D is the actRecommendationDescriptions must describe only their own tool.
tool: secedgar_get_fund_holdings
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
parameter "report_date"RecommendationRemove side-channel parameters; constrain tool inputs.
tool: secedgar_get_fund_holdings
A tool description tries to alter the model’s use of another tool.
wnership tools: secedgar_get_institutional_holdings and secedgar_find_holders answer who owns a comRecommendationDescriptions must describe only their own tool.
tool: secedgar_get_fund_holdings
One tool reads private data, ingests untrusted content, AND can send data outbound — the three preconditions for autonomous data theft in a single call. A prompt injection reaching this tool can exfiltrate secrets with no further step.
next_offset to read the next page — the report is parsed whole and sliced, so pagRecommendationSplit the capabilities across separate least-privilege tools so no single tool can read secrets, read untrusted input, and reach the network at once.
tool: secedgar_fetch_frames
A tool description tries to alter the model’s use of another tool.
" (discover via secedgar_search_concepts) or raw XBRL tags. One call hits one XBRL tag —RecommendationDescriptions must describe only their own tool.
tool: secedgar_fetch_frames
One tool reads private data, ingests untrusted content, AND can send data outbound — the three preconditions for autonomous data theft in a single call. A prompt injection reaching this tool can exfiltrate secrets with no further step.
ous response to read the next page — the ranked list is fetched whole and sliced,RecommendationSplit the capabilities across separate least-privilege tools so no single tool can read secrets, read untrusted input, and reach the network at once.
tool: secedgar_compare_companies
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
e concept, full history) and secedgar_fetch_frames (one concept, one peRecommendationRemove side-channel parameters; constrain tool inputs.
tool: secedgar_compare_companies
A tool description tries to alter the model’s use of another tool.
e shape between secedgar_get_financials (one company, one concept, full history) and seRecommendationDescriptions must describe only their own tool.
tool: secedgar_search_concepts
A tool description tries to alter the model’s use of another tool.
omy. Use before secedgar_get_financials or secedgar_fetch_frames to discover the rightRecommendationDescriptions must describe only their own tool.
tool: secedgar_dataframe_describe
A tool description tries to alter the model’s use of another tool.
r_fetch_frames, secedgar_search_filings, secedgar_get_financials, secedgar_get_insider_RecommendationDescriptions must describe only their own tool.
tool: secedgar_dataframe_query
A tool description tries to alter the model’s use of another tool.
r_fetch_frames, secedgar_search_filings, and secedgar_get_financials. Read-only: writesRecommendationDescriptions must describe only their own tool.
tool: secedgar_dataframe_query
A database tool exposes a query/sql parameter that is a free-form string with no allow-list or parameterisation constraint — a raw-string injection surface. A tool exposing structured filters or an `enum` of named queries does not fire.
unconstrained query parameter "sql"RecommendationExpose parameterised operations instead of a raw query string; never build queries from unvalidated model output.
tool: (server instructions)
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
a company's 8-K history by item code (2.02 results, 5.02 officer changeRecommendationRemove side-channel parameters; constrain tool inputs.
tool: (server instructions)
A tool description tries to alter the model’s use of another tool.
companies with secedgar_company_search (accepts ticker, name, or CIK), fetch documentRecommendationDescriptions must describe only their own tool.
The server accepts tool enumeration (and likely invocation) with no authentication.
RecommendationRequire OAuth 2.1 authorization for any server exposing non-public tools.
tool: secedgar_company_search
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: secedgar_search_filings
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: secedgar_get_filing
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: secedgar_get_financials
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: secedgar_get_snapshot
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: secedgar_get_material_events
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: secedgar_get_insider_transactions
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: secedgar_get_institutional_holdings
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: secedgar_find_holders
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: secedgar_get_beneficial_owners
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: secedgar_get_fund_holdings
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: secedgar_fetch_frames
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
tool: secedgar_compare_companies
The server advertises open-world / broadly-scoped capabilities.
annotations.openWorldHint = trueRecommendationScope tools to the minimum needed.
Vantaj uptime monitoring via MCP — manage monitors, heartbeats, incidents, and status pages.
Unified gateway to Algeria's TKAWEN ecosystem: commerce, certification, and AI tools.
Provides access to the Cohereon Doctrine AI safety framework with governance components, tiered access, and agent onboarding.
Agentic rails for complex workflows with receipts, fees, and MCP tool access.
Structural TC39 spec lookup for ECMA-262 and ECMA-402 in AI agents, SHA-pinned and offline-first.
Structural TC39 spec lookup for ECMA-262 and ECMA-402 in AI agents, SHA-pinned and offline-first.
Search EDGAR filings since 1993. Full-text search covers 2001-present (the EFTS index floor); pre-2001 date ranges (to 1993) are served from the archives by form and entity/date. Pre-2001 free text ne
Fetch a specific filing's metadata and document content by accession number. Returns the primary document as readable text. Use offset/next_offset for multi-page access to large filings (10-K, S-1 can
Get historical XBRL financial data for a company. Accepts friendly concept names (e.g., "revenue", "net_income", "assets") or raw XBRL tags. Discover available friendly names with secedgar_search_conc
Build a company financial profile in one call: the latest value of every supported XBRL concept, grouped by statement. Reads the filer's complete companyfacts payload once rather than one request per
Retrieve a company's 8-K filings with their item codes decoded, optionally filtered to specific items. 8-K item codes are how material events are actually scoped — 1.01 material agreements, 2.02 resul
Fetch Form 4 insider transactions (purchases, sales, grants, exercises) for a company by parsing SEC EDGAR ownership XML. Returns the reporting person, their relationship to the issuer, transaction da
Fetch 13F-HR quarterly institutional holdings by parsing the SEC EDGAR information table XML. ticker_or_cik is the institutional filer — its 10-digit CIK (e.g. 0000102909), or an entity name resolved
Find which institutional managers reported holding an issuer, by searching 13F-HR information tables for one reporting quarter. This is the reverse direction of secedgar_get_institutional_holdings: th
List the 5%-and-over beneficial owners of a public company, parsed from the structured SCHEDULE 13D and SCHEDULE 13G filings made about it. The input is the ISSUER — the company being held — which is
List what an ETF or mutual fund holds, parsed from the NPORT-P portfolio report it files with the SEC every quarter. The input is the fund — a ticker like VOO, a fund series ID, or the registrant trus
Fetch SEC XBRL frames for one concept × one period across all reporting companies. Inline response returns a page of the ranked companies — start at the top or pass offset/next_offset to walk further
Compare 2-10 named companies across 1-8 XBRL concepts, aligned on calendar periods. This is the middle shape between secedgar_get_financials (one company, one concept, full history) and secedgar_fetch
Search supported XBRL financial concepts by keyword, statement group, or taxonomy. Use before secedgar_get_financials or secedgar_fetch_frames to discover the right friendly name, or pass a raw XBRL t
List dataframes (df_XXXXX_XXXXX) materialized by secedgar_fetch_frames, secedgar_search_filings, secedgar_get_financials, secedgar_get_insider_transactions, and secedgar_get_institutional_holdings. Ea
Run a single-statement SELECT against the canvas dataframes registered by secedgar_fetch_frames, secedgar_search_filings, and secedgar_get_financials. Read-only: writes, DDL, DROP, COPY, PRAGMA, ATTAC