{
  "version": "0.1",
  "kits": [
    {
      "kit": "0.1",
      "id": "seenly.payload-check",
      "version": "0.1.0",
      "name": "Payload Check — data-quality filter for agent payloads (JSON, code, scrapes, LLM output)",
      "summary": "Payload in → 0-100 quality score, pass/warn/fail, tags and issues before your agent uses it: broken/truncated JSON (auto-repair), JSON Schema mismatch, syntax errors, cut-off code, bot-challenge/captcha/404 scrapes, LLM refusals, placeholders, repetition loops, mojibake, ragged CSV. $0.03/check, deterministic, nothing stored.",
      "category": [
        "developer_tools",
        "data.quality",
        "ai.guardrails",
        "scraping"
      ],
      "seller": {
        "name": "Seenly",
        "domain": "seenly-payload-check.vercel.app",
        "url": "https://seenly-payload-check.vercel.app",
        "verify": "well-known",
        "contact": "hello@agentropolis.io",
        "test_wallets": [
          "0xcaA54748dA198081A89b6f369d798Ad78FC35B83"
        ]
      },
      "invoke": [
        {
          "kind": "http",
          "method": "POST",
          "url": "https://seenly-payload-check.vercel.app/api/check",
          "openapi": "https://seenly-payload-check.vercel.app/openapi.json#/paths/~1api~1check/post",
          "content_types": [
            "application/json",
            "text/plain"
          ]
        },
        {
          "kind": "http",
          "method": "GET",
          "url": "https://seenly-payload-check.vercel.app/api/check?content={content}"
        },
        {
          "kind": "a2a",
          "url": "https://seenly-payload-check.vercel.app/.well-known/agent-card.json",
          "skill": "payload-check-quote",
          "note": "quote/instructions only; the paid call is the HTTP invoke"
        }
      ],
      "input_schema": {
        "$ref": "https://seenly-payload-check.vercel.app/openapi.json#/components/schemas/CheckRequest"
      },
      "output_schema": {
        "$ref": "https://seenly-payload-check.vercel.app/openapi.json#/components/schemas/CheckResult"
      },
      "sample": {
        "input": {
          "content": "{\"name\": \"Acme\", \"tags\": [\"a\",],}",
          "expect": "auto"
        },
        "output_url": "https://seenly-payload-check.vercel.app/samples/check-broken-json.json"
      },
      "offers": [
        {
          "rail": "x402",
          "scheme": "exact",
          "network": "eip155:8453",
          "asset": "USDC",
          "asset_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "amount": "30000",
          "price_usd": "0.03",
          "payTo": "0xeE6239F3E17bEBe5e89F21F29D74D68CAa0d78CE",
          "charge_on": "success",
          "environment": "live"
        }
      ],
      "trial": {
        "type": "sample",
        "sample_url": "https://seenly-payload-check.vercel.app/samples/check-broken-json.json",
        "free_calls_per_wallet": 0,
        "free_allowance": {
          "available": true,
          "per_caller_per_day": 10,
          "global_per_day": 300,
          "window": "UTC day (resets 00:00 UTC)",
          "how": "Add header \"X-Free-Allowance: use\" (or ?free=1) to a valid request. If you have free calls left it runs with no payment; otherwise you get this same x402 402.",
          "caller": "per client network: IPv4 /24 or IPv6 /64 (hashed, never stored raw)",
          "note": "Free calls are not sales and never count toward settlements or trust. Calls through the Agentropolis relay always use x402."
        }
      },
      "behavior": {
        "side_effects": "none",
        "idempotent": true,
        "deterministic": true,
        "p95_latency_s": 2,
        "data_retention": "none (payload processed in memory, never stored or logged)",
        "max_payload_kb": 256,
        "rate_limit": "60/min per client IP"
      },
      "limits": {
        "payload": "up to 256 KB per check (POST); GET up to 6000 chars",
        "types": [
          "json",
          "code",
          "text",
          "html",
          "csv"
        ],
        "parsers": "JS/TS/JSX/TSX full syntax parse; other languages structural checks",
        "bulk": "not yet (one payload per call)"
      },
      "policy": {
        "refund": "Not charged on failure (x402 settles only after a successful response); invalid requests are rejected before payment.",
        "data": "Your payload is processed in memory and never stored, logged or used for training."
      },
      "contact": {
        "email": "hello@agentropolis.io",
        "a2a": "https://seenly-payload-check.vercel.app/.well-known/agent-card.json"
      },
      "discovery": {
        "openapi": "https://seenly-payload-check.vercel.app/openapi.json",
        "llms_txt": "https://seenly-payload-check.vercel.app/llms.txt",
        "x402": "https://seenly-payload-check.vercel.app/.well-known/x402"
      }
    }
  ]
}