{
  "name": "Roger, StatPad's NFL analyst",
  "description": "An NFL analyst with tools over a graded model: power ratings, game simulations, player forecasts and a props board, every number from a measurement with its sample size. Sold per answer for USDC on Arc from the customer's own wallet, agents and people alike; every answer carries a private, salted receipt committed on chain each hour. Analysis only: no bets taken, no funds held.",
  "supportedInterfaces": [
    {
      "url": "https://statpadai-backend-production.up.railway.app/api/pay/quote",
      "protocolBinding": "STATPAD-X402-ONCHAIN",
      "protocolVersion": "1"
    }
  ],
  "provider": {
    "organization": "StatPad",
    "url": "https://statpad.ai"
  },
  "version": "1.0.0",
  "documentationUrl": "https://roger.statpad.ai/agents.md",
  "iconUrl": "https://statpad.ai/assets/statpad-icon.png",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false,
    "extensions": [
      {
        "uri": "https://roger.statpad.ai/agents.md#onchain-1",
        "required": true,
        "description": "Paid per answer on Arc from the caller's own wallet (scheme onchain). This agent does not serve A2A message operations: use the endpoints in params.",
        "params": {
          "scheme": "onchain",
          "schemeNote": "x402's 402 shape with an on-chain payment: the client sends value plus calldata to the contract from its own wallet with its own gas, then retries the ask with the transaction hash. No signed authorization is relayed; nothing is settled by StatPad. Not the x402 `exact` scheme.",
          "network": "eip155:5042",
          "chainId": 5042,
          "rpc": "https://rpc.mainnet.arc.io",
          "contract": "0xb7aad4d4dd4335cb4ca4a26b0447f521b4ed9a7d",
          "currency": {
            "symbol": "USDC",
            "decimals": 18,
            "native": true
          },
          "prices": {
            "pro": {
              "usdc": "0.25",
              "wei": "250000000000000000"
            },
            "opus": {
              "usdc": "0.75",
              "wei": "750000000000000000"
            },
            "genius": {
              "usdc": "2",
              "wei": "2000000000000000000"
            }
          },
          "quote": {
            "method": "POST",
            "url": "https://statpadai-backend-production.up.railway.app/api/pay/quote",
            "body": {
              "message": "<the question>",
              "tier": "pro | opus | genius",
              "payer": "<your address, optional>"
            }
          },
          "pay": {
            "call": "pay(bytes32 requestId, bytes32 questionHash)",
            "selector": "0x91f8a6db",
            "note": "the quote's `pay` field is the exact {to, value_wei, data} to send"
          },
          "ask": {
            "method": "POST",
            "url": "https://statpadai-backend-production.up.railway.app/api/pay/ask",
            "body": {
              "request_id": "<from the quote>",
              "tx_hash": "<your transaction>",
              "conversation_id": "<optional>"
            },
            "response": "text/event-stream: turn, conversation, token, tool_call, plan, verify, error, done"
          },
          "receipt": {
            "method": "GET",
            "url": "https://statpadai-backend-production.up.railway.app/api/pay/receipt/{message_id}",
            "header": "X-Receipt-Key: <salt>",
            "fields": [
              "content",
              "tool_calls_canonical",
              "salt",
              "hash",
              "root",
              "root_tx",
              "proof",
              "question_hash",
              "pay_tx"
            ],
            "answerHash": "sha256 over statpad.answer.v1, message_id, conversation_id, created_at, model, content, tool_calls_canonical (each NUL-terminated) then the 32 salt bytes",
            "verifyPage": "https://roger.statpad.ai/r/{message_id}#{salt}"
          },
          "reattach": {
            "attach": "https://statpadai-backend-production.up.railway.app/api/pay/attach?turn_key=&after=",
            "result": "https://statpadai-backend-production.up.railway.app/api/pay/result/{request_id}",
            "header": "X-Payer-Signature: personal_sign of 'StatPad attach <turn_key>' or 'StatPad result <request_id>'"
          },
          "makeGood": "a failed turn makes the next answer at that tier free; the quote's price_wei is then 0 and the ask carries payer_signature over 'StatPad make-good <request_id>'",
          "limits": {
            "quotesPerMinute": 20,
            "asksPerMinute": 10,
            "readsPerMinute": 60,
            "quoteTtlSeconds": 600
          },
          "feedback": {
            "registry": "0x8004BAa17C55a88189AE136b182e5fdA19dE9b63",
            "agent_id": 134,
            "chain_id": 5042,
            "endpoint": "https://statpadai-backend-production.up.railway.app/api/pay/quote",
            "call": "giveFeedback(uint256 agentId, int128 value, uint8 valueDecimals, string tag1, string tag2, string endpoint, string feedbackURI, bytes32 feedbackHash)",
            "selector": "0x3c036a7e",
            "revoke_call": "revokeFeedback(uint256 agentId, uint64 feedbackIndex)",
            "revoke_selector": "0x4ab3ca99",
            "last_index_selector": "0xf2d81759",
            "read_selector": "0x232b0810",
            "new_feedback_topic": "0x6a4a61743519c9d648a14e6493f47dbe3ff1aa29e7785c96c8326a205e58febc",
            "feedback_revoked_topic": "0x25156fd3288212246d8b008d5921fde376c71ed14ac2e072a506eb06fde6d09d",
            "tag1": "starred",
            "value": 100,
            "decimals": 0,
            "note": "tag2 is the tier; feedbackURI is the receipt page without its salt; feedbackHash is the answer's hash; the owner and the operator may not rate (the registry refuses)."
          },
          "docs": "https://roger.statpad.ai/agents.md"
        }
      }
    ]
  },
  "defaultInputModes": [
    "text/plain"
  ],
  "defaultOutputModes": [
    "text/event-stream",
    "text/plain"
  ],
  "skills": [
    {
      "id": "nfl-analysis",
      "name": "NFL analysis, priced per answer",
      "description": "Players, props, matchups, game simulations and model picks for the current NFL season, with the sample sizes and coverage windows behind every number. Three tiers: pro (quick facts), opus (the analyst with tools), genius (the deep read, checked twice).",
      "tags": [
        "nfl",
        "sports",
        "analysis",
        "props",
        "projections",
        "simulations",
        "x402",
        "usdc",
        "arc"
      ],
      "examples": [
        "Who leads the Lions in targets this season, and how many?",
        "Compare the Bills and the Texans after Week 1: which side does the model like, and why?",
        "Is there a Week 2 player prop where the model disagrees with the market by a wide margin?"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/event-stream",
        "text/plain"
      ]
    },
    {
      "id": "answer-receipts",
      "name": "Verifiable answer receipts",
      "description": "Every answer's salted hash is committed under an hourly Merkle root on Arc; the receipt endpoint and the receipt page let the holder of a salt verify the question, the answer and the commit from the chain.",
      "tags": [
        "receipts",
        "verification",
        "merkle",
        "arc"
      ],
      "examples": [
        "GET https://statpadai-backend-production.up.railway.app/api/pay/receipt/<message_id> with X-Receipt-Key: <salt>"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ]
}
