{
  "$schema": "https://kenoodl.com/schemas/capabilities-v1.json",
  "name": "kenoodl",
  "url": "https://kenoodl.com",
  "version": "2",
  "updated": "2026-07-06",
  "description": "kenoodl Verify is an outside check for coding agents. Submit code and a claim about it; execution returns the verdict: HELD, or BROKE at the exact input. BROKE fires only from a contract you provide. Stateless, pay-per-call, account-free. Agents call it directly.",
  "capabilities": [
    {
      "id": "verify",
      "name": "Verify",
      "function": "An outside check on code. Submit code and a claim about it: provide a contract (fn + call/expected examples) for a BROKE-capable verdict, or state an assumption in plain words for a FINDINGS read. Execution settles it against what the code actually does. Returns HELD, BROKE at the exact input, FINDINGS, or DROP. BROKE fires only from a contract you provide.",
      "endpoints": [
        {
          "method": "POST",
          "path": "/api/verify",
          "auth": "x402",
          "description": "Verify via x402. The unpaid POST returns 402 with the payment requirements; pay 1 USDC on Base per the x402 v2 standard and retry with PAYMENT-SIGNATURE. No account. The verdict returns in the same response; no jobId, no polling."
        },
        {
          "method": "POST",
          "path": "/mcp",
          "auth": "x402",
          "description": "MCP verify tool (JSON-RPC): verify. Synchronous, the verdict returns in the tool result. Paid the same as /api/verify: the tools/call returns 402 on POST /mcp; pay 1 USDC and retry."
        }
      ],
      "price_usd": 0.10,
      "payment": ["x402-usdc-base"],
      "input": {
        "code": "string: the function source under test (64000 char max)",
        "contract": "optional object {fn, examples:[{call, expected}]} for a BROKE-capable verdict",
        "assumption": "optional string: a claim in plain words for a FINDINGS read"
      },
      "output": {
        "verdict": "string: HELD, BROKE, FINDINGS, or DROP",
        "detail": "string: the counterexample for BROKE, or the reason",
        "contract": "object", "proof": "string", "proofRuns": "string", "closer": "string"
      },
      "stateful": false,
      "latency_ms_typical": 20000,
      "code_max_chars": 64000
    }
  ],
  "discovery": {
    "openapi": "https://kenoodl.com/openapi.json",
    "well_known": [
      "https://kenoodl.com/.well-known/ai.json",
      "https://kenoodl.com/.well-known/agent.json",
      "https://kenoodl.com/.well-known/agent-card.json",
      "https://kenoodl.com/.well-known/ai-plugin.json",
      "https://kenoodl.com/.well-known/x402",
      "https://kenoodl.com/.well-known/mcp/server-card.json",
      "https://kenoodl.com/.well-known/api-catalog"
    ],
    "llms_txt": "https://kenoodl.com/llms.txt"
  },
  "architecture": {
    "stateless": true,
    "context_storage": "none",
    "data_residency": "your code is executed and discarded after the verdict returns; nothing persisted, no accounts, no balances, no stored state"
  },
  "contact": "info@kenoodl.com"
}
