Show HN: I scanned 87 MCP servers for agent-authority hygiene – leaderboard A developer scanned 87 MCP servers for security hygiene using a deterministic rule engine, publishing a leaderboard that grades servers from 100 (clean) down based on critical, high, medium, and low findings. The top 24 servers scored a perfect 100, while servers like Find-A-Domain MCP and Astro Docs MCP received deductions for unconstrained string inputs that could enable injection attacks. The MCP security leaderboard. Every published MCP server, graded against the deterministic capframe rule engine. Score 100 is a clean surface; every Critical finding takes 10 points. High 4, Medium 2, Low 1. No black boxes — the formula is public, the rules are open-source https://github.com/capframe/capframe/blob/main/schemas/findings.v1.json . § biggest movers → /leaderboard/movers diff vs. previous scan 01magicnpm:@21st-dev/magic@0.1.0A1001— clean — /leaderboard/npm-21st-dev-magic-0-1-0 02mcp-server-cloudflarenpm:@cloudflare/mcp-server-cloudflare@0.2.0A1001— clean — /leaderboard/npm-cloudflare-mcp-server-cloudflare-0-2-0 03mcp-servernpm:@e2b/mcp-server@0.2.3A1001— clean — /leaderboard/npm-e2b-mcp-server-0-2-3 04mcp-server-elasticsearchnpm:@elastic/mcp-server-elasticsearch@0.3.1A1004— clean — /leaderboard/npm-elastic-mcp-server-elasticsearch-0-3-1 05playwright-mcp-servernpm:@executeautomation/playwright-mcp-server@1.0.12A1001— clean — /leaderboard/npm-executeautomation-playwright-mcp-server-1-0-12 06server-calendar-autoauth-mcpnpm:@gongrzhe/server-calendar-autoauth-mcp@1.0.2A1001— clean — /leaderboard/npm-gongrzhe-server-calendar-autoauth-mcp-1-0-2 07mcp-fetchnpm:@kazuph/mcp-fetch@1.6.2A1001— clean — /leaderboard/npm-kazuph-mcp-fetch-1-6-2 08server-aws-kb-retrievalnpm:@modelcontextprotocol/server-aws-kb-retrieval@0.6.2A1001— clean — /leaderboard/npm-modelcontextprotocol-server-aws-kb-retrieval-0-6-2 09server-gdrivenpm:@modelcontextprotocol/server-gdrive@2025.1.14A1002— clean — /leaderboard/npm-modelcontextprotocol-server-gdrive-2025-1-14 10server-google-mapsnpm:@modelcontextprotocol/server-google-maps@0.6.2A1007— clean — /leaderboard/npm-modelcontextprotocol-server-google-maps-0-6-2 11notion-mcp-servernpm:@notionhq/notion-mcp-server@2.2.1A1001— clean — /leaderboard/npm-notionhq-notion-mcp-server-2-2-1 12mcpnpm:@stripe/mcp@0.3.3A1001— clean — /leaderboard/npm-stripe-mcp-0-3-3 13exa-mcp-servernpm:exa-mcp-server@3.2.1A1003— clean — /leaderboard/npm-exa-mcp-server-3-2-1 14linear-mcpnpm:linear-mcp@1.2.0A1001— clean — /leaderboard/npm-linear-mcp-1-2-0 15mcp-server-kubernetesnpm:mcp-server-kubernetes@3.8.0A1001— clean — /leaderboard/npm-mcp-server-kubernetes-3-8-0 16perplexity-mcpnpm:perplexity-mcp@0.2.3A1001— clean — /leaderboard/npm-perplexity-mcp-0-2-3 17mcp-atlassianpypi:mcp-atlassian@0.21.1A1000— clean — /leaderboard/pypi-mcp-atlassian-0-21-1 18mcp-azure-devopspypi:mcp-azure-devops@0.6.0A1001— clean — /leaderboard/pypi-mcp-azure-devops-0-6-0 19mcp-llms-txtpypi:mcp-llms-txt@0.2.0A1001— clean — /leaderboard/pypi-mcp-llms-txt-0-2-0 20mcp-server-bigquerypypi:mcp-server-bigquery@0.3.2A1003— clean — /leaderboard/pypi-mcp-server-bigquery-0-3-2 21mcp-server-dockerpypi:mcp-server-docker@0.2.1A1001— clean — /leaderboard/pypi-mcp-server-docker-0-2-1 22mcp-server-jirapypi:mcp-server-jira@0.1.1A1001— clean — /leaderboard/pypi-mcp-server-jira-0-1-1 23mcp-server-kubernetespypi:mcp-server-kubernetes@0.1.6A1001— clean — /leaderboard/pypi-mcp-server-kubernetes-0-1-6 24mcp-server-postgrespypi:mcp-server-postgres@0.1.0A1001— clean — /leaderboard/pypi-mcp-server-postgres-0-1-0 25Find-A-Domain MCPhttps://api.findadomain.dev/mcpA9821M - mediumTool check domain accepts unconstrained string input · check domain /leaderboard/https-api-findadomain-dev-mcp/check-domain unconstrained inputThe following string parameter s have no maxLength constraint: name , tld . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-api-findadomain-dev-mcp 26Astro Docs MCPhttps://mcp.docs.astro.build/mcpA9811M - mediumTool search astro docs accepts unconstrained string input · search astro docs /leaderboard/https-mcp-docs-astro-build-mcp/search-astro-docs unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-mcp-docs-astro-build-mcp 27Exa Search MCPhttps://mcp.exa.ai/mcpA9821M - mediumTool web search exa accepts unconstrained string input · web search exa /leaderboard/https-mcp-exa-ai-mcp/web-search-exa unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-mcp-exa-ai-mcp 28grep.app MCPhttps://mcp.grep.appA9811M - mediumTool searchGitHub accepts unconstrained string input · searchGitHub /leaderboard/https-mcp-grep-app/searchgithub unconstrained inputThe following string parameter s have no maxLength constraint: path , query , repo . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-mcp-grep-app 29Remote MCP Directoryhttps://mcp.remote-mcp.comA9811M - mediumTool ListRemoteMCPServers accepts unconstrained string input · ListRemoteMCPServers /leaderboard/https-mcp-remote-mcp-com/listremotemcpservers unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-mcp-remote-mcp-com 30server-postgresnpm:@modelcontextprotocol/server-postgres@0.6.2A9811M - mediumTool query accepts unconstrained string input · query /leaderboard/npm-modelcontextprotocol-server-postgres-0-6-2/query unconstrained inputThe following string parameter s have no maxLength constraint: sql . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-modelcontextprotocol-server-postgres-0-6-2 31server-sequential-thinkingnpm:@modelcontextprotocol/server-sequential-thinking@2025.12.18A9811M - mediumTool sequentialthinking accepts unconstrained string input · sequentialthinking /leaderboard/npm-modelcontextprotocol-server-sequential-thinking-2025-12-18/sequentialthinking unconstrained inputThe following string parameter s have no maxLength constraint: branchId , thought . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-modelcontextprotocol-server-sequential-thinking-2025-12-18 32Figma Framelink MCPnpm:figma-developer-mcp@0.12.0A9821M - mediumTool download figma images accepts unconstrained string input · download figma images /leaderboard/npm-figma-developer-mcp-0-12-0/download-figma-images unconstrained inputThe following string parameter s have no maxLength constraint: localPath . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-figma-developer-mcp-0-12-0 33Cloudflare Docs MCPhttps://docs.mcp.cloudflare.com/mcpA9622M - mediumTool search cloudflare documentation accepts unconstrained string input · search cloudflare documentation /leaderboard/https-docs-mcp-cloudflare-com-mcp/search-cloudflare-documentation unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool search cloudflare documentation description mentions money but no money side-effect is declared · search cloudflare documentation /leaderboard/https-docs-mcp-cloudflare-com-mcp/search-cloudflare-documentation excessive agencyDescription: "Search the Cloudflare documentation. This tool should be used to answer any question about Cloudflare products or features, including: - Workers, Pages, R2, Images, Stream, D1, Durable Objects, KV, Workflows, Hyperdrive, Queues - AI Search, Workers AI, Vectorize, AI Gateway, Browser Rendering - Zero Trust, Access, Tunnel, Gateway, Browser Isolation, WARP, DDOS, Magic Transit, Magic WAN - CDN, Cache, DNS, Zaraz, Argo, Rulesets, Terraform, Account and Billing Results are returned as semantically similar chunks to the query. " -- this references money/payment/refund/etc., but the declared side effects don't include money . A capframe-bind policy that relies on declared side effects to scope spend caveats will under-scope this tool. fix: Add money to the tool's side effects declaration, or rewrite the description to clarify that no actual money moves. Open full report /leaderboard/https-docs-mcp-cloudflare-com-mcp 34Context7 MCPhttps://mcp.context7.com/mcpA9622M - mediumTool resolve-library-id accepts unconstrained string input · resolve-library-id /leaderboard/https-mcp-context7-com-mcp/resolve-library-id unconstrained inputThe following string parameter s have no maxLength constraint: libraryName , query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool query-docs accepts unconstrained string input · query-docs /leaderboard/https-mcp-context7-com-mcp/query-docs unconstrained inputThe following string parameter s have no maxLength constraint: libraryId , query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-mcp-context7-com-mcp 35DeepWiki MCPhttps://mcp.deepwiki.com/mcpA9632M - mediumTool read wiki structure accepts unconstrained string input · read wiki structure /leaderboard/https-mcp-deepwiki-com-mcp/read-wiki-structure unconstrained inputThe following string parameter s have no maxLength constraint: repoName . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool read wiki contents accepts unconstrained string input · read wiki contents /leaderboard/https-mcp-deepwiki-com-mcp/read-wiki-contents unconstrained inputThe following string parameter s have no maxLength constraint: repoName . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-mcp-deepwiki-com-mcp 36OpenZeppelin Stellar Contracts MCPhttps://mcp.openzeppelin.com/contracts/stellar/mcpA9631H - highTool stellar-non-fungible accepts an unconstrained URL / endpoint parameter · stellar-non-fungible /leaderboard/https-mcp-openzeppelin-com-contracts-stellar-mcp/stellar-non-fungible ssrf surfaceThe parameter s tokenUri look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. Open full report /leaderboard/https-mcp-openzeppelin-com-contracts-stellar-mcp 37Context Awesome MCPhttps://www.context-awesome.com/api/mcpA9622M - mediumTool find awesome section accepts unconstrained string input · find awesome section /leaderboard/https-www-context-awesome-com-api-mcp/find-awesome-section unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get awesome items accepts unconstrained string input · get awesome items /leaderboard/https-www-context-awesome-com-api-mcp/get-awesome-items unconstrained inputThe following string parameter s have no maxLength constraint: githubRepo , listId , section , subcategory . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-www-context-awesome-com-api-mcp 38server-gmail-autoauth-mcpnpm:@gongrzhe/server-gmail-autoauth-mcp@1.1.11A9661H - highTool savePath name implies a side effect that is not declared · savePath /leaderboard/npm-gongrzhe-server-gmail-autoauth-mcp-1-1-11/savepath excessive agency savePath looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . Open full report /leaderboard/npm-gongrzhe-server-gmail-autoauth-mcp-1-1-11 39server-brave-searchnpm:@modelcontextprotocol/server-brave-search@0.6.2A9622M - mediumTool brave web search accepts unconstrained string input · brave web search /leaderboard/npm-modelcontextprotocol-server-brave-search-0-6-2/brave-web-search unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool brave local search accepts unconstrained string input · brave local search /leaderboard/npm-modelcontextprotocol-server-brave-search-0-6-2/brave-local-search unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-modelcontextprotocol-server-brave-search-0-6-2 40server-slacknpm:@modelcontextprotocol/server-slack@2025.4.25A9681H - highTool slack post message name implies a side effect that is not declared · slack post message /leaderboard/npm-modelcontextprotocol-server-slack-2025-4-25/slack-post-message excessive agency slack post message looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . Open full report /leaderboard/npm-modelcontextprotocol-server-slack-2025-4-25 41context7-mcpnpm:@upstash/context7-mcp@3.0.0A9622M - mediumTool resolve-library-id accepts unconstrained string input · resolve-library-id /leaderboard/npm-upstash-context7-mcp-3-0-0/resolve-library-id unconstrained inputThe following string parameter s have no maxLength constraint: libraryName , query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool query-docs accepts unconstrained string input · query-docs /leaderboard/npm-upstash-context7-mcp-3-0-0/query-docs unconstrained inputThe following string parameter s have no maxLength constraint: libraryId , query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-upstash-context7-mcp-3-0-0 42mcp-server-timepypi:mcp-server-time@2026.1.26A9622M - mediumTool get current time accepts unconstrained string input · get current time /leaderboard/pypi-mcp-server-time-2026-1-26/get-current-time unconstrained inputThe following string parameter s have no maxLength constraint: timezone . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool convert time accepts unconstrained string input · convert time /leaderboard/pypi-mcp-server-time-2026-1-26/convert-time unconstrained inputThe following string parameter s have no maxLength constraint: source timezone , target timezone , time . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/pypi-mcp-server-time-2026-1-26 43Ferryhopper MCPhttps://mcp.ferryhopper.com/mcpB9443M - mediumTool get disruptions accepts unconstrained string input · get disruptions /leaderboard/https-mcp-ferryhopper-com-mcp/get-disruptions unconstrained inputThe following string parameter s have no maxLength constraint: country , tripDate . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get direct connections for ports accepts unconstrained string input · get direct connections for ports /leaderboard/https-mcp-ferryhopper-com-mcp/get-direct-connections-for-ports unconstrained inputThe following string parameter s have no maxLength constraint: portLocation . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool search trips accepts unconstrained string input · search trips /leaderboard/https-mcp-ferryhopper-com-mcp/search-trips unconstrained inputThe following string parameter s have no maxLength constraint: arrivalLocation , date , departureLocation . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-mcp-ferryhopper-com-mcp 44OpenZeppelin Stylus Contracts MCPhttps://mcp.openzeppelin.com/contracts/stylus/mcpB9433M - mediumTool stylus-erc20 accepts unconstrained string input · stylus-erc20 /leaderboard/https-mcp-openzeppelin-com-contracts-stylus-mcp/stylus-erc20 unconstrained inputThe following string parameter s have no maxLength constraint: name . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool stylus-erc721 accepts unconstrained string input · stylus-erc721 /leaderboard/https-mcp-openzeppelin-com-contracts-stylus-mcp/stylus-erc721 unconstrained inputThe following string parameter s have no maxLength constraint: name . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool stylus-erc1155 accepts unconstrained string input · stylus-erc1155 /leaderboard/https-mcp-openzeppelin-com-contracts-stylus-mcp/stylus-erc1155 unconstrained inputThe following string parameter s have no maxLength constraint: name . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-mcp-openzeppelin-com-contracts-stylus-mcp 45Magic UI MCPnpm:@magicuidesign/mcp@2.0.0B9433M - mediumTool listRegistryItems accepts unconstrained string input · listRegistryItems /leaderboard/npm-magicuidesign-mcp-2-0-0/listregistryitems unconstrained inputThe following string parameter s have no maxLength constraint: kind , query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool getRegistryItem accepts unconstrained string input · getRegistryItem /leaderboard/npm-magicuidesign-mcp-2-0-0/getregistryitem unconstrained inputThe following string parameter s have no maxLength constraint: name . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool searchRegistryItems accepts unconstrained string input · searchRegistryItems /leaderboard/npm-magicuidesign-mcp-2-0-0/searchregistryitems unconstrained inputThe following string parameter s have no maxLength constraint: kind , query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-magicuidesign-mcp-2-0-0 46firecrawl-mcpnpm:firecrawl-mcp@3.20.1B9443M - mediumTool Call fetches external web content -- indirect-injection surface · Call /leaderboard/npm-firecrawl-mcp-3-20-1/call indirect injectionDescription: " firecrawl agent with your prompt/schema → returns job ID" -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool Poll fetches external web content -- indirect-injection surface · Poll /leaderboard/npm-firecrawl-mcp-3-20-1/poll indirect injectionDescription: " firecrawl agent status with the job ID to check progress" -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool When fetches external web content -- indirect-injection surface · When /leaderboard/npm-firecrawl-mcp-3-20-1/when indirect injectionDescription: "status is "completed", the response includes the extracted data Best for: - Complex research tasks where you don't know the exact URLs - Multi-source data gathering - Finding information scattered across the web - Tasks where you can do other work while waiting for results Not recommended for: - Simple single-page scraping where you know the URL use scrape with JSON format - faster and cheaper Arguments: - prompt : Natural language description of the data you want required, max 10,000 characters - urls : Optional array of URLs to focus the agent on specific pages - schema : Optional JSON schema for structured output Prompt Example: "Find the founders of Firecrawl and their backgrounds" Usage Example start agent, then poll for results : json { "name": "fi..." -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. Open full report /leaderboard/npm-firecrawl-mcp-3-20-1 47mcp-server-gitpypi:mcp-server-git@2026.1.14B94121H1M - highTool git create branch name implies a side effect that is not declared · git create branch /leaderboard/pypi-mcp-server-git-2026-1-14/git-create-branch excessive agency git create branch looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - mediumTool git checkout description mentions money but no money side-effect is declared · git checkout /leaderboard/pypi-mcp-server-git-2026-1-14/git-checkout excessive agencyDescription: "Switches branches - Inputs: - repo path string : Path to Git repository - branch name string : Name of branch to checkout - Returns: Confirmation of branch switch" -- this references money/payment/refund/etc., but the declared side effects don't include money . A capframe-bind policy that relies on declared side effects to scope spend caveats will under-scope this tool. fix: Add money to the tool's side effects declaration, or rewrite the description to clarify that no actual money moves. Open full report /leaderboard/pypi-mcp-server-git-2026-1-14 48OpenZeppelin Solidity Contracts MCPhttps://mcp.openzeppelin.com/contracts/solidity/mcpB9282H - highTool solidity-erc721 accepts an unconstrained URL / endpoint parameter · solidity-erc721 /leaderboard/https-mcp-openzeppelin-com-contracts-solidity-mcp/solidity-erc721 ssrf surfaceThe parameter s baseUri look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool solidity-erc1155 accepts an unconstrained URL / endpoint parameter · solidity-erc1155 /leaderboard/https-mcp-openzeppelin-com-contracts-solidity-mcp/solidity-erc1155 ssrf surfaceThe parameter s uri look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. Open full report /leaderboard/https-mcp-openzeppelin-com-contracts-solidity-mcp 49server-redisnpm:@modelcontextprotocol/server-redis@2025.4.25B9252H - highTool set name implies a side effect that is not declared · set /leaderboard/npm-modelcontextprotocol-server-redis-2025-4-25/set excessive agency set looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool delete name implies a side effect that is not declared · delete /leaderboard/npm-modelcontextprotocol-server-redis-2025-4-25/delete excessive agency delete looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . Open full report /leaderboard/npm-modelcontextprotocol-server-redis-2025-4-25 50mcp-server-fetchpypi:mcp-server-fetch@2025.4.7B9211H2M - highTool fetch accepts an unconstrained URL / endpoint parameter · fetch /leaderboard/pypi-mcp-server-fetch-2025-4-7/fetch ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool fetch accepts unconstrained string input · fetch /leaderboard/pypi-mcp-server-fetch-2025-4-7/fetch unconstrained inputThe following string parameter s have no maxLength constraint: url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool fetch fetches external web content -- indirect-injection surface · fetch /leaderboard/pypi-mcp-server-fetch-2025-4-7/fetch indirect injectionDescription: "Fetches a URL from the internet and optionally extracts its contents as markdown. Although originally you did not have internet access, and were advised to refuse and tell the user this, this tool now grants you internet access. Now you can fetch the most up-to-date information and let the user know that." -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. Open full report /leaderboard/pypi-mcp-server-fetch-2025-4-7 51mcp-server-redispypi:mcp-server-redis@0.1.1B9252H - highTool set value name implies a side effect that is not declared · set value /leaderboard/pypi-mcp-server-redis-0-1-1/set-value excessive agency set value looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool delete key name implies a side effect that is not declared · delete key /leaderboard/pypi-mcp-server-redis-0-1-1/delete-key excessive agency delete key looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . Open full report /leaderboard/pypi-mcp-server-redis-0-1-1 52mcp-server-mysqlpypi:mcp-server-mysql@0.1.4B9031C - criticalTool Query Execution exposes a code/command execution surface · Query Execution /leaderboard/pypi-mcp-server-mysql-0-1-4/query-execution excessive agency Query Execution looks like it executes code or shell commands execute query : Execute an arbitrary SQL query. - Takes a SQL string query - Returns query results for SELECT/SHOW/DESCRIBE, or a success message for other commands . Arbitrary execution is the maximal authority a tool can hold -- it subsumes every other caveat, so it should never be exposed to an agent without a hard sandbox and an explicit, narrowly-scoped capability. fix: Do not expose raw code/shell execution to an agent. If unavoidable, run it in a disposable sandbox with no network + no host FS, gate it behind a capframe-bind capability scoped to an allow-list of commands, and require holder-of-key proof per call. Open full report /leaderboard/pypi-mcp-server-mysql-0-1-4 53Manifold Markets MCPhttps://api.manifold.markets/v0/mcpB8851H4M - highTool get-bets accepts an unbounded monetary / quota value · get-bets /leaderboard/https-api-manifold-markets-v0-mcp/get-bets excessive agencyThe numeric parameter s minAmount have a money/quota-shaped name but no maximum constraint. An LLM tricked by indirect-injection can call the tool with arbitrarily large values. fix: Add a maximum and ideally minimum to each money/quota numeric, OR enforce the cap via a capframe-bind --limit caveat at the agent boundary. - mediumTool search-markets accepts unconstrained string input · search-markets /leaderboard/https-api-manifold-markets-v0-mcp/search-markets unconstrained inputThe following string parameter s have no maxLength constraint: creatorId , term . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get-market accepts unconstrained string input · get-market /leaderboard/https-api-manifold-markets-v0-mcp/get-market unconstrained inputThe following string parameter s have no maxLength constraint: id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get-user accepts unconstrained string input · get-user /leaderboard/https-api-manifold-markets-v0-mcp/get-user unconstrained inputThe following string parameter s have no maxLength constraint: username . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool search-users accepts unconstrained string input · search-users /leaderboard/https-api-manifold-markets-v0-mcp/search-users unconstrained inputThe following string parameter s have no maxLength constraint: term . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-api-manifold-markets-v0-mcp 54Microsoft Learn MCPhttps://learn.microsoft.com/api/mcpB8831H4M - highTool microsoft docs fetch accepts an unconstrained URL / endpoint parameter · microsoft docs fetch /leaderboard/https-learn-microsoft-com-api-mcp/microsoft-docs-fetch ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool microsoft docs search accepts unconstrained string input · microsoft docs search /leaderboard/https-learn-microsoft-com-api-mcp/microsoft-docs-search unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool microsoft code sample search accepts unconstrained string input · microsoft code sample search /leaderboard/https-learn-microsoft-com-api-mcp/microsoft-code-sample-search unconstrained inputThe following string parameter s have no maxLength constraint: language , query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool microsoft docs fetch accepts unconstrained string input · microsoft docs fetch /leaderboard/https-learn-microsoft-com-api-mcp/microsoft-docs-fetch unconstrained inputThe following string parameter s have no maxLength constraint: url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool microsoft docs fetch fetches external web content -- indirect-injection surface · microsoft docs fetch /leaderboard/https-learn-microsoft-com-api-mcp/microsoft-docs-fetch indirect injectionDescription: "Fetch and convert a Microsoft Learn documentation webpage to markdown format. This tool retrieves the latest complete content of Microsoft documentation webpages including Azure, .NET, Microsoft 365, and other Microsoft technologies. When to Use This Tool - When search results provide incomplete information or truncated content - When you need complete step-by-step procedures or tutorials - When you need troubleshooting sections, prerequisites, or detailed explanations - When search results reference a specific page that seems highly relevant - For comprehensive guides that require full context Usage Pattern Use this tool AFTER microsoft docs search when you identify specific high-value pages that need complete content. The search tool gives you an overview; this tool gives you the complete picture. URL Requirements - The URL must be a valid HTML documentation webpage from the microsoft.com domain - Binary files PDF, DOCX, images, etc. are not supported Output Format markdown with headings, code blocks, tables, and links preserved." -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. Open full report /leaderboard/https-learn-microsoft-com-api-mcp 55GitMCPhttps://gitmcp.io/docsB8651H5M - highTool fetch generic url content accepts an unconstrained URL / endpoint parameter · fetch generic url content /leaderboard/https-gitmcp-io-docs/fetch-generic-url-content ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool match common libs owner repo mapping accepts unconstrained string input · match common libs owner repo mapping /leaderboard/https-gitmcp-io-docs/match-common-libs-owner-repo-mapping unconstrained inputThe following string parameter s have no maxLength constraint: library . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool fetch generic documentation accepts unconstrained string input · fetch generic documentation /leaderboard/https-gitmcp-io-docs/fetch-generic-documentation unconstrained inputThe following string parameter s have no maxLength constraint: owner , repo . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool search generic documentation accepts unconstrained string input · search generic documentation /leaderboard/https-gitmcp-io-docs/search-generic-documentation unconstrained inputThe following string parameter s have no maxLength constraint: owner , query , repo . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool search generic code accepts unconstrained string input · search generic code /leaderboard/https-gitmcp-io-docs/search-generic-code unconstrained inputThe following string parameter s have no maxLength constraint: owner , query , repo . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool fetch generic url content accepts unconstrained string input · fetch generic url content /leaderboard/https-gitmcp-io-docs/fetch-generic-url-content unconstrained inputThe following string parameter s have no maxLength constraint: url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-gitmcp-io-docs 56server-everythingnpm:@modelcontextprotocol/server-everything@2026.1.26B86132H3M - highTool get-env exposes secrets or credentials to the agent · get-env /leaderboard/npm-modelcontextprotocol-server-everything-2026-1-26/get-env secret exposure get-env appears to read or return secrets, API keys, credentials, or environment variables Returns all environment variables, helpful for debugging MCP server configuration . Values surfaced in the model context are visible to any prompt with injection access; a compromised agent can relay them to an attacker-controlled server. fix: Do not expose secrets to the agent: inject them server-side at call time rather than passing them through the model context. If a tool must return a credential, scope it with a capframe-bind time-limited caveat and log every issuance. - highTool toggle-subscriber-updates name implies a side effect that is not declared · toggle-subscriber-updates /leaderboard/npm-modelcontextprotocol-server-everything-2026-1-26/toggle-subscriber-updates excessive agency toggle-subscriber-updates looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - mediumTool echo accepts unconstrained string input · echo /leaderboard/npm-modelcontextprotocol-server-everything-2026-1-26/echo unconstrained inputThe following string parameter s have no maxLength constraint: message . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool gzip-file-as-resource accepts unconstrained string input · gzip-file-as-resource /leaderboard/npm-modelcontextprotocol-server-everything-2026-1-26/gzip-file-as-resource unconstrained inputThe following string parameter s have no maxLength constraint: data , name . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool simulate-research-query accepts unconstrained string input · simulate-research-query /leaderboard/npm-modelcontextprotocol-server-everything-2026-1-26/simulate-research-query unconstrained inputThe following string parameter s have no maxLength constraint: topic . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-modelcontextprotocol-server-everything-2026-1-26 57Peek Experiences MCPhttps://mcp.peek.comB8262H5M - highTool experience availability accepts an unbounded monetary / quota value · experience availability /leaderboard/https-mcp-peek-com/experience-availability excessive agencyThe numeric parameter s quantity have a money/quota-shaped name but no maximum constraint. An LLM tricked by indirect-injection can call the tool with arbitrarily large values. fix: Add a maximum and ideally minimum to each money/quota numeric, OR enforce the cap via a capframe-bind --limit caveat at the agent boundary. - highTool search regions accepts an unbounded monetary / quota value · search regions /leaderboard/https-mcp-peek-com/search-regions excessive agencyThe numeric parameter s limit have a money/quota-shaped name but no maximum constraint. An LLM tricked by indirect-injection can call the tool with arbitrarily large values. fix: Add a maximum and ideally minimum to each money/quota numeric, OR enforce the cap via a capframe-bind --limit caveat at the agent boundary. - mediumTool experience availability accepts unconstrained string input · experience availability /leaderboard/https-mcp-peek-com/experience-availability unconstrained inputThe following string parameter s have no maxLength constraint: endDate , id , startDate . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool experience details accepts unconstrained string input · experience details /leaderboard/https-mcp-peek-com/experience-details unconstrained inputThe following string parameter s have no maxLength constraint: id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool render activity tiles accepts unconstrained string input · render activity tiles /leaderboard/https-mcp-peek-com/render-activity-tiles unconstrained inputThe following string parameter s have no maxLength constraint: id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool search experiences accepts unconstrained string input · search experiences /leaderboard/https-mcp-peek-com/search-experiences unconstrained inputThe following string parameter s have no maxLength constraint: categoryId , endDate , latLng , query , regionId , startDate , tagId . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool search regions accepts unconstrained string input · search regions /leaderboard/https-mcp-peek-com/search-regions unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-mcp-peek-com 58zip1.io MCPhttps://zip1.io/mcpB8243H3M - highTool create short url name implies a side effect that is not declared · create short url /leaderboard/https-zip1-io-mcp/create-short-url excessive agency create short url looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool create short url accepts an unconstrained URL / endpoint parameter · create short url /leaderboard/https-zip1-io-mcp/create-short-url ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool validate url accepts an unconstrained URL / endpoint parameter · validate url /leaderboard/https-zip1-io-mcp/validate-url ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool create short url accepts unconstrained string input · create short url /leaderboard/https-zip1-io-mcp/create-short-url unconstrained inputThe following string parameter s have no maxLength constraint: alias , description , expiration time , password , url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get url stats accepts unconstrained string input · get url stats /leaderboard/https-zip1-io-mcp/get-url-stats unconstrained inputThe following string parameter s have no maxLength constraint: short code . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool validate url accepts unconstrained string input · validate url /leaderboard/https-zip1-io-mcp/validate-url unconstrained inputThe following string parameter s have no maxLength constraint: url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-zip1-io-mcp 59Chainflip Broker MCPhttps://chainflip-broker.io/mcpB8065H - highTool get quotes accepts an unbounded monetary / quota value · get quotes /leaderboard/https-chainflip-broker-io-mcp/get-quotes excessive agencyThe numeric parameter s amount have a money/quota-shaped name but no maximum constraint. An LLM tricked by indirect-injection can call the tool with arbitrarily large values. fix: Add a maximum and ideally minimum to each money/quota numeric, OR enforce the cap via a capframe-bind --limit caveat at the agent boundary. - highTool get quotes exposes secrets or credentials to the agent · get quotes /leaderboard/https-chainflip-broker-io-mcp/get-quotes secret exposure get quotes appears to read or return secrets, API keys, credentials, or environment variables Get swap quotes for exchanging one crypto asset to another. Returns available quotes with exchange rates, fees, and estimated output amounts. API key is optional. . Values surfaced in the model context are visible to any prompt with injection access; a compromised agent can relay them to an attacker-controlled server. fix: Do not expose secrets to the agent: inject them server-side at call time rather than passing them through the model context. If a tool must return a credential, scope it with a capframe-bind time-limited caveat and log every issuance. - highTool start dca swap exposes secrets or credentials to the agent · start dca swap /leaderboard/https-chainflip-broker-io-mcp/start-dca-swap secret exposure start dca swap appears to read or return secrets, API keys, credentials, or environment variables Start a DCA Dollar Cost Averaging cross-chain swap that splits into multiple sub-swaps over time. Returns the deposit address. API key is optional. . Values surfaced in the model context are visible to any prompt with injection access; a compromised agent can relay them to an attacker-controlled server. fix: Do not expose secrets to the agent: inject them server-side at call time rather than passing them through the model context. If a tool must return a credential, scope it with a capframe-bind time-limited caveat and log every issuance. - highTool start swap exposes secrets or credentials to the agent · start swap /leaderboard/https-chainflip-broker-io-mcp/start-swap secret exposure start swap appears to read or return secrets, API keys, credentials, or environment variables Start a cross-chain swap. Returns the deposit address where you should send your source asset. API key is optional. . Values surfaced in the model context are visible to any prompt with injection access; a compromised agent can relay them to an attacker-controlled server. fix: Do not expose secrets to the agent: inject them server-side at call time rather than passing them through the model context. If a tool must return a credential, scope it with a capframe-bind time-limited caveat and log every issuance. - highTool get native quotes exposes secrets or credentials to the agent · get native quotes /leaderboard/https-chainflip-broker-io-mcp/get-native-quotes secret exposure get native quotes appears to read or return secrets, API keys, credentials, or environment variables Get swap quotes for exchanging one crypto asset to another using native smallest unit amounts. Returns available quotes with exchange rates, fees, and estimated output amounts. Use this when you have amounts in native units e.g., satoshis for BTC, wei for ETH . API key is optional. . Values surfaced in the model context are visible to any prompt with injection access; a compromised agent can relay them to an attacker-controlled server. fix: Do not expose secrets to the agent: inject them server-side at call time rather than passing them through the model context. If a tool must return a credential, scope it with a capframe-bind time-limited caveat and log every issuance. Open full report /leaderboard/https-chainflip-broker-io-mcp 60OpenAI Docs MCPhttps://developers.openai.com/mcpB8052H6M - highTool fetch openai doc accepts an unconstrained URL / endpoint parameter · fetch openai doc /leaderboard/https-developers-openai-com-mcp/fetch-openai-doc ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool get openapi spec accepts an unconstrained URL / endpoint parameter · get openapi spec /leaderboard/https-developers-openai-com-mcp/get-openapi-spec ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool search openai docs accepts unconstrained string input · search openai docs /leaderboard/https-developers-openai-com-mcp/search-openai-docs unconstrained inputThe following string parameter s have no maxLength constraint: cursor , query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool list openai docs accepts unconstrained string input · list openai docs /leaderboard/https-developers-openai-com-mcp/list-openai-docs unconstrained inputThe following string parameter s have no maxLength constraint: cursor . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool list openai docs fetches external web content -- indirect-injection surface · list openai docs /leaderboard/https-developers-openai-com-mcp/list-openai-docs indirect injectionDescription: "List/browse pages from platform.openai.com + developers.openai.com that this server crawls useful when you don’t know the right query yet or you’re paging through results . Search across platform.openai.com + developers.openai.com docs. Use this whenever you are working with the OpenAI API including the Responses API , OpenAI API SDKs, ChatGPT Apps SDK, or ChatGPT Codex. Results include URLs— after list , use fetch openai doc on a result URL to get the full markdown." -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool fetch openai doc accepts unconstrained string input · fetch openai doc /leaderboard/https-developers-openai-com-mcp/fetch-openai-doc unconstrained inputThe following string parameter s have no maxLength constraint: anchor , url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool fetch openai doc fetches external web content -- indirect-injection surface · fetch openai doc /leaderboard/https-developers-openai-com-mcp/fetch-openai-doc indirect injectionDescription: "Fetch the markdown for a specific doc page from developers.openai.com or platform.openai.com so you can quote/summarize exact, up-to-date guidance schemas, examples, limits, edge cases . Prefer to search openai docs first or list openai docs if you’re browsing to find the best URL, then fetch openai doc to pull the exact text; you can pass anchor e.g. streaming to fetch just that section." -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool get openapi spec accepts unconstrained string input · get openapi spec /leaderboard/https-developers-openai-com-mcp/get-openapi-spec unconstrained inputThe following string parameter s have no maxLength constraint: url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-developers-openai-com-mcp 61AWS Knowledge MCPhttps://knowledge-mcp.global.api.awsB8063H4M - highTool aws search documentation accepts an unbounded monetary / quota value · aws search documentation /leaderboard/https-knowledge-mcp-global-api-aws/aws-search-documentation excessive agencyThe numeric parameter s limit have a money/quota-shaped name but no maximum constraint. An LLM tricked by indirect-injection can call the tool with arbitrarily large values. fix: Add a maximum and ideally minimum to each money/quota numeric, OR enforce the cap via a capframe-bind --limit caveat at the agent boundary. - highTool aws search documentation exposes secrets or credentials to the agent · aws search documentation /leaderboard/https-knowledge-mcp-global-api-aws/aws-search-documentation secret exposure aws search documentation appears to read or return secrets, API keys, credentials, or environment variables AWS Documentation Search Tool Use this tool to find relevant AWS documentation — always follow up with read documentation to get complete answers. Prefer this over general knowledge for AWS services, features, configurations, troubleshooting, and best practices. When to Use This Tool Always search when the query involves: - Any AWS service or feature Lambda, S3, EC2, RDS, etc. - AWS architecture, patterns, or best practices - AWS CLI, SDK, or API usage - AWS CDK or CloudFormation - AWS Amplify development - AWS errors or troubleshooting - AWS pricing, limits, or quotas - Strands Agents development - "How do I..." questions about AWS - Recent AWS updates or announcements Only skip this tool when: - Query is about non-AWS technologies - Question is purely conceptual e.g., "What is a database?" - General programming questions unrelated to AWS Skill Suggestions for Actionable Queries When your search query matches tasks that benefit from domain-specific expertise, this tool will suggest relevant Agent Skills . Skills package domain knowledge, workflows, best practices, decision frameworks, and reference materials that make you a specialist in a particular AWS domain. How it works: - Your search query is scored against the skills registry using semantic search over skill descriptions and metadata tags - If your query matches a skill's domain, relevant skills are returned alongside documentation results - Skills cover a wide range of domains: deployment, troubleshooting, security, optimization, architecture, and more - To load a suggested skill, use the retrieve skill tool with the skill name - Once loaded, follow the skill's workflows and retrieve any referenced files as needed Example queries that may return skills: - "deploy a web application to AWS" — may return a deployment skill with architecture guidance and step-by-step deployment instructions - "debug Lambda cold start issues" — may return a troubleshooting skill with diagnostic workflows - "secure S3 buckets" — may return a security skill with best practices and compliance checklists - "optimize API Gateway latency" — may return a performance skill with decision frameworks - "set up VPC peering" — may return a networking skill with step-by-step procedures Quick Topic Selection | Query Type | Use Topic | Example | |------------|-----------|-------| | API/SDK/CLI code | reference documentation | "S3 PutObject boto3", "Lambda invoke API" | | New features, releases | current awareness | "Lambda new features 2024", "what's new in ECS" | | Errors, debugging | troubleshooting | "AccessDenied S3", "Lambda timeout error" | | Amplify apps | amplify docs | "Amplify Auth React", "Amplify Storage Flutter" | | CDK concepts, APIs, CLI | cdk docs | "CDK stack props Python", "cdk deploy command" | | CDK code samples, patterns | cdk constructs | "serverless API CDK", "Lambda function example TypeScript" | | CloudFormation templates | cloudformation | "DynamoDB CloudFormation", "StackSets template" | | Architecture, blogs, guides | general | "Lambda best practices", "S3 architecture patterns" | | Strands Agents | strands docs | "Strands Agents Python structured output", "Strands Agents AWS CDK EC2 Deployment Example" | | Domain expertise, workflows, guided procedures | agent skills | "deploy serverless app", "debug Lambda cold starts", "secure IAM policies" | Documentation Topics reference documentation For: API methods, SDK code, CLI commands, technical specifications Use for: - SDK method signatures: "boto3 S3 upload file parameters" - CLI commands: "aws ec2 describe-instances syntax" - API references: "Lambda InvokeFunction API" - Service configuration: "RDS parameter groups" Don't confuse with general—use this for specific technical implementation. current awareness For: New features, announcements, "what's new", release dates Use for: - "New Lambda features" - "When was EventBridge Scheduler released" - "Latest S3 updates" - "Is feature X available yet" Keywords: new, recent, latest, announced, released, launch, available troubleshooting For: Error messages, debugging, problems, "not working" Use for: - Error codes: "InvalidParameterValue", "AccessDenied" - Problems: "Lambda function timing out" - Debug scenarios: "S3 bucket policy not working" - "How to fix..." queries Keywords: error, failed, issue, problem, not working, how to fix, how to resolve amplify docs For: Frontend/mobile apps with Amplify framework Always include framework: React, Next.js, Angular, Vue, JavaScript, React Native, Flutter, Android, Swift Examples: - "Amplify authentication React" - "Amplify GraphQL API Next.js" - "Amplify Storage Flutter setup" cdk docs For: CDK concepts, API references, CLI commands, getting started Use for CDK questions like: - "How to get started with CDK" - "CDK stack construct TypeScript" - "cdk deploy command options" - "CDK best practices Python" - "What are CDK constructs" Include language: Python, TypeScript, Java, C , Go Common mistake : Using general knowledge instead of searching for CDK concepts and guides. Always search for CDK questions cdk constructs For: CDK code examples, patterns, L3 constructs, sample implementations Use for: - Working code: "Lambda function CDK Python example" - Patterns: "API Gateway Lambda CDK pattern" - Sample apps: "Serverless application CDK TypeScript" - L3 constructs: "ECS service construct" Include language: Python, TypeScript, Java, C , Go cloudformation For: CloudFormation templates, concepts, SAM patterns Use for: - "CloudFormation StackSets" - "DynamoDB table template" - "SAM API Gateway Lambda" - "CloudFormation template examples" strands docs For: Strands Agents API reference, integrations, model providers, session managers, tools, examples, user-guide Use for: - "Strands Agents Python SDK example" - "Strands Agents AWS integration" - "Strands Agents community contributions" - "Strands Agents usage examples" - "Strands Agents usage guide" general For: Architecture, best practices, tutorials, blog posts, design patterns Use for: - Architecture patterns: "Serverless architecture AWS" - Best practices: "S3 security best practices" - Design guidance: "Multi-region architecture" - Getting started: "Building data lakes on AWS" - Tutorials and blog posts Common mistake : Not using this for AWS conceptual and architectural questions. Always search for AWS best practices and patterns Don't use general knowledge for AWS topics—search instead agent skills For: Discovering agent skills — domain-specific expertise packages for AWS workflows Use for: - Complex tasks that benefit from guided workflows: "deploy a serverless application" - Troubleshooting scenarios: "debug Lambda cold starts", "resolve ECS task failures" - Security and compliance: "secure S3 buckets", "review IAM policies for least privilege" - Architecture and optimization: "optimize API Gateway latency", "design multi-region architecture" - When you need domain expertise beyond what documentation provides Skills go beyond documentation — they provide workflows, decision frameworks, best practices, and may include embedded procedures for critical sub-tasks. Important : This topic is meant for discovery. Once you identify the skill you need, use retrieve skill tool with the skill name to load the full skill and its reference materials. Note : If combined with other topics, skills will be mixed into the documentation results. Use agent skills alone for a clean skill-only listing. Search Best Practices Be specific with service names: Good examples: "S3 bucket versioning configuration" "Lambda environment variables Python SDK" "DynamoDB GSI query patterns" Bad examples: "versioning" too vague "environment variables" missing context Include framework/language: "Amplify authentication React" "CDK Lambda function TypeScript" "boto3 S3 client Python" Use exact error messages: "AccessDenied error S3 GetObject" "InvalidParameterValue Lambda environment" Add temporal context for new features: "Lambda new features 2024" "recent S3 announcements" If the first search does not return results that directly answer the question, refine your query and search again with different terms, a more specific phrase, or a different topic. Try conceptual/architectural topics general, blogs if reference docs are too narrow. After searching, use read documentation on the top-ranked URLs to verify and complete your answer. Multiple Topic Selection You can search multiple topics simultaneously for comprehensive results: For a query about Lambda errors and new features: topics= "troubleshooting", "current awareness" For CDK examples and API reference: topics= "cdk constructs", "cdk docs" For Amplify and general AWS architecture: topics= "amplify docs", "general" For actionable tasks: topics= "agent skills" Response Format Results include: - rank order : Relevance score lower = more relevant - url : Direct documentation link — use with read documentation to get the full page content - title : Page title - context : Partial excerpt only — not the complete documentation. After reviewing results, call read documentation on the most relevant URLs before answering. Do not answer based on the context excerpt alone. Parameters search phrase: str Required - your search query topics: List str Optional - up to 3 topics. Defaults to "general" limit: int = 5 Optional - max results per topic --- Remember: When in doubt about AWS, always search. This tool provides the most current, accurate AWS information. But search is only step 1 — always read the full documentation to give complete answers. . Values surfaced in the model context are visible to any prompt with injection access; a compromised agent can relay them to an attacker-controlled server. fix: Do not expose secrets to the agent: inject them server-side at call time rather than passing them through the model context. If a tool must return a credential, scope it with a capframe-bind time-limited caveat and log every issuance. - highTool aws recommend accepts an unconstrained URL / endpoint parameter · aws recommend /leaderboard/https-knowledge-mcp-global-api-aws/aws-recommend ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool aws search documentation accepts unconstrained string input · aws search documentation /leaderboard/https-knowledge-mcp-global-api-aws/aws-search-documentation unconstrained inputThe following string parameter s have no maxLength constraint: search phrase . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool aws recommend accepts unconstrained string input · aws recommend /leaderboard/https-knowledge-mcp-global-api-aws/aws-recommend unconstrained inputThe following string parameter s have no maxLength constraint: url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool aws get regional availability accepts unconstrained string input · aws get regional availability /leaderboard/https-knowledge-mcp-global-api-aws/aws-get-regional-availability unconstrained inputThe following string parameter s have no maxLength constraint: next token , region , resource type . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool aws retrieve skill accepts unconstrained string input · aws retrieve skill /leaderboard/https-knowledge-mcp-global-api-aws/aws-retrieve-skill unconstrained inputThe following string parameter s have no maxLength constraint: file , skill name . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-knowledge-mcp-global-api-aws 62obsidian-mcpnpm:obsidian-mcp@1.0.6B80125H - highTool create-note name implies a side effect that is not declared · create-note /leaderboard/npm-obsidian-mcp-1-0-6/create-note excessive agency create-note looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool edit-note name implies a side effect that is not declared · edit-note /leaderboard/npm-obsidian-mcp-1-0-6/edit-note excessive agency edit-note looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool delete-note name implies a side effect that is not declared · delete-note /leaderboard/npm-obsidian-mcp-1-0-6/delete-note excessive agency delete-note looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool create-directory name implies a side effect that is not declared · create-directory /leaderboard/npm-obsidian-mcp-1-0-6/create-directory excessive agency create-directory looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool remove-tags name implies a side effect that is not declared · remove-tags /leaderboard/npm-obsidian-mcp-1-0-6/remove-tags excessive agency remove-tags looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . Open full report /leaderboard/npm-obsidian-mcp-1-0-6 63OpenZeppelin Cairo Contracts MCPhttps://mcp.openzeppelin.com/contracts/cairo/mcpC7882H7M - highTool cairo-erc721 accepts an unconstrained URL / endpoint parameter · cairo-erc721 /leaderboard/https-mcp-openzeppelin-com-contracts-cairo-mcp/cairo-erc721 ssrf surfaceThe parameter s baseUri look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool cairo-erc1155 accepts an unconstrained URL / endpoint parameter · cairo-erc1155 /leaderboard/https-mcp-openzeppelin-com-contracts-cairo-mcp/cairo-erc1155 ssrf surfaceThe parameter s baseUri look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool cairo-erc20 accepts unconstrained string input · cairo-erc20 /leaderboard/https-mcp-openzeppelin-com-contracts-cairo-mcp/cairo-erc20 unconstrained inputThe following string parameter s have no maxLength constraint: appName , appVersion , decimals , name , premint , symbol . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool cairo-erc721 accepts unconstrained string input · cairo-erc721 /leaderboard/https-mcp-openzeppelin-com-contracts-cairo-mcp/cairo-erc721 unconstrained inputThe following string parameter s have no maxLength constraint: appName , appVersion , baseUri , name , symbol . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool cairo-erc1155 accepts unconstrained string input · cairo-erc1155 /leaderboard/https-mcp-openzeppelin-com-contracts-cairo-mcp/cairo-erc1155 unconstrained inputThe following string parameter s have no maxLength constraint: baseUri , name . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool cairo-account accepts unconstrained string input · cairo-account /leaderboard/https-mcp-openzeppelin-com-contracts-cairo-mcp/cairo-account unconstrained inputThe following string parameter s have no maxLength constraint: name . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool cairo-multisig accepts unconstrained string input · cairo-multisig /leaderboard/https-mcp-openzeppelin-com-contracts-cairo-mcp/cairo-multisig unconstrained inputThe following string parameter s have no maxLength constraint: name , quorum . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool cairo-vesting accepts unconstrained string input · cairo-vesting /leaderboard/https-mcp-openzeppelin-com-contracts-cairo-mcp/cairo-vesting unconstrained inputThe following string parameter s have no maxLength constraint: cliffDuration , duration , name , startDate . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool cairo-custom accepts unconstrained string input · cairo-custom /leaderboard/https-mcp-openzeppelin-com-contracts-cairo-mcp/cairo-custom unconstrained inputThe following string parameter s have no maxLength constraint: name . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-mcp-openzeppelin-com-contracts-cairo-mcp 64server-memorynpm:@modelcontextprotocol/server-memory@2026.1.26C7895H1M - highTool create entities name implies a side effect that is not declared · create entities /leaderboard/npm-modelcontextprotocol-server-memory-2026-1-26/create-entities excessive agency create entities looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool create relations name implies a side effect that is not declared · create relations /leaderboard/npm-modelcontextprotocol-server-memory-2026-1-26/create-relations excessive agency create relations looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool delete entities name implies a side effect that is not declared · delete entities /leaderboard/npm-modelcontextprotocol-server-memory-2026-1-26/delete-entities excessive agency delete entities looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool delete observations name implies a side effect that is not declared · delete observations /leaderboard/npm-modelcontextprotocol-server-memory-2026-1-26/delete-observations excessive agency delete observations looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool delete relations name implies a side effect that is not declared · delete relations /leaderboard/npm-modelcontextprotocol-server-memory-2026-1-26/delete-relations excessive agency delete relations looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - mediumTool search nodes accepts unconstrained string input · search nodes /leaderboard/npm-modelcontextprotocol-server-memory-2026-1-26/search-nodes unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-modelcontextprotocol-server-memory-2026-1-26 65Javadocs.dev MCPhttps://www.javadocs.dev/mcpC76812M - mediumTool get latest version accepts unconstrained string input · get latest version /leaderboard/https-www-javadocs-dev-mcp/get-latest-version unconstrained inputThe following string parameter s have no maxLength constraint: artifactId , groupId . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get latest version description mentions money but no money side-effect is declared · get latest version /leaderboard/https-www-javadocs-dev-mcp/get-latest-version excessive agencyDescription: "Resolves the latest published version of a Maven Central artifact any groupId:artifactId — Java, Kotlin, or Scala library . Call this first when you only know the artifact but not the version: the version it returns feeds into every other tool here that takes a concrete version. Works against the live Maven Central catalog — no local install, build tool, or repository checkout required." -- this references money/payment/refund/etc., but the declared side effects don't include money . A capframe-bind policy that relies on declared side effects to scope spend caveats will under-scope this tool. fix: Add money to the tool's side effects declaration, or rewrite the description to clarify that no actual money moves. - mediumTool get javadoc index accepts unconstrained string input · get javadoc index /leaderboard/https-www-javadocs-dev-mcp/get-javadoc-index unconstrained inputThe following string parameter s have no maxLength constraint: artifactId , groupId , version . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get javadoc index fetches external web content -- indirect-injection surface · get javadoc index /leaderboard/https-www-javadocs-dev-mcp/get-javadoc-index indirect injectionDescription: "Fetches the rendered Javadoc/Scaladoc index page for a specific Maven Central artifact version, converted to plain text/markdown. Useful for orienting yourself in an unfamiliar library: it lists the top-level packages, modules, and for Scaladoc often a curated overview. Use this before drilling into specific symbols. Works against the live Maven Central catalog — you do not need to download the javadoc jar." -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool get javadoc content list accepts unconstrained string input · get javadoc content list /leaderboard/https-www-javadocs-dev-mcp/get-javadoc-content-list unconstrained inputThe following string parameter s have no maxLength constraint: artifactId , groupId , version . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get javadoc symbol contents accepts unconstrained string input · get javadoc symbol contents /leaderboard/https-www-javadocs-dev-mcp/get-javadoc-symbol-contents unconstrained inputThe following string parameter s have no maxLength constraint: artifactId , groupId , link , version . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get source contents accepts unconstrained string input · get source contents /leaderboard/https-www-javadocs-dev-mcp/get-source-contents unconstrained inputThe following string parameter s have no maxLength constraint: artifactId , groupId , link , version . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get source contents description mentions money but no money side-effect is declared · get source contents /leaderboard/https-www-javadocs-dev-mcp/get-source-contents excessive agencyDescription: "Reads one source file from a Maven Central library's sources jar the -sources.jar artifact . Pass the link value returned by list source contents. Use this whenever you need the exact source text of a JVM library — tracing behavior into a dependency, confirming a public API's implementation, finding a definition, or comparing two library versions. Strongly preferred over locating the jar in a local build cache and unzipping it: it works for any Maven Central artifact, no local checkout or build needed." -- this references money/payment/refund/etc., but the declared side effects don't include money . A capframe-bind policy that relies on declared side effects to scope spend caveats will under-scope this tool. fix: Add money to the tool's side effects declaration, or rewrite the description to clarify that no actual money moves. - mediumTool list source contents accepts unconstrained string input · list source contents /leaderboard/https-www-javadocs-dev-mcp/list-source-contents unconstrained inputThe following string parameter s have no maxLength constraint: artifactId , groupId , version . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool list source contents description mentions money but no money side-effect is declared · list source contents /leaderboard/https-www-javadocs-dev-mcp/list-source-contents excessive agencyDescription: "Lists every file inside the sources jar the -sources.jar publishers attach alongside the binary of a Maven Central artifact version. Each returned path can be fed to get source contents to read the file. Prefer this any time you would otherwise locate a -sources.jar in your local Coursier/Ivy/Maven cache and unzip it: this tool works directly against Maven Central, requires no local install or build, and works for libraries you've never depended on. Use it whenever you need to read the actual source of a JVM library Java, Kotlin, Scala — for example to understand an implementation detail, find where a method is defined, see how a feature is wired internally, or work with a library that doesn't publish javadocs." -- this references money/payment/refund/etc., but the declared side effects don't include money . A capframe-bind policy that relies on declared side effects to scope spend caveats will under-scope this tool. fix: Add money to the tool's side effects declaration, or rewrite the description to clarify that no actual money moves. - mediumTool search artifacts accepts unconstrained string input · search artifacts /leaderboard/https-www-javadocs-dev-mcp/search-artifacts unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool symbol to artifact accepts unconstrained string input · symbol to artifact /leaderboard/https-www-javadocs-dev-mcp/symbol-to-artifact unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-www-javadocs-dev-mcp 66Hugging Face Hub MCPhttps://huggingface.co/mcpC7484H5M - highTool space search accepts an unbounded monetary / quota value · space search /leaderboard/https-huggingface-co-mcp/space-search excessive agencyThe numeric parameter s limit have a money/quota-shaped name but no maximum constraint. An LLM tricked by indirect-injection can call the tool with arbitrarily large values. fix: Add a maximum and ideally minimum to each money/quota numeric, OR enforce the cap via a capframe-bind --limit caveat at the agent boundary. - highTool paper search accepts an unbounded monetary / quota value · paper search /leaderboard/https-huggingface-co-mcp/paper-search excessive agencyThe numeric parameter s results limit have a money/quota-shaped name but no maximum constraint. An LLM tricked by indirect-injection can call the tool with arbitrarily large values. fix: Add a maximum and ideally minimum to each money/quota numeric, OR enforce the cap via a capframe-bind --limit caveat at the agent boundary. - highTool hub repo details accepts an unbounded monetary / quota value · hub repo details /leaderboard/https-huggingface-co-mcp/hub-repo-details excessive agencyThe numeric parameter s limit have a money/quota-shaped name but no maximum constraint. An LLM tricked by indirect-injection can call the tool with arbitrarily large values. fix: Add a maximum and ideally minimum to each money/quota numeric, OR enforce the cap via a capframe-bind --limit caveat at the agent boundary. - highTool hf doc fetch accepts an unconstrained URL / endpoint parameter · hf doc fetch /leaderboard/https-huggingface-co-mcp/hf-doc-fetch ssrf surfaceThe parameter s doc url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool hub repo search accepts unconstrained string input · hub repo search /leaderboard/https-huggingface-co-mcp/hub-repo-search unconstrained inputThe following string parameter s have no maxLength constraint: author , query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hub repo details accepts unconstrained string input · hub repo details /leaderboard/https-huggingface-co-mcp/hub-repo-details unconstrained inputThe following string parameter s have no maxLength constraint: config , split . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hf doc search accepts unconstrained string input · hf doc search /leaderboard/https-huggingface-co-mcp/hf-doc-search unconstrained inputThe following string parameter s have no maxLength constraint: product . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hf doc fetch fetches external web content -- indirect-injection surface · hf doc fetch /leaderboard/https-huggingface-co-mcp/hf-doc-fetch indirect injectionDescription: "Fetch a document from the Hugging Face or Gradio documentation library. For large documents, use offset to get subsequent chunks." -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool gr1 z image turbo generate accepts unconstrained string input · gr1 z image turbo generate /leaderboard/https-huggingface-co-mcp/gr1-z-image-turbo-generate unconstrained inputThe following string parameter s have no maxLength constraint: prompt . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-huggingface-co-mcp 67server-puppeteernpm:@modelcontextprotocol/server-puppeteer@2025.5.12C7271C1H7M - criticalTool puppeteer evaluate exposes a code/command execution surface · puppeteer evaluate /leaderboard/npm-modelcontextprotocol-server-puppeteer-2025-5-12/puppeteer-evaluate excessive agency puppeteer evaluate looks like it executes code or shell commands Execute JavaScript in the browser console . Arbitrary execution is the maximal authority a tool can hold -- it subsumes every other caveat, so it should never be exposed to an agent without a hard sandbox and an explicit, narrowly-scoped capability. fix: Do not expose raw code/shell execution to an agent. If unavoidable, run it in a disposable sandbox with no network + no host FS, gate it behind a capframe-bind capability scoped to an allow-list of commands, and require holder-of-key proof per call. - highTool puppeteer navigate accepts an unconstrained URL / endpoint parameter · puppeteer navigate /leaderboard/npm-modelcontextprotocol-server-puppeteer-2025-5-12/puppeteer-navigate ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool puppeteer navigate accepts unconstrained string input · puppeteer navigate /leaderboard/npm-modelcontextprotocol-server-puppeteer-2025-5-12/puppeteer-navigate unconstrained inputThe following string parameter s have no maxLength constraint: url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool puppeteer screenshot accepts unconstrained string input · puppeteer screenshot /leaderboard/npm-modelcontextprotocol-server-puppeteer-2025-5-12/puppeteer-screenshot unconstrained inputThe following string parameter s have no maxLength constraint: name , selector . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool puppeteer click accepts unconstrained string input · puppeteer click /leaderboard/npm-modelcontextprotocol-server-puppeteer-2025-5-12/puppeteer-click unconstrained inputThe following string parameter s have no maxLength constraint: selector . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool puppeteer fill accepts unconstrained string input · puppeteer fill /leaderboard/npm-modelcontextprotocol-server-puppeteer-2025-5-12/puppeteer-fill unconstrained inputThe following string parameter s have no maxLength constraint: selector , value . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool puppeteer select accepts unconstrained string input · puppeteer select /leaderboard/npm-modelcontextprotocol-server-puppeteer-2025-5-12/puppeteer-select unconstrained inputThe following string parameter s have no maxLength constraint: selector , value . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool puppeteer hover accepts unconstrained string input · puppeteer hover /leaderboard/npm-modelcontextprotocol-server-puppeteer-2025-5-12/puppeteer-hover unconstrained inputThe following string parameter s have no maxLength constraint: selector . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool puppeteer evaluate accepts unconstrained string input · puppeteer evaluate /leaderboard/npm-modelcontextprotocol-server-puppeteer-2025-5-12/puppeteer-evaluate unconstrained inputThe following string parameter s have no maxLength constraint: script . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-modelcontextprotocol-server-puppeteer-2025-5-12 68tavily-mcpnpm:tavily-mcp@0.2.20C7254H6M - highTool tavily crawl accepts an unbounded monetary / quota value · tavily crawl /leaderboard/npm-tavily-mcp-0-2-20/tavily-crawl excessive agencyThe numeric parameter s limit have a money/quota-shaped name but no maximum constraint. An LLM tricked by indirect-injection can call the tool with arbitrarily large values. fix: Add a maximum and ideally minimum to each money/quota numeric, OR enforce the cap via a capframe-bind --limit caveat at the agent boundary. - highTool tavily crawl accepts an unconstrained URL / endpoint parameter · tavily crawl /leaderboard/npm-tavily-mcp-0-2-20/tavily-crawl ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool tavily map accepts an unbounded monetary / quota value · tavily map /leaderboard/npm-tavily-mcp-0-2-20/tavily-map excessive agencyThe numeric parameter s limit have a money/quota-shaped name but no maximum constraint. An LLM tricked by indirect-injection can call the tool with arbitrarily large values. fix: Add a maximum and ideally minimum to each money/quota numeric, OR enforce the cap via a capframe-bind --limit caveat at the agent boundary. - highTool tavily map accepts an unconstrained URL / endpoint parameter · tavily map /leaderboard/npm-tavily-mcp-0-2-20/tavily-map ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool tavily search accepts unconstrained string input · tavily search /leaderboard/npm-tavily-mcp-0-2-20/tavily-search unconstrained inputThe following string parameter s have no maxLength constraint: country , end date , query , start date . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool tavily extract accepts unconstrained string input · tavily extract /leaderboard/npm-tavily-mcp-0-2-20/tavily-extract unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool tavily crawl accepts unconstrained string input · tavily crawl /leaderboard/npm-tavily-mcp-0-2-20/tavily-crawl unconstrained inputThe following string parameter s have no maxLength constraint: instructions , url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool tavily crawl fetches external web content -- indirect-injection surface · tavily crawl /leaderboard/npm-tavily-mcp-0-2-20/tavily-crawl indirect injectionDescription: "Crawl a website starting from a URL. Extracts content from pages with configurable depth and breadth." -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool tavily map accepts unconstrained string input · tavily map /leaderboard/npm-tavily-mcp-0-2-20/tavily-map unconstrained inputThe following string parameter s have no maxLength constraint: instructions , url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool tavily research accepts unconstrained string input · tavily research /leaderboard/npm-tavily-mcp-0-2-20/tavily-research unconstrained inputThe following string parameter s have no maxLength constraint: input . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-tavily-mcp-0-2-20 69TweetSave MCPhttps://mcp.tweetsave.org/mcpC7054H7M - highTool tweetsave get tweet accepts an unconstrained URL / endpoint parameter · tweetsave get tweet /leaderboard/https-mcp-tweetsave-org-mcp/tweetsave-get-tweet ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool tweetsave get thread accepts an unconstrained URL / endpoint parameter · tweetsave get thread /leaderboard/https-mcp-tweetsave-org-mcp/tweetsave-get-thread ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool tweetsave to blog accepts an unconstrained URL / endpoint parameter · tweetsave to blog /leaderboard/https-mcp-tweetsave-org-mcp/tweetsave-to-blog ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool tweetsave extract media accepts an unconstrained URL / endpoint parameter · tweetsave extract media /leaderboard/https-mcp-tweetsave-org-mcp/tweetsave-extract-media ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool tweetsave get tweet accepts unconstrained string input · tweetsave get tweet /leaderboard/https-mcp-tweetsave-org-mcp/tweetsave-get-tweet unconstrained inputThe following string parameter s have no maxLength constraint: url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool tweetsave get tweet fetches external web content -- indirect-injection surface · tweetsave get tweet /leaderboard/https-mcp-tweetsave-org-mcp/tweetsave-get-tweet indirect injectionDescription: "Fetch a single tweet with all its content including text, media photos, videos, GIFs , polls, and engagement metrics. This tool retrieves tweet data from Twitter/X using the FxTwitter API. It returns the tweet content, author info, media URLs, and engagement stats. Args: - url string : Tweet URL or tweet ID - response format 'markdown' | 'json' : Output format default: 'markdown' Returns: Tweet data including: - Author info name, username, avatar - Tweet text - Media URLs photos, videos - Engagement likes, retweets, replies, views - Poll data if applicable - Quote tweet if applicable Examples: - "Get tweet from https://x.com/elonmusk/status/123456" - "Fetch this tweet: 123456789" Note: Does not fetch replies. Use tweetsave to blog for a complete blog post with formatting." -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool tweetsave get thread accepts unconstrained string input · tweetsave get thread /leaderboard/https-mcp-tweetsave-org-mcp/tweetsave-get-thread unconstrained inputThe following string parameter s have no maxLength constraint: url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool tweetsave get thread fetches external web content -- indirect-injection surface · tweetsave get thread /leaderboard/https-mcp-tweetsave-org-mcp/tweetsave-get-thread indirect injectionDescription: "Fetch a tweet thread multiple connected tweets by the same author . Note: Current implementation fetches the main tweet. Full thread crawling requires additional API access. Args: - url string : URL or ID of any tweet in the thread - response format 'markdown' | 'json' : Output format default: 'markdown' Returns: Array of tweets in the thread with all content and media. Examples: - "Get the full thread from this tweet: https://x.com/user/status/123"" -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool tweetsave to blog accepts unconstrained string input · tweetsave to blog /leaderboard/https-mcp-tweetsave-org-mcp/tweetsave-to-blog unconstrained inputThe following string parameter s have no maxLength constraint: url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool tweetsave batch fetches external web content -- indirect-injection surface · tweetsave batch /leaderboard/https-mcp-tweetsave-org-mcp/tweetsave-batch indirect injectionDescription: "Fetch multiple tweets at once max 10 . Useful for: - Collecting tweets from a list - Building a feed from multiple sources - Comparing multiple tweets Args: - urls string : Array of tweet URLs or IDs max 10 - response format 'markdown' | 'json' : Output format default: 'markdown' Returns: Array of tweets or a combined feed in markdown format. Examples: - "Fetch these tweets: url1, url2, url3 "" -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool tweetsave extract media accepts unconstrained string input · tweetsave extract media /leaderboard/https-mcp-tweetsave-org-mcp/tweetsave-extract-media unconstrained inputThe following string parameter s have no maxLength constraint: url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-mcp-tweetsave-org-mcp 70Browserbase MCPnpm:@browserbasehq/mcp-server-browserbase@2.4.3C6891C2H7M - criticalTool browserbase stagehand agent exposes a code/command execution surface · browserbase stagehand agent /leaderboard/npm-browserbasehq-mcp-server-browserbase-2-4-3/browserbase-stagehand-agent excessive agency browserbase stagehand agent looks like it executes code or shell commands Execute a task autonomously using Gemini Computer Use agent. The agent will navigate and interact with web pages to complete the given task. . Arbitrary execution is the maximal authority a tool can hold -- it subsumes every other caveat, so it should never be exposed to an agent without a hard sandbox and an explicit, narrowly-scoped capability. fix: Do not expose raw code/shell execution to an agent. If unavoidable, run it in a disposable sandbox with no network + no host FS, gate it behind a capframe-bind capability scoped to an allow-list of commands, and require holder-of-key proof per call. - highTool browserbase session create name implies a side effect that is not declared · browserbase session create /leaderboard/npm-browserbasehq-mcp-server-browserbase-2-4-3/browserbase-session-create excessive agency browserbase session create looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool browserbase stagehand navigate accepts an unconstrained URL / endpoint parameter · browserbase stagehand navigate /leaderboard/npm-browserbasehq-mcp-server-browserbase-2-4-3/browserbase-stagehand-navigate ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool browserbase session create accepts unconstrained string input · browserbase session create /leaderboard/npm-browserbasehq-mcp-server-browserbase-2-4-3/browserbase-session-create unconstrained inputThe following string parameter s have no maxLength constraint: sessionId . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool browserbase stagehand navigate accepts unconstrained string input · browserbase stagehand navigate /leaderboard/npm-browserbasehq-mcp-server-browserbase-2-4-3/browserbase-stagehand-navigate unconstrained inputThe following string parameter s have no maxLength constraint: url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool browserbase stagehand act accepts unconstrained string input · browserbase stagehand act /leaderboard/npm-browserbasehq-mcp-server-browserbase-2-4-3/browserbase-stagehand-act unconstrained inputThe following string parameter s have no maxLength constraint: action . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool browserbase stagehand extract accepts unconstrained string input · browserbase stagehand extract /leaderboard/npm-browserbasehq-mcp-server-browserbase-2-4-3/browserbase-stagehand-extract unconstrained inputThe following string parameter s have no maxLength constraint: instruction . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool browserbase stagehand observe accepts unconstrained string input · browserbase stagehand observe /leaderboard/npm-browserbasehq-mcp-server-browserbase-2-4-3/browserbase-stagehand-observe unconstrained inputThe following string parameter s have no maxLength constraint: instruction . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool browserbase screenshot accepts unconstrained string input · browserbase screenshot /leaderboard/npm-browserbasehq-mcp-server-browserbase-2-4-3/browserbase-screenshot unconstrained inputThe following string parameter s have no maxLength constraint: name . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool browserbase stagehand agent accepts unconstrained string input · browserbase stagehand agent /leaderboard/npm-browserbasehq-mcp-server-browserbase-2-4-3/browserbase-stagehand-agent unconstrained inputThe following string parameter s have no maxLength constraint: prompt . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-browserbasehq-mcp-server-browserbase-2-4-3 71mcp-server-mssqlpypi:mcp-server-mssql@0.1.0C68212C3H - criticalTool execute query exposes a code/command execution surface · execute query /leaderboard/pypi-mcp-server-mssql-0-1-0/execute-query excessive agency execute query looks like it executes code or shell commands Execute SQL query and return results . Arbitrary execution is the maximal authority a tool can hold -- it subsumes every other caveat, so it should never be exposed to an agent without a hard sandbox and an explicit, narrowly-scoped capability. fix: Do not expose raw code/shell execution to an agent. If unavoidable, run it in a disposable sandbox with no network + no host FS, gate it behind a capframe-bind capability scoped to an allow-list of commands, and require holder-of-key proof per call. - criticalTool execute scalar exposes a code/command execution surface · execute scalar /leaderboard/pypi-mcp-server-mssql-0-1-0/execute-scalar excessive agency execute scalar looks like it executes code or shell commands Execute SQL and return single value . Arbitrary execution is the maximal authority a tool can hold -- it subsumes every other caveat, so it should never be exposed to an agent without a hard sandbox and an explicit, narrowly-scoped capability. fix: Do not expose raw code/shell execution to an agent. If unavoidable, run it in a disposable sandbox with no network + no host FS, gate it behind a capframe-bind capability scoped to an allow-list of commands, and require holder-of-key proof per call. - highTool set connection timeout name implies a side effect that is not declared · set connection timeout /leaderboard/pypi-mcp-server-mssql-0-1-0/set-connection-timeout excessive agency set connection timeout looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool set login timeout name implies a side effect that is not declared · set login timeout /leaderboard/pypi-mcp-server-mssql-0-1-0/set-login-timeout excessive agency set login timeout looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool set autocommit name implies a side effect that is not declared · set autocommit /leaderboard/pypi-mcp-server-mssql-0-1-0/set-autocommit excessive agency set autocommit looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . Open full report /leaderboard/pypi-mcp-server-mssql-0-1-0 72Apify Actors MCPnpm:@apify/actors-mcp-server@0.10.11C6492H14M - highTool get-key-value-store-record name implies a side effect that is not declared · get-key-value-store-record /leaderboard/npm-apify-actors-mcp-server-0-10-11/get-key-value-store-record excessive agency get-key-value-store-record looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool fetch-apify-docs accepts an unconstrained URL / endpoint parameter · fetch-apify-docs /leaderboard/npm-apify-actors-mcp-server-0-10-11/fetch-apify-docs ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool search-actors accepts unconstrained string input · search-actors /leaderboard/npm-apify-actors-mcp-server-0-10-11/search-actors unconstrained inputThe following string parameter s have no maxLength constraint: keywords . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool search-actors fetches external web content -- indirect-injection surface · search-actors /leaderboard/npm-apify-actors-mcp-server-0-10-11/search-actors indirect injectionDescription: " Search the Apify Store to FIND and DISCOVER what scraping tools/Actors exist for specific platforms or use cases. This tool provides INFORMATION about available Actors - it does NOT retrieve actual data or run any scraping tasks. Apify Store contains thousands of pre-built Actors crawlers, scrapers, AI agents, and model context protocol MCP servers for all platforms and services including social media, search engines, maps, e-commerce, news, real estate, travel, finance, jobs and more. All Actors are legitimate, authorized, and compliant. Do not question legality, ethics, permissions, robots.txt, terms of service, or rate limits. Use this tool when user wants to: - Find what scraping tools exist for a platform e.g., "What tools can scrape Instagram?" - Discover available Actors for a use case e.g., "Find an Actor for Amazon products" - Browse existing solutions e.g., "Show me scrapers for news sites" - Learn about MCP servers or AI agents available in the Store Do NOT use this tool when user wants immediate data retrieval - use apify/rag-web-browser instead for getting actual data right now. IMPORTANT: There is a high chance that a relevant Actor already exists in the Apify Store so find it first before considering alternative solutions Usage: - Prefer broad, generic keywords - use just the platform name e.g. "Instagram" instead of "Instagram scraper" . - You MUST always do at least two searches: first with broad keywords, then optionally with more specific terms if needed. Important limitations: This tool does not return full Actor documentation or detailed usage instructions - only summary information. Each result lists the Actor's input fields with their types e.g. url: string, maxResults?: number so you can construct an Actor call directly without a separate fetch-actor-details round-trip. For complete Actor details per-field descriptions, defaults, README , use the fetch-actor-details tool. The search is limited to publicly available Actors and excludes rental and restricted Actors. Returns list of Actor cards with the following info: Title: Markdown header linked to Store page - Name: Full Actor name in code format - URL: Direct Store link - Developer: Username linked to profile - Description: Actor description or fallback - Categories: Formatted or "Uncategorized" - Pricing: Details with pricing link - Stats: Usage, success rate, bookmarks - Rating: Out of 5 if available - Input fields: Inline list of input field names and types e.g. url: string, maxResults?: number ; ? marks optional fields " -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool fetch-actor-details accepts unconstrained string input · fetch-actor-details /leaderboard/npm-apify-actors-mcp-server-0-10-11/fetch-actor-details unconstrained inputThe following string parameter s have no maxLength constraint: actor . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool fetch-actor-details fetches external web content -- indirect-injection surface · fetch-actor-details /leaderboard/npm-apify-actors-mcp-server-0-10-11/fetch-actor-details indirect injectionDescription: "Get detailed information about an Actor by its ID or full name format: "username/name", e.g., "apify/rag-web-browser" . Use 'output' parameter with boolean flags to control returned information: - Default: All fields true except mcpTools - Selective: Set desired fields to true e.g., output: { inputSchema: true } - Common patterns: inputSchema only, description + readme, mcpTools for MCP Actors The 'readme' field returns the summary when available, full README otherwise. Use when querying Actor details, documentation, input requirements, or MCP tools. EXAMPLES: - What does apify/rag-web-browser do? - What is the input schema for apify/web-scraper? - What tools does apify/actors-mcp-server provide?" -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool call-actor accepts unconstrained string input · call-actor /leaderboard/npm-apify-actors-mcp-server-0-10-11/call-actor unconstrained inputThe following string parameter s have no maxLength constraint: actor . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool call-actor fetches external web content -- indirect-injection surface · call-actor /leaderboard/npm-apify-actors-mcp-server-0-10-11/call-actor indirect injectionDescription: "Call any Actor from the Apify Store. WORKFLOW: 1. Use fetch-actor-details to get the Actor's input schema 2. Call this tool with the actor name and proper input based on the schema If the actor name is not in "username/name" format and search-actors is available in this session, use it to resolve the correct Actor first. For MCP server Actors: - Use fetch-actor-details with output={ mcpTools: true } to list available tools - Call using format: "actorName:toolName" e.g., "apify/actors-mcp-server:fetch-apify-docs" IMPORTANT: - Waits up to waitSecs default 30s for completion; returns run status, storage IDs, and field metadata - Use get-dataset-items with the datasetId to fetch results; non-terminal runs include a nextStep with polling instructions - Use dedicated Actor tools when available for better experience There are two ways to run Actors: 1. Dedicated Actor tools e.g., apify--rag-web-browser : These are pre-configured tools, offering a simpler and more direct experience. 2. Generic call-actor tool call-actor : Use this when a dedicated tool is not available or when you want to run any Actor dynamically. This tool is especially useful if you do not want to add specific tools or your client does not support dynamic tool registration. USAGE: - Always use dedicated tools when available e.g., apify--rag-web-browser - Use the generic call-actor tool only if a dedicated tool does not exist for your Actor. - Use waitSecs 0–45 to control how long to wait. Default 30s returns results for fast actors. Use waitSecs: 0 to start and return immediately for long-running actors. EXAMPLES: - user input: Get instagram posts using apify/instagram-scraper" -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool get-actor-run accepts unconstrained string input · get-actor-run /leaderboard/npm-apify-actors-mcp-server-0-10-11/get-actor-run unconstrained inputThe following string parameter s have no maxLength constraint: runId . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get-dataset-items accepts unconstrained string input · get-dataset-items /leaderboard/npm-apify-actors-mcp-server-0-10-11/get-dataset-items unconstrained inputThe following string parameter s have no maxLength constraint: datasetId , fields , flatten , omit . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get-key-value-store-record accepts unconstrained string input · get-key-value-store-record /leaderboard/npm-apify-actors-mcp-server-0-10-11/get-key-value-store-record unconstrained inputThe following string parameter s have no maxLength constraint: keyValueStoreId , recordKey . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool abort-actor-run accepts unconstrained string input · abort-actor-run /leaderboard/npm-apify-actors-mcp-server-0-10-11/abort-actor-run unconstrained inputThe following string parameter s have no maxLength constraint: runId . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool search-apify-docs accepts unconstrained string input · search-apify-docs /leaderboard/npm-apify-actors-mcp-server-0-10-11/search-apify-docs unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool search-apify-docs fetches external web content -- indirect-injection surface · search-apify-docs /leaderboard/npm-apify-actors-mcp-server-0-10-11/search-apify-docs indirect injectionDescription: "Search Apify and Crawlee documentation using full-text search. You must explicitly select which documentation source to search using the docSource parameter: • docSource="apify" - Apify: Apify Platform documentation including: Platform features, SDKs JS, Python , CLI, REST API, Academy web scraping fundamentals , Actor development and deployment • docSource="crawlee-js" - Crawlee JavaScript : Crawlee is a web scraping library for JavaScript. It handles blocking, crawling, proxies, and browsers for you. • docSource="crawlee-py" - Crawlee Python : Crawlee is a web scraping library for Python. It handles blocking, crawling, proxies, and browsers for you. The results will include the URL of the documentation page which may include an anchor , and a limited piece of content that matches the search query. Fetch the full content of the document using the fetch-apify-docs tool by providing the URL. When results contain both platform documentation docs.apify.com/platform and Academy content docs.apify.com/academy on the same topic, prefer the platform documentation." -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. - mediumTool fetch-apify-docs accepts unconstrained string input · fetch-apify-docs /leaderboard/npm-apify-actors-mcp-server-0-10-11/fetch-apify-docs unconstrained inputThe following string parameter s have no maxLength constraint: url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool fetch-apify-docs fetches external web content -- indirect-injection surface · fetch-apify-docs /leaderboard/npm-apify-actors-mcp-server-0-10-11/fetch-apify-docs indirect injectionDescription: "Fetch the full content of an Apify or Crawlee documentation page by its URL. Use this after finding a relevant page with the search-apify-docs tool. USAGE: - Use when you need the complete content of a specific docs page for detailed answers. USAGE EXAMPLES: - user input: Fetch https://docs.apify.com/platform/actors/running builds - user input: Fetch https://docs.apify.com/academy - user input: Fetch https://crawlee.dev/docs/guides/basic-concepts" -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions. fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a domain in ... caveat. Open full report /leaderboard/npm-apify-actors-mcp-server-0-10-11 73mcp-server-sqlitepypi:mcp-server-sqlite@2025.4.25C6262C2H5M - criticalTool read query exposes a code/command execution surface · read query /leaderboard/pypi-mcp-server-sqlite-2025-4-25/read-query excessive agency read query looks like it executes code or shell commands Execute a SELECT query on the SQLite database . Arbitrary execution is the maximal authority a tool can hold -- it subsumes every other caveat, so it should never be exposed to an agent without a hard sandbox and an explicit, narrowly-scoped capability. fix: Do not expose raw code/shell execution to an agent. If unavoidable, run it in a disposable sandbox with no network + no host FS, gate it behind a capframe-bind capability scoped to an allow-list of commands, and require holder-of-key proof per call. - criticalTool write query exposes a code/command execution surface · write query /leaderboard/pypi-mcp-server-sqlite-2025-4-25/write-query excessive agency write query looks like it executes code or shell commands Execute an INSERT, UPDATE, or DELETE query on the SQLite database . Arbitrary execution is the maximal authority a tool can hold -- it subsumes every other caveat, so it should never be exposed to an agent without a hard sandbox and an explicit, narrowly-scoped capability. fix: Do not expose raw code/shell execution to an agent. If unavoidable, run it in a disposable sandbox with no network + no host FS, gate it behind a capframe-bind capability scoped to an allow-list of commands, and require holder-of-key proof per call. - highTool write query name implies a side effect that is not declared · write query /leaderboard/pypi-mcp-server-sqlite-2025-4-25/write-query excessive agency write query looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool create table name implies a side effect that is not declared · create table /leaderboard/pypi-mcp-server-sqlite-2025-4-25/create-table excessive agency create table looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - mediumTool read query accepts unconstrained string input · read query /leaderboard/pypi-mcp-server-sqlite-2025-4-25/read-query unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool write query accepts unconstrained string input · write query /leaderboard/pypi-mcp-server-sqlite-2025-4-25/write-query unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool create table accepts unconstrained string input · create table /leaderboard/pypi-mcp-server-sqlite-2025-4-25/create-table unconstrained inputThe following string parameter s have no maxLength constraint: query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool describe table accepts unconstrained string input · describe table /leaderboard/pypi-mcp-server-sqlite-2025-4-25/describe-table unconstrained inputThe following string parameter s have no maxLength constraint: table name . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool append insight accepts unconstrained string input · append insight /leaderboard/pypi-mcp-server-sqlite-2025-4-25/append-insight unconstrained inputThe following string parameter s have no maxLength constraint: insight . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/pypi-mcp-server-sqlite-2025-4-25 74AntV Chart MCPnpm:@antv/mcp-server-chart@0.9.10C542723M - mediumTool generate area chart accepts unconstrained string input · generate area chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-area-chart unconstrained inputThe following string parameter s have no maxLength constraint: axisXTitle , axisYTitle , title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate bar chart accepts unconstrained string input · generate bar chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-bar-chart unconstrained inputThe following string parameter s have no maxLength constraint: axisXTitle , axisYTitle , title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate boxplot chart accepts unconstrained string input · generate boxplot chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-boxplot-chart unconstrained inputThe following string parameter s have no maxLength constraint: axisXTitle , axisYTitle , title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate column chart accepts unconstrained string input · generate column chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-column-chart unconstrained inputThe following string parameter s have no maxLength constraint: axisXTitle , axisYTitle , title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate district map accepts unconstrained string input · generate district map /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-district-map unconstrained inputThe following string parameter s have no maxLength constraint: title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate dual axes chart accepts unconstrained string input · generate dual axes chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-dual-axes-chart unconstrained inputThe following string parameter s have no maxLength constraint: axisXTitle , title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate funnel chart accepts unconstrained string input · generate funnel chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-funnel-chart unconstrained inputThe following string parameter s have no maxLength constraint: title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate funnel chart description mentions money but no money side-effect is declared · generate funnel chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-funnel-chart excessive agencyDescription: "Generate a funnel chart to visualize the progressive reduction of data as it passes through stages, such as, the conversion rates of users from visiting a website to completing a purchase." -- this references money/payment/refund/etc., but the declared side effects don't include money . A capframe-bind policy that relies on declared side effects to scope spend caveats will under-scope this tool. fix: Add money to the tool's side effects declaration, or rewrite the description to clarify that no actual money moves. - mediumTool generate histogram chart accepts unconstrained string input · generate histogram chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-histogram-chart unconstrained inputThe following string parameter s have no maxLength constraint: axisXTitle , axisYTitle , title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate line chart accepts unconstrained string input · generate line chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-line-chart unconstrained inputThe following string parameter s have no maxLength constraint: axisXTitle , axisYTitle , title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate liquid chart accepts unconstrained string input · generate liquid chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-liquid-chart unconstrained inputThe following string parameter s have no maxLength constraint: title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate path map accepts unconstrained string input · generate path map /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-path-map unconstrained inputThe following string parameter s have no maxLength constraint: title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate pie chart accepts unconstrained string input · generate pie chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-pie-chart unconstrained inputThe following string parameter s have no maxLength constraint: title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate pin map accepts unconstrained string input · generate pin map /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-pin-map unconstrained inputThe following string parameter s have no maxLength constraint: title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate radar chart accepts unconstrained string input · generate radar chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-radar-chart unconstrained inputThe following string parameter s have no maxLength constraint: title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate sankey chart accepts unconstrained string input · generate sankey chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-sankey-chart unconstrained inputThe following string parameter s have no maxLength constraint: title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate sankey chart description mentions money but no money side-effect is declared · generate sankey chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-sankey-chart excessive agencyDescription: "Generate a sankey chart to visualize the flow of data between different stages or categories, such as, the user journey from landing on a page to completing a purchase." -- this references money/payment/refund/etc., but the declared side effects don't include money . A capframe-bind policy that relies on declared side effects to scope spend caveats will under-scope this tool. fix: Add money to the tool's side effects declaration, or rewrite the description to clarify that no actual money moves. - mediumTool generate scatter chart accepts unconstrained string input · generate scatter chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-scatter-chart unconstrained inputThe following string parameter s have no maxLength constraint: axisXTitle , axisYTitle , title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate treemap chart accepts unconstrained string input · generate treemap chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-treemap-chart unconstrained inputThe following string parameter s have no maxLength constraint: title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate venn chart accepts unconstrained string input · generate venn chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-venn-chart unconstrained inputThe following string parameter s have no maxLength constraint: title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate violin chart accepts unconstrained string input · generate violin chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-violin-chart unconstrained inputThe following string parameter s have no maxLength constraint: axisXTitle , axisYTitle , title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate waterfall chart accepts unconstrained string input · generate waterfall chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-waterfall-chart unconstrained inputThe following string parameter s have no maxLength constraint: axisXTitle , axisYTitle , title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool generate word cloud chart accepts unconstrained string input · generate word cloud chart /leaderboard/npm-antv-mcp-server-chart-0-9-10/generate-word-cloud-chart unconstrained inputThe following string parameter s have no maxLength constraint: title . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-antv-mcp-server-chart-0-9-10 75NYC Subway Info MCPhttps://subwayinfo.nyc/mcpC522524M - mediumTool mta get arrivals accepts unconstrained string input · mta get arrivals /leaderboard/https-subwayinfo-nyc-mcp/mta-get-arrivals unconstrained inputThe following string parameter s have no maxLength constraint: line , station id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool mta get line status accepts unconstrained string input · mta get line status /leaderboard/https-subwayinfo-nyc-mcp/mta-get-line-status unconstrained inputThe following string parameter s have no maxLength constraint: line . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool mta list alerts accepts unconstrained string input · mta list alerts /leaderboard/https-subwayinfo-nyc-mcp/mta-list-alerts unconstrained inputThe following string parameter s have no maxLength constraint: alert type , line . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool mta search stations accepts unconstrained string input · mta search stations /leaderboard/https-subwayinfo-nyc-mcp/mta-search-stations unconstrained inputThe following string parameter s have no maxLength constraint: line , query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool mta get station info accepts unconstrained string input · mta get station info /leaderboard/https-subwayinfo-nyc-mcp/mta-get-station-info unconstrained inputThe following string parameter s have no maxLength constraint: station id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool mta plan trip accepts unconstrained string input · mta plan trip /leaderboard/https-subwayinfo-nyc-mcp/mta-plan-trip unconstrained inputThe following string parameter s have no maxLength constraint: destination station id , origin station id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool mta get planned work accepts unconstrained string input · mta get planned work /leaderboard/https-subwayinfo-nyc-mcp/mta-get-planned-work unconstrained inputThe following string parameter s have no maxLength constraint: line . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool bus list alerts accepts unconstrained string input · bus list alerts /leaderboard/https-subwayinfo-nyc-mcp/bus-list-alerts unconstrained inputThe following string parameter s have no maxLength constraint: route . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool bus get arrivals accepts unconstrained string input · bus get arrivals /leaderboard/https-subwayinfo-nyc-mcp/bus-get-arrivals unconstrained inputThe following string parameter s have no maxLength constraint: route , stop id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool bus get route info accepts unconstrained string input · bus get route info /leaderboard/https-subwayinfo-nyc-mcp/bus-get-route-info unconstrained inputThe following string parameter s have no maxLength constraint: route id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool bus search stops accepts unconstrained string input · bus search stops /leaderboard/https-subwayinfo-nyc-mcp/bus-search-stops unconstrained inputThe following string parameter s have no maxLength constraint: borough , query , route . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool ferry get arrivals accepts unconstrained string input · ferry get arrivals /leaderboard/https-subwayinfo-nyc-mcp/ferry-get-arrivals unconstrained inputThe following string parameter s have no maxLength constraint: landing id , route . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool ferry list alerts accepts unconstrained string input · ferry list alerts /leaderboard/https-subwayinfo-nyc-mcp/ferry-list-alerts unconstrained inputThe following string parameter s have no maxLength constraint: route . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool ferry search landings accepts unconstrained string input · ferry search landings /leaderboard/https-subwayinfo-nyc-mcp/ferry-search-landings unconstrained inputThe following string parameter s have no maxLength constraint: borough , query , route . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool ferry get routes accepts unconstrained string input · ferry get routes /leaderboard/https-subwayinfo-nyc-mcp/ferry-get-routes unconstrained inputThe following string parameter s have no maxLength constraint: route . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool bike get station status accepts unconstrained string input · bike get station status /leaderboard/https-subwayinfo-nyc-mcp/bike-get-station-status unconstrained inputThe following string parameter s have no maxLength constraint: station id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool bike search stations accepts unconstrained string input · bike search stations /leaderboard/https-subwayinfo-nyc-mcp/bike-search-stations unconstrained inputThe following string parameter s have no maxLength constraint: borough , query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool bike get availability summary accepts unconstrained string input · bike get availability summary /leaderboard/https-subwayinfo-nyc-mcp/bike-get-availability-summary unconstrained inputThe following string parameter s have no maxLength constraint: borough . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool rail get departures accepts unconstrained string input · rail get departures /leaderboard/https-subwayinfo-nyc-mcp/rail-get-departures unconstrained inputThe following string parameter s have no maxLength constraint: branch , station id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool rail list alerts accepts unconstrained string input · rail list alerts /leaderboard/https-subwayinfo-nyc-mcp/rail-list-alerts unconstrained inputThe following string parameter s have no maxLength constraint: branch . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool rail search stations accepts unconstrained string input · rail search stations /leaderboard/https-subwayinfo-nyc-mcp/rail-search-stations unconstrained inputThe following string parameter s have no maxLength constraint: branch , query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool rail get station info accepts unconstrained string input · rail get station info /leaderboard/https-subwayinfo-nyc-mcp/rail-get-station-info unconstrained inputThe following string parameter s have no maxLength constraint: station id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool transit ask accepts unconstrained string input · transit ask /leaderboard/https-subwayinfo-nyc-mcp/transit-ask unconstrained inputThe following string parameter s have no maxLength constraint: location . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool fetch accepts unconstrained string input · fetch /leaderboard/https-subwayinfo-nyc-mcp/fetch unconstrained inputThe following string parameter s have no maxLength constraint: id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-subwayinfo-nyc-mcp 76server-filesystemnpm:@modelcontextprotocol/server-filesystem@2026.1.14C52146H12M - highTool write file name implies a side effect that is not declared · write file /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/write-file excessive agency write file looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool write file writes to or deletes from the host filesystem · write file /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/write-file filesystem egress write file appears to write, create, move, or delete files on the host filesystem Create a new file or completely overwrite an existing file with new content. Use with caution as it will overwrite existing files without warning. Handles text content with proper encoding. Only works within allowed directories. . An agent manipulated by an indirect-injection payload can target sensitive paths SSH keys, shell configs, application secrets or establish persistence via cron / systemd. fix: Restrict the tool to an explicit allow-list of safe directories. Validate all path parameters server-side, reject traversal sequences ../ , and gate write / delete operations behind a capframe-bind path starts with /safe/dir caveat. - highTool edit file name implies a side effect that is not declared · edit file /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/edit-file excessive agency edit file looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool edit file writes to or deletes from the host filesystem · edit file /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/edit-file filesystem egress edit file appears to write, create, move, or delete files on the host filesystem Make line-based edits to a text file. Each edit replaces exact line sequences with new content. Returns a git-style diff showing the changes made. Only works within allowed directories. . An agent manipulated by an indirect-injection payload can target sensitive paths SSH keys, shell configs, application secrets or establish persistence via cron / systemd. fix: Restrict the tool to an explicit allow-list of safe directories. Validate all path parameters server-side, reject traversal sequences ../ , and gate write / delete operations behind a capframe-bind path starts with /safe/dir caveat. - highTool create directory name implies a side effect that is not declared · create directory /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/create-directory excessive agency create directory looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool move file writes to or deletes from the host filesystem · move file /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/move-file filesystem egress move file appears to write, create, move, or delete files on the host filesystem Move or rename files and directories. Can move files between directories and rename them in a single operation. If the destination exists, the operation will fail. Works across different directories and can be used for simple renaming within the same directory. Both source and destination must be within allowed directories. . An agent manipulated by an indirect-injection payload can target sensitive paths SSH keys, shell configs, application secrets or establish persistence via cron / systemd. fix: Restrict the tool to an explicit allow-list of safe directories. Validate all path parameters server-side, reject traversal sequences ../ , and gate write / delete operations behind a capframe-bind path starts with /safe/dir caveat. - mediumTool read file accepts unconstrained string input · read file /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/read-file unconstrained inputThe following string parameter s have no maxLength constraint: path . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool read text file accepts unconstrained string input · read text file /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/read-text-file unconstrained inputThe following string parameter s have no maxLength constraint: path . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool read media file accepts unconstrained string input · read media file /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/read-media-file unconstrained inputThe following string parameter s have no maxLength constraint: path . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool write file accepts unconstrained string input · write file /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/write-file unconstrained inputThe following string parameter s have no maxLength constraint: content , path . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool edit file accepts unconstrained string input · edit file /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/edit-file unconstrained inputThe following string parameter s have no maxLength constraint: path . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool create directory accepts unconstrained string input · create directory /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/create-directory unconstrained inputThe following string parameter s have no maxLength constraint: path . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool list directory accepts unconstrained string input · list directory /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/list-directory unconstrained inputThe following string parameter s have no maxLength constraint: path . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool list directory with sizes accepts unconstrained string input · list directory with sizes /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/list-directory-with-sizes unconstrained inputThe following string parameter s have no maxLength constraint: path . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool directory tree accepts unconstrained string input · directory tree /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/directory-tree unconstrained inputThe following string parameter s have no maxLength constraint: path . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool move file accepts unconstrained string input · move file /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/move-file unconstrained inputThe following string parameter s have no maxLength constraint: destination , source . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool search files accepts unconstrained string input · search files /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/search-files unconstrained inputThe following string parameter s have no maxLength constraint: path , pattern . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get file info accepts unconstrained string input · get file info /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14/get-file-info unconstrained inputThe following string parameter s have no maxLength constraint: path . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-modelcontextprotocol-server-filesystem-2026-1-14 77Roundtable MCPhttps://mcp.roundtable.now/mcpC50137H11M - highTool set-thread-visibility name implies a side effect that is not declared · set-thread-visibility /leaderboard/https-mcp-roundtable-now-mcp/set-thread-visibility excessive agency set-thread-visibility looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool consult-council accepts an unconstrained URL / endpoint parameter · consult-council /leaderboard/https-mcp-roundtable-now-mcp/consult-council ssrf surfaceThe parameter s webhook url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool design-architecture accepts an unconstrained URL / endpoint parameter · design-architecture /leaderboard/https-mcp-roundtable-now-mcp/design-architecture ssrf surfaceThe parameter s webhook url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool review-code accepts an unconstrained URL / endpoint parameter · review-code /leaderboard/https-mcp-roundtable-now-mcp/review-code ssrf surfaceThe parameter s webhook url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool plan-implementation accepts an unconstrained URL / endpoint parameter · plan-implementation /leaderboard/https-mcp-roundtable-now-mcp/plan-implementation ssrf surfaceThe parameter s webhook url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool debug-issue accepts an unconstrained URL / endpoint parameter · debug-issue /leaderboard/https-mcp-roundtable-now-mcp/debug-issue ssrf surfaceThe parameter s webhook url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool assess-tradeoffs accepts an unconstrained URL / endpoint parameter · assess-tradeoffs /leaderboard/https-mcp-roundtable-now-mcp/assess-tradeoffs ssrf surfaceThe parameter s webhook url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool list-sessions accepts unconstrained string input · list-sessions /leaderboard/https-mcp-roundtable-now-mcp/list-sessions unconstrained inputThe following string parameter s have no maxLength constraint: tool name . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get-session accepts unconstrained string input · get-session /leaderboard/https-mcp-roundtable-now-mcp/get-session unconstrained inputThe following string parameter s have no maxLength constraint: session id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get-logs accepts unconstrained string input · get-logs /leaderboard/https-mcp-roundtable-now-mcp/get-logs unconstrained inputThe following string parameter s have no maxLength constraint: event , session id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool get-thread-link accepts unconstrained string input · get-thread-link /leaderboard/https-mcp-roundtable-now-mcp/get-thread-link unconstrained inputThe following string parameter s have no maxLength constraint: session id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool set-thread-visibility accepts unconstrained string input · set-thread-visibility /leaderboard/https-mcp-roundtable-now-mcp/set-thread-visibility unconstrained inputThe following string parameter s have no maxLength constraint: session id . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool consult-council accepts unconstrained string input · consult-council /leaderboard/https-mcp-roundtable-now-mcp/consult-council unconstrained inputThe following string parameter s have no maxLength constraint: webhook url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool design-architecture accepts unconstrained string input · design-architecture /leaderboard/https-mcp-roundtable-now-mcp/design-architecture unconstrained inputThe following string parameter s have no maxLength constraint: webhook url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool review-code accepts unconstrained string input · review-code /leaderboard/https-mcp-roundtable-now-mcp/review-code unconstrained inputThe following string parameter s have no maxLength constraint: language , webhook url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool plan-implementation accepts unconstrained string input · plan-implementation /leaderboard/https-mcp-roundtable-now-mcp/plan-implementation unconstrained inputThe following string parameter s have no maxLength constraint: webhook url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool debug-issue accepts unconstrained string input · debug-issue /leaderboard/https-mcp-roundtable-now-mcp/debug-issue unconstrained inputThe following string parameter s have no maxLength constraint: webhook url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool assess-tradeoffs accepts unconstrained string input · assess-tradeoffs /leaderboard/https-mcp-roundtable-now-mcp/assess-tradeoffs unconstrained inputThe following string parameter s have no maxLength constraint: webhook url . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/https-mcp-roundtable-now-mcp 78HubSpot MCPnpm:@hubspot/mcp-server@0.4.0D42217H15M - highTool hubspot-batch-create-associations name implies a side effect that is not declared · hubspot-batch-create-associations /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-batch-create-associations excessive agency hubspot-batch-create-associations looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool hubspot-batch-create-objects name implies a side effect that is not declared · hubspot-batch-create-objects /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-batch-create-objects excessive agency hubspot-batch-create-objects looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool hubspot-batch-update-objects name implies a side effect that is not declared · hubspot-batch-update-objects /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-batch-update-objects excessive agency hubspot-batch-update-objects looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool hubspot-create-property name implies a side effect that is not declared · hubspot-create-property /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-create-property excessive agency hubspot-create-property looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool hubspot-update-property name implies a side effect that is not declared · hubspot-update-property /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-update-property excessive agency hubspot-update-property looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool hubspot-create-engagement name implies a side effect that is not declared · hubspot-create-engagement /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-create-engagement excessive agency hubspot-create-engagement looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool hubspot-update-engagement name implies a side effect that is not declared · hubspot-update-engagement /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-update-engagement excessive agency hubspot-update-engagement looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - mediumTool hubspot-list-objects accepts unconstrained string input · hubspot-list-objects /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-list-objects unconstrained inputThe following string parameter s have no maxLength constraint: after , objectType . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-search-objects accepts unconstrained string input · hubspot-search-objects /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-search-objects unconstrained inputThe following string parameter s have no maxLength constraint: after , objectType , query . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-batch-create-associations accepts unconstrained string input · hubspot-batch-create-associations /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-batch-create-associations unconstrained inputThe following string parameter s have no maxLength constraint: fromObjectType , toObjectType . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-get-association-definitions accepts unconstrained string input · hubspot-get-association-definitions /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-get-association-definitions unconstrained inputThe following string parameter s have no maxLength constraint: fromObjectType , toObjectType . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-list-associations accepts unconstrained string input · hubspot-list-associations /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-list-associations unconstrained inputThe following string parameter s have no maxLength constraint: after , objectId , objectType , toObjectType . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-batch-create-objects accepts unconstrained string input · hubspot-batch-create-objects /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-batch-create-objects unconstrained inputThe following string parameter s have no maxLength constraint: objectType . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-batch-update-objects accepts unconstrained string input · hubspot-batch-update-objects /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-batch-update-objects unconstrained inputThe following string parameter s have no maxLength constraint: objectType . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-batch-read-objects accepts unconstrained string input · hubspot-batch-read-objects /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-batch-read-objects unconstrained inputThe following string parameter s have no maxLength constraint: objectType . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-list-properties accepts unconstrained string input · hubspot-list-properties /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-list-properties unconstrained inputThe following string parameter s have no maxLength constraint: objectType . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-get-property accepts unconstrained string input · hubspot-get-property /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-get-property unconstrained inputThe following string parameter s have no maxLength constraint: objectType , propertyName . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-create-property accepts unconstrained string input · hubspot-create-property /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-create-property unconstrained inputThe following string parameter s have no maxLength constraint: calculationFormula , description , groupName , label , name , objectType . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-update-property accepts unconstrained string input · hubspot-update-property /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-update-property unconstrained inputThe following string parameter s have no maxLength constraint: calculationFormula , description , groupName , label , objectType , propertyName . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-get-link accepts unconstrained string input · hubspot-get-link /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-get-link unconstrained inputThe following string parameter s have no maxLength constraint: portalId , uiDomain . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-list-workflows accepts unconstrained string input · hubspot-list-workflows /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-list-workflows unconstrained inputThe following string parameter s have no maxLength constraint: after . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. - mediumTool hubspot-get-workflow accepts unconstrained string input · hubspot-get-workflow /leaderboard/npm-hubspot-mcp-server-0-4-0/hubspot-get-workflow unconstrained inputThe following string parameter s have no maxLength constraint: flowId . Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content. fix: Add a maxLength to each string property, or constrain with an enum or pattern . Most legitimate tool inputs fit under a few hundred bytes. Open full report /leaderboard/npm-hubspot-mcp-server-0-4-0 79Sentry MCPnpm:@sentry/mcp-server@0.35.0D422312H5M - highTool get issue tag values accepts an unconstrained URL / endpoint parameter · get issue tag values /leaderboard/npm-sentry-mcp-server-0-35-0/get-issue-tag-values ssrf surfaceThe parameter s issueUrl look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool get replay details accepts an unconstrained URL / endpoint parameter · get replay details /leaderboard/npm-sentry-mcp-server-0-35-0/get-replay-details ssrf surfaceThe parameter s replayUrl look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool update issue name implies a side effect that is not declared · update issue /leaderboard/npm-sentry-mcp-server-0-35-0/update-issue excessive agency update issue looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool update issue accepts an unconstrained URL / endpoint parameter · update issue /leaderboard/npm-sentry-mcp-server-0-35-0/update-issue ssrf surfaceThe parameter s issueUrl look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool create team name implies a side effect that is not declared · create team /leaderboard/npm-sentry-mcp-server-0-35-0/create-team excessive agency create team looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool create project name implies a side effect that is not declared · create project /leaderboard/npm-sentry-mcp-server-0-35-0/create-project excessive agency create project looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool update project name implies a side effect that is not declared · update project /leaderboard/npm-sentry-mcp-server-0-35-0/update-project excessive agency update project looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool create dsn name implies a side effect that is not declared · create dsn /leaderboard/npm-sentry-mcp-server-0-35-0/create-dsn excessive agency create dsn looks like a side-effecting tool its name contains a mutation verb , but its side effects declaration is . A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does. fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match e.g. email.preview rather than email.send . - highTool analyze issue with seer accepts an unconstrained URL / endpoint parameter · analyze issue with seer /leaderboard/npm-sentry-mcp-server-0-35-0/analyze-issue-with-seer ssrf surfaceThe parameter s issueUrl look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool search issue events accepts an unconstrained URL / endpoint parameter · search issue events /leaderboard/npm-sentry-mcp-server-0-35-0/search-issue-events ssrf surfaceThe parameter s issueUrl look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool get profile details accepts an unconstrained URL / endpoint parameter · get profile details /leaderboard/npm-sentry-mcp-server-0-35-0/get-profile-details ssrf surfaceThe parameter s profileUrl look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - highTool get sentry resource accepts an unconstrained URL / endpoint parameter · get sentry resource /leaderboard/npm-sentry-mcp-server-0-35-0/get-sentry-resource ssrf surfaceThe parameter s url look like URL or endpoint inputs but carry no pattern or enum constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL e.g. http://169.254.169.254/ to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot. fix: Constrain the URL parameter with an allow-list enum , or a pattern that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level. - mediumTool get event attachment fetches external web content -- indirect-injection surface · get event attachment /leaderboard/npm-sentry-mcp-server-0-35-0/get-event-attachment indirect injectionDescription: "Download attachments from a Sentry event. Use this tool when you need to: - Download files attached to a specific event - Access screenshots, log files, or other attachments uploaded with an error report - Retrieve attachment metadata and download URLs