{"data":{"skill":{"slug":"internet-court-mppx","name":"mppx","icon":"📦","repo":"https://github.com/internet-court/internet-court-skill/tree/main/vendored/tempo/mppx","status":"approved","author":"internet-court","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"59bda0ac-78f3-4a2c-b0de-19a178b59cb5","skill_id":"ec896d98-0339-4737-b050-c15ba8ca7d4b","version":1,"content_hash":"bc48bdb93c4c404d521c1b6ffcdee911","risk_level":"high","is_blocked":false,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"confirmation_required","manual_install_policy":"allowed","summary":"Most scanner alerts are false positives from Markdown backticks, code fences, documentation links, and safe environment-variable guidance. The main confirmed issue is an inline private-key placeholder that could encourage unsafe wallet-key handling if copied. The CLI examples also need explicit consent guardrails before wallet creation or paid requests.","remediation":[{"issue":"Inline wallet private-key placeholder","severity":"high","suggestion":"Replace privateKeyToAccount('0x...') with secure signer setup or an environment-backed server value. Add text that real keys must never appear in source files or prompts."},{"issue":"Paid CLI examples lack consent guardrails","severity":"medium","suggestion":"State that agents must not run wallet creation, payment, or paid request commands without explicit user approval. Include amount, recipient, network, and expected cost before execution."},{"issue":"Payment terms can change at runtime","severity":"medium","suggestion":"Tell users to verify every 402 Challenge before signing or paying. They should confirm amount, currency, recipient, and network each time."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":12,"line_start":12},{"file":"SKILL.md","line_end":14,"line_start":14},{"file":"SKILL.md","line_end":15,"line_start":15},{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"SKILL.md","line_end":24,"line_start":24},{"file":"SKILL.md","line_end":30,"line_start":30},{"file":"SKILL.md","line_end":32,"line_start":32},{"file":"SKILL.md","line_end":33,"line_start":33},{"file":"SKILL.md","line_end":34,"line_start":34},{"file":"SKILL.md","line_end":47,"line_start":38},{"file":"SKILL.md","line_end":51,"line_start":47},{"file":"SKILL.md","line_end":58,"line_start":51},{"file":"SKILL.md","line_end":62,"line_start":58},{"file":"SKILL.md","line_end":86,"line_start":62},{"file":"SKILL.md","line_end":92,"line_start":86},{"file":"SKILL.md","line_end":92,"line_start":92},{"file":"SKILL.md","line_end":93,"line_start":93},{"file":"SKILL.md","line_end":94,"line_start":94},{"file":"SKILL.md","line_end":96,"line_start":96},{"file":"SKILL.md","line_end":102,"line_start":102},{"file":"SKILL.md","line_end":103,"line_start":103},{"file":"SKILL.md","line_end":104,"line_start":104},{"file":"SKILL.md","line_end":106,"line_start":105},{"file":"SKILL.md","line_end":107,"line_start":106},{"file":"SKILL.md","line_end":108,"line_start":107},{"file":"SKILL.md","line_end":112,"line_start":108},{"file":"SKILL.md","line_end":114,"line_start":112},{"file":"SKILL.md","line_end":118,"line_start":114}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":46,"line_start":46},{"file":"SKILL.md","line_end":57,"line_start":57},{"file":"SKILL.md","line_end":46,"line_start":46},{"file":"SKILL.md","line_end":57,"line_start":57},{"file":"SKILL.md","line_end":122,"line_start":122},{"file":"SKILL.md","line_end":123,"line_start":123},{"file":"SKILL.md","line_end":124,"line_start":124},{"file":"SKILL.md","line_end":125,"line_start":125},{"file":"SKILL.md","line_end":126,"line_start":126},{"file":"SKILL.md","line_end":127,"line_start":127}]},{"factor":"env_access","evidence":[{"file":"SKILL.md","line_end":78,"line_start":78},{"file":"SKILL.md","line_end":78,"line_start":78},{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"SKILL.md","line_end":30,"line_start":30},{"file":"SKILL.md","line_end":78,"line_start":78}]}],"critical_findings":[],"high_findings":[{"title":"Crypto seed/private key mention","locations":[{"file":"SKILL.md","line_end":66,"line_start":66}],"confidence":0.74,"description":"const account = privateKeyToAccount('0x...')","review_kind":"security","source_category":"sensitive","source_severity":"high","confidence_reasoning":"The server example passes an inline private-key placeholder to privateKeyToAccount. Although placeholder text is used, copying this pattern can lead to real wallet keys in source or prompts."}],"medium_findings":[{"title":"Paid Request Execution Requires Explicit Consent","locations":[{"file":"SKILL.md","line_end":116,"line_start":112}],"confidence":0.82,"description":"The CLI section includes wallet creation and a command labeled make paid request. Agents need explicit user approval before running commands that create wallets or spend funds.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"Lines 112 through 116 describe the mppx CLI and include wallet creation plus a paid request command. The risk is contextual because the text is documentation, but the financial action is explicit."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":128,"audit_model":"codex","audited_at":"2026-07-09T23:38:05.493+00:00","created_at":"2026-07-10T07:43:51.021047+00:00","static_findings":[{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Add `402` payment handling to a client with `Fetch.polyfill` or `Fetch.from`.","category":"external_commands","line_end":12,"severity":"medium","line_start":12},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Accept one-time Tempo stablecoin payments with `tempo.charge`.","category":"external_commands","line_end":14,"severity":"medium","line_start":14},{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Accept metered Tempo stablecoin payments with `tempo.session`.","category":"external_commands","line_end":15,"severity":"medium","line_start":15},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Accept one-time card payments with `stripe.charge`.","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Server integrations need a recipient, currency, amount, and `MPP_SECRET_KEY`.","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":"- Tempo examples use chain ID `4217` unless a page explicitly covers Moderato testnet.","category":"external_commands","line_end":24,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Keep `MPP_SECRET_KEY` server-side and out of logs.","category":"external_commands","line_end":30,"severity":"medium","line_start":30},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Treat runtime `402` Challenges as authoritative for current payment terms.","category":"external_commands","line_end":32,"severity":"medium","line_start":32},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Return `id` and `opaque` unchanged when responding to a Challenge.","category":"external_commands","line_end":33,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use `USDC.e` for Tempo bridged USDC examples, not generic USDC.","category":"external_commands","line_end":34,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```ts","category":"external_commands","line_end":47,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":51,"severity":"medium","line_start":47},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```ts","category":"external_commands","line_end":58,"severity":"medium","line_start":51},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":62,"severity":"medium","line_start":58},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```ts","category":"external_commands","line_end":86,"severity":"medium","line_start":62},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":92,"severity":"medium","line_start":86},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `tempo.charge` | `charge` | One-time stablecoin payment (TIP-20 token transfer on Tempo) |","category":"external_commands","line_end":92,"severity":"medium","line_start":92},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `tempo.session` | `session` | Streaming payments via payment channels on Tempo |","category":"external_commands","line_end":93,"severity":"medium","line_start":93},{"id":"external_commands:SKILL.md:94:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `stripe.charge` | `charge` | One-time payment via Stripe |","category":"external_commands","line_end":94,"severity":"medium","line_start":94},{"id":"external_commands:SKILL.md:96:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`tempo()` returns `[tempo.charge, tempo.session]` as a tuple using the current v2 Sessions implement","category":"external_commands","line_end":96,"severity":"medium","line_start":96},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `mppx` | Core primitives (`Challenge`, `Credential`, `Method`, `Receipt`, `PaymentRequest`) |","category":"external_commands","line_end":102,"severity":"medium","line_start":102},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `mppx/client` | `Mppx`, `tempo`, `stripe`, `session`, `Transport` |","category":"external_commands","line_end":103,"severity":"medium","line_start":103},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `mppx/server` | `Mppx`, `tempo`, `stripe`, `Transport`, `Store`, `NodeListener` |","category":"external_commands","line_end":104,"severity":"medium","line_start":104},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `mppx/hono` | Hono middleware |","category":"external_commands","line_end":106,"severity":"medium","line_start":105},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `mppx/express` | Express middleware |","category":"external_commands","line_end":107,"severity":"medium","line_start":106},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `mppx/nextjs` | Next.js middleware |","category":"external_commands","line_end":108,"severity":"medium","line_start":107},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `mppx/elysia` | Elysia middleware |","category":"external_commands","line_end":112,"severity":"medium","line_start":108},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`mppx` includes a CLI for making paid requests during development:","category":"external_commands","line_end":114,"severity":"medium","line_start":112},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```sh","category":"external_commands","line_end":118,"severity":"medium","line_start":114},{"id":"network:SKILL.md:46:fetch-api-call","file":"SKILL.md","pattern":"Fetch API call","snippet":"const res = await fetch('https://api.example.com/resource')","category":"network","line_end":46,"severity":"low","line_start":46},{"id":"network:SKILL.md:57:fetch-api-call","file":"SKILL.md","pattern":"Fetch API call","snippet":"const res = await mppx.fetch('https://api.example.com/resource')","category":"network","line_end":57,"severity":"low","line_start":57},{"id":"network:SKILL.md:46:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"const res = await fetch('https://api.example.com/resource')","category":"network","line_end":46,"severity":"low","line_start":46},{"id":"network:SKILL.md:57:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"const res = await mppx.fetch('https://api.example.com/resource')","category":"network","line_end":57,"severity":"low","line_start":57},{"id":"network:SKILL.md:122:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [TypeScript SDK docs](https://mpp.dev/sdk/typescript)","category":"network","line_end":122,"severity":"low","line_start":122},{"id":"network:SKILL.md:123:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Client quickstart](https://mpp.dev/quickstart/client)","category":"network","line_end":123,"severity":"low","line_start":123},{"id":"network:SKILL.md:124:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Server quickstart](https://mpp.dev/quickstart/server)","category":"network","line_end":124,"severity":"low","line_start":124},{"id":"network:SKILL.md:125:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [mppx repository](https://github.com/wevm/mppx)","category":"network","line_end":125,"severity":"low","line_start":125},{"id":"network:SKILL.md:126:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [IETF Specification](https://paymentauth.org)","category":"network","line_end":126,"severity":"low","line_start":126},{"id":"network:SKILL.md:127:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Tempo docs](https://docs.tempo.xyz)","category":"network","line_end":127,"severity":"low","line_start":127},{"id":"env_access:SKILL.md:78:environment-variable-access-dot-notation","file":"SKILL.md","pattern":"Environment variable access (dot notation)","snippet":"secretKey: process.env.MPP_SECRET_KEY,","category":"env_access","line_end":78,"severity":"low","line_start":78},{"id":"env_access:SKILL.md:78:environment-variable-object","file":"SKILL.md","pattern":"Environment variable object","snippet":"secretKey: process.env.MPP_SECRET_KEY,","category":"env_access","line_end":78,"severity":"low","line_start":78},{"id":"env_access:SKILL.md:23:generic-api-secret-keys","file":"SKILL.md","pattern":"Generic API/secret keys","snippet":"- Server integrations need a recipient, currency, amount, and `MPP_SECRET_KEY`.","category":"env_access","line_end":23,"severity":"high","line_start":23},{"id":"env_access:SKILL.md:30:generic-api-secret-keys","file":"SKILL.md","pattern":"Generic API/secret keys","snippet":"- Keep `MPP_SECRET_KEY` server-side and out of logs.","category":"env_access","line_end":30,"severity":"high","line_start":30},{"id":"env_access:SKILL.md:78:generic-api-secret-keys","file":"SKILL.md","pattern":"Generic API/secret keys","snippet":"secretKey: process.env.MPP_SECRET_KEY,","category":"env_access","line_end":78,"severity":"high","line_start":78},{"id":"sensitive:SKILL.md:78:environment-file-access","file":"SKILL.md","pattern":"Environment file access","snippet":"secretKey: process.env.MPP_SECRET_KEY,","category":"sensitive","line_end":78,"severity":"high","line_start":78},{"id":"sensitive:SKILL.md:31:crypto-seed-private-key-mention","file":"SKILL.md","pattern":"Crypto seed/private key mention","snippet":"- Never commit private keys or wallet seeds.","category":"sensitive","line_end":31,"severity":"high","line_start":31},{"id":"sensitive:SKILL.md:64:crypto-seed-private-key-mention","file":"SKILL.md","pattern":"Crypto seed/private key mention","snippet":"import { privateKeyToAccount } from 'viem/accounts'","category":"sensitive","line_end":64,"severity":"high","line_start":64},{"id":"sensitive:SKILL.md:66:crypto-seed-private-key-mention","file":"SKILL.md","pattern":"Crypto seed/private key mention","snippet":"const account = privateKeyToAccount('0x...')","category":"sensitive","line_end":66,"severity":"high","line_start":66},{"id":"blocker:SKILL.md:112:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"`mppx` includes a CLI for making paid requests during development:","category":"blocker","line_end":112,"severity":"low","line_start":112},{"id":"blocker:SKILL.md:116:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"npx mppx mpp.dev/api/ping/paid # make paid request","category":"blocker","line_end":116,"severity":"low","line_start":116}],"finding_verdicts":[{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"This is Markdown code-fence syntax around documentation examples, not Ruby or shell backtick execution. The skill file does not execute these fences.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","reason":"This is Markdown code-fence syntax around documentation examples, not Ruby or shell backtick execution. The skill file does not execute these fences.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","reason":"This is Markdown code-fence syntax around documentation examples, not Ruby or shell backtick execution. The skill file does not execute these fences.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","reason":"This is Markdown code-fence syntax around documentation examples, not Ruby or shell backtick execution. The skill file does not execute these fences.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","reason":"This is Markdown code-fence syntax around documentation examples, not Ruby or shell backtick execution. The skill file does not execute these fences.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","reason":"This is Markdown code-fence syntax around documentation examples, not Ruby or shell backtick execution. The skill file does not execute these fences.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:94:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:96:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline code labels for APIs, constants, or terms. They are not command substitution or executable Ruby or shell code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","reason":"This line describes an mppx development CLI, but it does not instruct the agent to run commands automatically. The paid-action risk is handled as a separate semantic finding.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","reason":"This is Markdown code-fence syntax around documentation examples, not Ruby or shell backtick execution. The skill file does not execute these fences.","verdict":"false_positive","confidence":0.95},{"id":"network:SKILL.md:46:fetch-api-call","reason":"The fetch call uses api.example.com as a placeholder in a TypeScript payment client example. Network use is expected for 402 handling, and no secret exfiltration is shown.","verdict":"false_positive","confidence":0.91},{"id":"network:SKILL.md:57:fetch-api-call","reason":"The fetch call uses api.example.com as a placeholder in a TypeScript payment client example. Network use is expected for 402 handling, and no secret exfiltration is shown.","verdict":"false_positive","confidence":0.91},{"id":"network:SKILL.md:46:hardcoded-url","reason":"The fetch call uses api.example.com as a placeholder in a TypeScript payment client example. Network use is expected for 402 handling, and no secret exfiltration is shown.","verdict":"false_positive","confidence":0.91},{"id":"network:SKILL.md:57:hardcoded-url","reason":"The fetch call uses api.example.com as a placeholder in a TypeScript payment client example. Network use is expected for 402 handling, and no secret exfiltration is shown.","verdict":"false_positive","confidence":0.91},{"id":"network:SKILL.md:122:hardcoded-url","reason":"This is a documentation reference link in the References section. It is not an automatic network request or hidden data transfer.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:123:hardcoded-url","reason":"This is a documentation reference link in the References section. It is not an automatic network request or hidden data transfer.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:124:hardcoded-url","reason":"This is a documentation reference link in the References section. It is not an automatic network request or hidden data transfer.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:125:hardcoded-url","reason":"This is a documentation reference link in the References section. It is not an automatic network request or hidden data transfer.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:126:hardcoded-url","reason":"This is a documentation reference link in the References section. It is not an automatic network request or hidden data transfer.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:127:hardcoded-url","reason":"This is a documentation reference link in the References section. It is not an automatic network request or hidden data transfer.","verdict":"false_positive","confidence":0.97},{"id":"env_access:SKILL.md:78:environment-variable-access-dot-notation","reason":"The example reads MPP_SECRET_KEY from process.env in server configuration, which is normal secret handling. No logging, client exposure, or external transmission is shown.","verdict":"false_positive","confidence":0.88},{"id":"env_access:SKILL.md:78:environment-variable-object","reason":"The example reads MPP_SECRET_KEY from process.env in server configuration, which is normal secret handling. No logging, client exposure, or external transmission is shown.","verdict":"false_positive","confidence":0.88},{"id":"env_access:SKILL.md:23:generic-api-secret-keys","reason":"This line names a required server secret but does not disclose a value or read the environment. It is configuration guidance, not credential exposure.","verdict":"false_positive","confidence":0.94},{"id":"env_access:SKILL.md:30:generic-api-secret-keys","reason":"This line is a safety instruction to keep MPP_SECRET_KEY server-side and out of logs. It does not expose or access a secret value.","verdict":"false_positive","confidence":0.97},{"id":"env_access:SKILL.md:78:generic-api-secret-keys","reason":"The example reads MPP_SECRET_KEY from process.env in server configuration, which is normal secret handling. No logging, client exposure, or external transmission is shown.","verdict":"false_positive","confidence":0.88},{"id":"sensitive:SKILL.md:78:environment-file-access","reason":"The code uses process.env.MPP_SECRET_KEY and does not read an environment file. No .env path, file access, or secret dumping behavior is present.","verdict":"false_positive","confidence":0.91},{"id":"sensitive:SKILL.md:31:crypto-seed-private-key-mention","reason":"This is a safety instruction telling users never to commit private keys or wallet seeds. It reduces risk rather than exposing sensitive material.","verdict":"false_positive","confidence":0.98},{"id":"sensitive:SKILL.md:64:crypto-seed-private-key-mention","reason":"This line imports a wallet helper but does not include a key value. The risky inline placeholder appears on a separate line and is verdicted separately.","verdict":"false_positive","confidence":0.86},{"id":"sensitive:SKILL.md:66:crypto-seed-private-key-mention","reason":"The server example passes an inline private-key placeholder to privateKeyToAccount. Although placeholder text is used, copying this pattern can lead to real wallet keys in source or prompts.","verdict":"confirmed","severity":"high","confidence":0.74},{"id":"blocker:SKILL.md:112:system-reconnaissance","reason":"This line introduces a payment CLI section, not host or network reconnaissance. It does not collect system information.","verdict":"false_positive","confidence":0.93},{"id":"blocker:SKILL.md:116:system-reconnaissance","reason":"The npx command targets a paid mppx endpoint, not local system reconnaissance. Financial execution risk is real but is captured in the semantic finding.","verdict":"false_positive","confidence":0.86}],"semantic_findings":[{"title":"Paid Request Execution Requires Explicit Consent","severity":"medium","locations":[{"file":"SKILL.md","line_end":116,"line_start":112}],"confidence":0.82,"description":"The CLI section includes wallet creation and a command labeled make paid request. Agents need explicit user approval before running commands that create wallets or spend funds.","confidence_reasoning":"Lines 112 through 116 describe the mppx CLI and include wallet creation plus a paid request command. The risk is contextual because the text is documentation, but the financial action is explicit."}],"subject_marketplace_commit_sha":null,"subject_content_hash":null,"subject_tree_hash":null,"subject_plugin_path":null,"audit_payload_hash":null,"confirmed_risk_level":null,"scanner_version":null,"policy_version":null,"subject":{"marketplaceCommitSha":null,"contentHash":null,"treeHash":null,"pluginPath":null,"auditPayloadHash":null},"scannerVersion":null,"policyVersion":null},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"not_attestable","url":null,"status":null,"reason":"confirmed_risk_level does not match the canonical trust resolver"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"high","confirmedFindingCount":2,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"confirmation_required","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}