{
  "version": "0.1",
  "kits": [
    {
      "kit": "0.1",
      "id": "seenly.skill-scan",
      "version": "0.1.0",
      "name": "Skill Scan — check an MCP server or agent skill for tool poisoning and exfiltration before you install it",
      "summary": "Static Consensus Scan of an MCP server or agent skill BEFORE you install it. Send a GitHub repo, npm:/pypi: package, or pasted code plus its tools/list / SKILL.md. Flags tool poisoning and hidden instructions, credential and env-var exfiltration, remote code execution, obfuscated payloads, install hooks, persistence and wallet risks. Two rule families and two LLM reviewers vote; the result is cross-checked against Agentropolis seller trust data (verification, settlements, wash flags). Returns allow / review / block with file:line evidence and a tools baseline hash. Read-only: the code is never executed. Advisory. $0.30 USDC.",
      "category": [
        "security_verification",
        "developer_tools"
      ],
      "seller": {
        "name": "Agentropolis",
        "domain": "seenly-skill-scan.vercel.app",
        "url": "https://seenly-skill-scan.vercel.app",
        "verify": "well-known",
        "contact": "hello@agentropolis.io",
        "test_wallets": [
          "0xcaA54748dA198081A89b6f369d798Ad78FC35B83"
        ]
      },
      "invoke": [
        {
          "kind": "http",
          "method": "POST",
          "url": "https://seenly-skill-scan.vercel.app/api/scan",
          "openapi": "https://seenly-skill-scan.vercel.app/openapi.json#/paths/~1api~1scan/post",
          "content_types": [
            "application/json"
          ]
        },
        {
          "kind": "a2a",
          "url": "https://seenly-skill-scan.vercel.app/.well-known/agent-card.json",
          "skill": "skill-scan-quote",
          "note": "quote/instructions only; paid calls are the HTTP invokes"
        }
      ],
      "input_schema": {
        "$ref": "https://seenly-skill-scan.vercel.app/openapi.json#/components/schemas/ScanRequest"
      },
      "output_schema": {
        "$ref": "https://seenly-skill-scan.vercel.app/openapi.json#/components/schemas/ScanResult"
      },
      "sample": {
        "input": {
          "repo": "https://github.com/owner/some-mcp-server",
          "context": "Connect to Claude Desktop to summarise my notes"
        },
        "output_url": "https://seenly-skill-scan.vercel.app/samples/scan-sample.json"
      },
      "offers": [
        {
          "rail": "x402",
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "USDC",
          "asset_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "300000",
          "price_usd": "0.30",
          "payTo": "0xeE6239F3E17bEBe5e89F21F29D74D68CAa0d78CE",
          "charge_on": "success",
          "environment": "live",
          "path": "/api/scan",
          "name": "Skill Scan (Consensus Scan)"
        }
      ],
      "trial": {
        "type": "sample",
        "sample_url": "https://seenly-skill-scan.vercel.app/samples/scan-sample.json",
        "free_calls_per_wallet": 0
      },
      "behavior": {
        "side_effects": "none (reads public code; never installs or executes it)",
        "idempotent": true,
        "deterministic": false,
        "p95_latency_s": 30,
        "advisory_only": true,
        "data_retention": "none (code processed in memory, never stored or logged)",
        "max_payload_kb": 240,
        "rate_limit": "20/min per client IP"
      },
      "limits": {
        "payload": "pasted code up to 200,000 chars / 60 files; repos up to 12 MB compressed (first 800 prioritised text files, 4 MB)",
        "sources": "github.com, raw.githubusercontent.com, gist.githubusercontent.com, npm registry, PyPI sdist",
        "bulk": "one scan per call"
      },
      "policy": {
        "refund": "Not charged on failure (x402 settles only after a successful response); invalid requests and unreachable sources are rejected before settlement.",
        "data": "Code is fetched read-only, processed in memory, never stored or logged by us, and excerpts are sent once to two small models through Vercel AI Gateway (no training).",
        "advisory": "Advisory static scan. A clean result is not a guarantee: behaviour fetched or triggered at run time is not observed. Pin the scanned version."
      },
      "contact": {
        "email": "hello@agentropolis.io",
        "a2a": "https://seenly-skill-scan.vercel.app/.well-known/agent-card.json"
      },
      "discovery": {
        "openapi": "https://seenly-skill-scan.vercel.app/openapi.json",
        "llms_txt": "https://seenly-skill-scan.vercel.app/llms.txt",
        "x402": "https://seenly-skill-scan.vercel.app/.well-known/x402"
      }
    }
  ]
}