grokzilla.shop / try

{ try it }

"skills": 33, // pay-per-call, no account, no API key
"protocol": "x402 v2 · scheme exact",
"network": "eip155:8453", // Base mainnet
"this_page_pays": false // "Send unpaid request" only shows the 402 challenge. Paying stays with your own wallet or agent.
optional · prompt only The Base address your agent pays from. It is only written into the copyable agent prompt so your agent knows which wallet to use. It is never sent to the server and nothing is signed here.

← all 33 skills

"seo-compare": { SEO Compare $0.0503 Runs SEO Optimizer v2 on your page and up to 3 competitor pages and returns a per-check gap table. Not charged if your page blocks us or is unreachable (422, charged:false).
"method": "POST", "content_type": "application/json",
"price_usd": 0.0503, // 50300 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"docs": "/docs/seo-v2",
"you_provide": { // JSON body fields
// no fields: send {}
},
"request_body": // live, from your inputs
{
  "url": "https://www.python.org/",
  "competitor_urls": [
    "https://www.ruby-lang.org/en/"
  ]
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "you": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string"
        },
        "final_url": {
          "type": "string"
        },
        "score": {
          "type": "number"
        },
        "grade": {
          "type": "string"
        },
        "subscores": {
          "type": "object",
          "properties": {
            "technical": {
              "type": "integer"
            },
            "content": {
              "type": "integer"
            },
            "metadata": {
              "type": "integer"
            },
            "structured_data": {
              "type": "integer"
            },
            "aeo": {
              "type": "integer"
            }
          }
        },
        "reason": {
          "type": "null"
        }
      }
    },
    "competitors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "final_url": {
            "type": "string"
          },
          "score": {
            "type": "number"
          },
          "grade": {
            "type": "string"
          },
          "subscores": {
            "type": "object"
          },
          "reason": {
            "type": "null"
          }
        }
      }
    },
    "gaps": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "check_id": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "max": {
            "type": "integer"
          },
          "yours": {
            "type": "number"
          },
          "competitors": {
            "type": "array"
          },
          "gap_points": {
            "type": "number"
          },
          "fix": {
            "type": "string"
          }
        }
      }
    },
    "disclaimer": {
      "type": "string"
    }
  },
  "required": [
    "skill"
  ]
}
"example":
{
  "skill": "seo_compare",
  "you": {
    "url": "https://www.python.org/",
    "final_url": "https://www.python.org/",
    "score": 78.0,
    "grade": "C",
    "subscores": {
      "technical": 80,
      "content": 90,
      "metadata": 62,
      "structured_data": 83,
      "aeo": 73
    },
    "reason": null
  },
  "competitors": [
    {
      "url": "https://www.ruby-lang.org/en/",
      "final_url": "https://www.ruby-lang.org/en/",
      "score": 68.8,
      "grade": "C",
      "subscores": {
        "technical": 100,
        "content": 75,
        "metadata": 72,
        "structured_data": 0,
        "aeo": 73
      },
      "reason": null
    }
  ],
  "gaps": [
    {
      "check_id": "canonical",
      "category": "technical",
      "max": 5,
      "yours": 0.0,
      "competitors": [
        5.0
      ],
      "gap_points": 5.0,
      "fix": "Use exactly one absolute, self-referencing canonical on the same host."
    },
    {
      "check_id": "twitter_card",
      "category": "metadata",
      "max": 2,
      "yours": 0.0,
      "competitors": [
        2.0
      ],
      "gap_points": 2.0,
      "fix": "Add a twitter:card type; X reuses your Open Graph tags for the rest."
    },
    {
      "check_id": "qa_structure",
      "category": "aeo",
      "max": 3,
      "yours": 2.0,
      "competitors": [
        3.0
      ],
      "gap_points": 1.0,
      "fix": "Break content into question headings with short direct answers, or into lists/steps."
    }
  ],
  "disclaimer": "Scores reflect technical checks only; no ranking or citation is guaranteed."
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/seo-compare with the JSON body, no payment header
  2. ← 402 Payment Required + PAYMENT-REQUIRED header: base64 JSON {x402Version: 2, accepts: [{scheme: "exact", network: "eip155:8453", asset: USDC, amount: "50300", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.0503 and signs a USDC transfer authorization to payTo with your wallet
  4. retry the same POST with PAYMENT-SIGNATURE: <base64> (x402 v2) or X-PAYMENT (v1 clients)
  5. ← 200 OK with the result JSON + PAYMENT-RESPONSE header (base64 settlement receipt, tx hash on Base)
],
"copy": { // fills in from your inputs as you type
"agent_prompt"

        
"curl" // unpaid: shows the 402

        
"agentcash" // pays from your AgentCash wallet

        
},
"try": // POSTs unpaid to /api/skills/seo-compare on this host and decodes the 402. Never pays.
}