{"data":{"skill":{"slug":"bankbridge-money-bankbridge","name":"bankbridge","icon":"📦","repo":"https://github.com/bankbridge-money/bankbridge-plugin/tree/8e8595165334041c80be2b47f468a9a171e5d7d1/skills/bankbridge","status":"approved","author":"bankbridge-money","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"b03db5cc-0c66-49e6-8ee3-19403402d845","skill_id":"bb845aa6-eb38-430c-a0a2-5b40316a4655","version":1,"content_hash":"v3:24db02bb8264ed7c50d4725dad4a4ba11a1c0d30:6c88ce7b623c22b61b225c7d7d2dac58f60b876f80715e98962ebd216a9e88a4:57a87d95f26c75049780ce7c1aec01483d082a4af2b95163a37f0b3188042f2f:736b696c6c732f62616e6b6272696467652d6d6f6e65792f62616e6b627269646765:adfa8f76d025b59bc9fa76c6dce05d24","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 19 static findings are false positives: Markdown backticks, documented service URLs, and financial query examples do not demonstrate shell execution or system reconnaissance. No evidence found of prompt injection, unauthorized data disclosure, or destructive instructions in the reviewed file. The remote service handles sensitive financial data, but its implementation and read-only enforcement were not available for verification.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":8,"line_start":8},{"file":"SKILL.md","line_end":12,"line_start":12},{"file":"SKILL.md","line_end":13,"line_start":13},{"file":"SKILL.md","line_end":19,"line_start":19},{"file":"SKILL.md","line_end":20,"line_start":20},{"file":"SKILL.md","line_end":21,"line_start":21},{"file":"SKILL.md","line_end":22,"line_start":22},{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"SKILL.md","line_end":24,"line_start":24},{"file":"SKILL.md","line_end":25,"line_start":25},{"file":"SKILL.md","line_end":26,"line_start":26},{"file":"SKILL.md","line_end":27,"line_start":27},{"file":"SKILL.md","line_end":34,"line_start":34},{"file":"SKILL.md","line_end":36,"line_start":36},{"file":"SKILL.md","line_end":40,"line_start":40}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":8,"line_start":8},{"file":"SKILL.md","line_end":12,"line_start":12}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":43,"audit_model":"codex","audited_at":"2026-10-27T17:56:11.332+00:00","created_at":"2026-10-27T18:38:26.512854+00:00","static_findings":[{"id":"external_commands:SKILL.md:8:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"BankBridge is a remote MCP server at `https://bankbridge.money/api/mcp` that gives you read-only acc","category":"external_commands","line_end":8,"severity":"medium","line_start":8},{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- If the BankBridge tools (`list_accounts`, `list_transactions`, ...) are not available, the user co","category":"external_commands","line_end":12,"severity":"medium","line_start":12},{"id":"external_commands:SKILL.md:13:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- If a result says `setup_required` or has a NO_CONNECTIONS notice, show the user the link in the re","category":"external_commands","line_end":13,"severity":"medium","line_start":13},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Balances, account list, credit utilization | `list_accounts`, `get_account` |","category":"external_commands","line_end":19,"severity":"medium","line_start":19},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| \"How much did I spend on X?\" | `get_spending_summary` (group by category, merchant, month or week)","category":"external_commands","line_end":20,"severity":"medium","line_start":20},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Find a specific charge or merchant | `search_transactions`, then `get_merchant_history` |","category":"external_commands","line_end":21,"severity":"medium","line_start":21},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Subscriptions and bills | `get_recurring_charges` |","category":"external_commands","line_end":22,"severity":"medium","line_start":22},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| \"Am I making more than I spend?\" | `get_monthly_cashflow` (one call per month, `month: \"YYYY-MM\"`)","category":"external_commands","line_end":23,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Raw transactions with filters | `list_transactions` (date range, amount, category, account; pagina","category":"external_commands","line_end":24,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Category names to filter by | `list_categories` |","category":"external_commands","line_end":25,"severity":"medium","line_start":25},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Portfolio, gains, dividends | `list_holdings`, `list_investment_transactions` |","category":"external_commands","line_end":26,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Add another bank | `connect_bank` (returns a link for the user) |","category":"external_commands","line_end":27,"severity":"medium","line_start":27},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- One subscription can appear under several descriptor spellings. Check `get_merchant_history` befor","category":"external_commands","line_end":34,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Every result has a `warnings` array. If it is not empty, tell the user (for example, a bank that n","category":"external_commands","line_end":36,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Start a session with `list_accounts` so you know which accounts exist; account ids can change when","category":"external_commands","line_end":40,"severity":"medium","line_start":40},{"id":"network:SKILL.md:8:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"BankBridge is a remote MCP server at `https://bankbridge.money/api/mcp` that gives you read-only acc","category":"network","line_end":8,"severity":"low","line_start":8},{"id":"network:SKILL.md:12:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- If the BankBridge tools (`list_accounts`, `list_transactions`, ...) are not available, the user co","category":"network","line_end":12,"severity":"low","line_start":12},{"id":"blocker:SKILL.md:3:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"description: Answer questions about the user's own money with live, read-only data from their connec","category":"blocker","line_end":3,"severity":"low","line_start":3},{"id":"blocker:SKILL.md:20:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"| \"How much did I spend on X?\" | `get_spending_summary` (group by category, merchant, month or week)","category":"blocker","line_end":20,"severity":"low","line_start":20}],"finding_verdicts":[{"id":"external_commands:SKILL.md:8:ruby-shell-backtick-execution","reason":"Backticks format the MCP endpoint as inline Markdown. There is no shell or Ruby execution instruction.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","reason":"Backticks format MCP tool names and the Claude Code /mcp interface command. The setup text does not invoke a shell interpreter.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:13:ruby-shell-backtick-execution","reason":"The backticks mark the setup_required response status as inline Markdown. The text describes displaying a setup link, not executing code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","reason":"The table formats list_accounts and get_account as MCP tool identifiers. No shell syntax or process execution is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","reason":"The backticks identify get_spending_summary in a financial query routing table. They do not execute a command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","reason":"The line documents search_transactions and get_merchant_history for investigating account charges. The backticks are Markdown formatting, not executable substitutions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","reason":"The table maps subscription questions to the get_recurring_charges MCP tool. No shell execution is requested.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"Inline Markdown identifies get_monthly_cashflow and its month parameter format. Neither is passed to a shell or Ruby interpreter.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"The line documents list_transactions filters and offset pagination. Backticks only distinguish API identifiers from prose.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","reason":"The backticks format the list_categories MCP tool name. No executable command or interpreter invocation appears.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"The line names list_holdings and list_investment_transactions for portfolio questions. These are documented MCP operations, not shell commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","reason":"The connect_bank identifier is inline Markdown for a tool returning a user-facing connection link. No shell execution is described.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"The text recommends get_merchant_history before labeling charges as duplicates. Its backticks are Markdown formatting without executable shell context.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"The warnings response field is formatted as inline Markdown. The instruction concerns reporting incomplete bank coverage, not executing commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","reason":"The line recommends the list_accounts MCP tool to refresh account identifiers. Markdown backticks do not introduce a shell execution mechanism.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:8:hardcoded-url","reason":"The HTTPS URL identifies the disclosed BankBridge MCP service central to the requested banking workflow. No unrelated destination or unauthorized transmission is specified.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:12:hardcoded-url","reason":"The URLs provide the Claude connector directory and BankBridge setup documentation. They are user-facing setup references, not instructions to transmit secrets.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:3:system-reconnaissance","reason":"The description lists questions about the user's connected financial accounts and explicitly excludes money movement. It contains no host enumeration or system reconnaissance instructions.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:20:system-reconnaissance","reason":"The example asks for spending totals grouped by financial categories or time periods. It does not inspect operating systems, processes, or network infrastructure.","verdict":"false_positive","confidence":1}],"semantic_findings":[],"subject_marketplace_commit_sha":"24db02bb8264ed7c50d4725dad4a4ba11a1c0d30","subject_content_hash":"6c88ce7b623c22b61b225c7d7d2dac58f60b876f80715e98962ebd216a9e88a4","subject_tree_hash":"57a87d95f26c75049780ce7c1aec01483d082a4af2b95163a37f0b3188042f2f","subject_plugin_path":"skills/bankbridge-money/bankbridge","audit_payload_hash":"adfa8f76d025b59bc9fa76c6dce05d24","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"24db02bb8264ed7c50d4725dad4a4ba11a1c0d30","contentHash":"6c88ce7b623c22b61b225c7d7d2dac58f60b876f80715e98962ebd216a9e88a4","treeHash":"57a87d95f26c75049780ce7c1aec01483d082a4af2b95163a37f0b3188042f2f","pluginPath":"skills/bankbridge-money/bankbridge","auditPayloadHash":"adfa8f76d025b59bc9fa76c6dce05d24"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/bankbridge-money-bankbridge/audits/1/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}