grokzilla.shop / try

{ try it }

"skills": 21, // 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.
"osint-graph": { Public OSINT Graph $0.01 Resolves one public name on Wikidata and returns a relationship graph from a fixed property list (instance of, country, headquarters, founder, chief executive, ownership, employer, education, membership, and similar), up to two hops. People include only notable public roles. If nothing matches, the graph is empty and reason explains why.
"method": "POST", "content_type": "application/json",
"price_usd": 0.01, // 10000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"you_provide": { // JSON body fields
required string The person, company or domain to start the public-data graph from. Required · string Example: "OpenAI"
optional integer How many hops out from the seed entity to map. Higher = wider graph. Optional · integer max 4 · default 2 Example: 2
},
"request_body": // live, from your inputs
{
  "seed_entity": "OpenAI",
  "max_depth": 2
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "seed_entity": {
      "type": "string"
    },
    "max_depth": {
      "type": "integer"
    },
    "limit": {
      "type": "integer"
    },
    "disclaimer": {
      "type": "string"
    },
    "resolved": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "alternatives": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        }
      }
    },
    "graph": {
      "type": "object",
      "properties": {
        "nodes": {
          "type": "array",
          "items": {
            "type": "object"
          }
        },
        "edges": {
          "type": "array",
          "items": {
            "type": "object"
          }
        },
        "max_depth": {
          "type": "integer"
        }
      }
    },
    "degrees_sample": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "depth": {
            "type": "integer"
          },
          "path": {
            "type": "array"
          }
        }
      }
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "skill"
  ]
}
"example":
{
  "skill": "osint_graph",
  "seed_entity": "OpenAI",
  "max_depth": 2,
  "limit": 25,
  "disclaimer": "Public data only. Not a substitute for licensed people search. Comply with privacy laws and platform ToS.",
  "resolved": {
    "id": "Q21708200",
    "name": "OpenAI",
    "description": "American artificial intelligence research organization",
    "url": "https://www.wikidata.org/wiki/Q21708200"
  },
  "alternatives": [
    {
      "id": "Q21708200",
      "name": "OpenAI",
      "description": "American artificial intelligence research organization",
      "url": "https://www.wikidata.org/wiki/Q21708200"
    }
  ],
  "graph": {
    "nodes": [
      {
        "id": "Q21708200",
        "name": "OpenAI",
        "type": "enterprise",
        "url": "https://www.wikidata.org/wiki/Q21708200"
      },
      {
        "id": "Q111759432",
        "name": "Reddit Inc.",
        "type": "dot-com company",
        "url": "https://www.wikidata.org/wiki/Q111759432"
      },
      {
        "id": "Q62",
        "name": "San Francisco",
        "type": "city in the United States",
        "url": "https://www.wikidata.org/wiki/Q62"
      },
      {
        "id": "Q7407093",
        "name": "Sam Altman",
        "type": "human",
        "url": "https://www.wikidata.org/wiki/Q7407093"
      }
    ],
    "edges": [
      {
        "from": "Q21708200",
        "to": "Q7407093",
        "relation": "founder",
        "pid": "P112"
      },
      {
        "from": "Q21708200",
        "to": "Q62",
        "relation": "headquarters location",
        "pid": "P159"
      },
      {
        "from": "Q7407093",
        "to": "Q111759432",
        "relation": "employer",
        "pid": "P108"
      }
    ],
    "max_depth": 2
  },
  "degrees_sample": [
    {
      "depth": 1,
      "path": [
        "OpenAI",
        "San Francisco"
      ]
    },
    {
      "depth": 1,
      "path": [
        "OpenAI",
        "Sam Altman"
      ]
    },
    {
      "depth": 2,
      "path": [
        "OpenAI",
        "Sam Altman",
        "Reddit Inc."
      ]
    }
  ],
  "sources": [
    "https://www.wikidata.org/w/api.php",
    "https://query.wikidata.org/sparql"
  ]
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/osint-graph 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: "10000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.01 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/osint-graph on this host and decodes the 402. Never pays.
}
"research": { Deep Research $0.015 Searches Wikipedia (opensearch + full-text), Hacker News, and DuckDuckGo when reachable, fetches the top public pages, and returns a cited answer from those pages. Uses extractive sentences, or an OpenRouter model when OPENROUTER_API_KEY is set. Returns no sources and a reason if nothing could be fetched. Creative or generative requests (poems, stories, essays) get a 400 before payment.
"method": "POST", "content_type": "application/json",
"price_usd": 0.015, // 15000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"docs": "/docs/research",
"you_provide": { // JSON body fields
required string The question you want researched. Plain language; one question per call. Required · string Example: "What is x402?"
},
"request_body": // live, from your inputs
{
  "query": "What is x402?"
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "query": {
      "type": "string"
    },
    "answer": {
      "type": "string"
    },
    "key_points": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "n": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "snippet": {
            "type": "string"
          }
        }
      }
    },
    "method": {
      "type": "string"
    },
    "fetched_at": {
      "type": "string"
    }
  },
  "required": [
    "skill"
  ]
}
"example":
{
  "skill": "research",
  "query": "What is x402?",
  "answer": "x402 is built-in to existing HTTP requests, with no additional communication required. [1]\nx402 enables agents to monetize their own services, pay other agents, or handle micropayments automatically on behalf of users. [2]",
  "key_points": [
    "x402 is built-in to existing HTTP requests, with no additional communication required. [1]",
    "x402 enables agents to monetize their own services, pay other agents, or handle micropayments automatically on behalf of users. [2]"
  ],
  "sources": [
    {
      "n": 1,
      "title": "x402",
      "url": "https://x402.org/",
      "snippet": "An open protocol for internet-native payments."
    },
    {
      "n": 2,
      "title": "Google Agentic Payments Protocol + x402",
      "url": "https://www.coinbase.com/developer-platform/discover/launches/google_x402",
      "snippet": "Agents can pay each other with stablecoins over the x402 open protocol."
    }
  ],
  "method": "extractive",
  "fetched_at": "2026-10-05T06:00:00Z"
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/research 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: "15000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.015 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/research on this host and decodes the 402. Never pays.
}
"seo": { SEO Optimizer $0.012 Fetches a URL and returns an on-page SEO score from real checks (title, meta, headings, alt text, keywords, and more). If the page cannot be fetched, score is null and reason says why.
"method": "POST", "content_type": "application/json",
"price_usd": 0.012, // 12000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"docs": "/docs/seo",
"you_provide": { // JSON body fields
required string Full URL of the page to analyse, including https://. Required · string Example: "https://example.com"
optional array of string Target keywords as a JSON array of strings, e.g. ["x402","micropayments"]. Optional · array of string
},
"request_body": // live, from your inputs
{
  "url": "https://example.com"
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "final_url": {
      "type": "string"
    },
    "score": {
      "type": "integer"
    },
    "recommendations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "keywords": {
      "type": "array"
    },
    "stats": {
      "type": "object",
      "properties": {
        "status_code": {
          "type": "integer"
        },
        "word_count": {
          "type": "integer"
        }
      }
    }
  },
  "required": [
    "skill"
  ]
}
"example":
{
  "skill": "seo",
  "url": "https://example.com",
  "final_url": "https://example.com/",
  "score": 28,
  "recommendations": [
    "Add exactly one H1 heading.",
    "Lengthen the title to 30-60 characters (currently 14).",
    "Add a meta description of 70 to 160 characters."
  ],
  "keywords": [],
  "stats": {
    "status_code": 200,
    "word_count": 25
  }
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/seo 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: "12000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.012 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 on this host and decodes the 402. Never pays.
}
"ai-detector": { AI Content Detector $0.01 Estimate whether text (or a web page's text) is AI-written using a trained classifier: about 78% accurate on a held-out benchmark (not a guarantee). Uncertain results suggest a rerun on a longer section (300+ words); tell phrases are only a secondary 'possible AI influence' signal.
"method": "POST", "content_type": "application/json",
"price_usd": 0.01, // 10000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"you_provide": { // JSON body fields
optional string URL of the page to check. Send either url or text (at least one). Optional · string
optional string The text to check for likely AI generation. Send either text or url. Optional · string Example: "So I finally fixed the porch light on Saturday. It's worth noting that I'd tried twice before and gave up (the wiring is ancient). Honestly the whole thing was
},
"request_body": // live, from your inputs
{
  "text": "So I finally fixed the porch light on Saturday. It's worth noting that I'd tried twice before and gave up (the wiring is ancient). Honestly the whole thing was a testament to stubbornness. My brother Sam held the ladder and complained the entire time, which didn't help one bit. In conclusion, the bulb works, the switch clicks, and I only shocked myself once! Next up is the doorbell, if I can find the manual. I can't, probably. It's in a box somewhere in the garage behind 3 bikes and a broken lawnmower."
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "verdict": {
      "type": "string"
    },
    "classifier": {
      "type": "object",
      "properties": {
        "verdict": {
          "type": "string"
        },
        "probability_ai": {
          "type": "number"
        },
        "threshold_ai": {
          "type": "number"
        },
        "threshold_human": {
          "type": "number"
        },
        "model_version": {
          "type": "string"
        },
        "model_kind": {
          "type": "string"
        }
      }
    },
    "content_type": {
      "type": "string"
    },
    "possible_ai_influence": {
      "type": "boolean"
    },
    "rubric_score": {
      "type": "number"
    },
    "sections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "section": {
            "type": "string"
          },
          "section_weight": {
            "type": "number"
          },
          "result": {
            "type": "string"
          },
          "evidence": {
            "type": "array"
          }
        }
      }
    },
    "tell_phrases": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "phrase": {
            "type": "string"
          },
          "tell_weight": {
            "type": "number"
          },
          "count": {
            "type": "integer"
          }
        }
      }
    },
    "ai_likelihood": {
      "type": "number"
    },
    "band": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "signals": {
      "type": "object",
      "properties": {
        "sentence_length_mean": {
          "type": "number"
        },
        "sentence_length_variance": {
          "type": "number"
        },
        "burstiness": {
          "type": "number"
        },
        "type_token_ratio": {
          "type": "number"
        },
        "hapax_ratio": {
          "type": "number"
        },
        "punctuation_diversity": {
          "type": "integer"
        },
        "repeated_ngram_rate": {
          "type": "number"
        },
        "stock_phrase_per_100": {
          "type": "number"
        },
        "stock_phrase_hits": {
          "type": "integer"
        },
        "stock_phrases_found": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "contraction_rate": {
          "type": "number"
        },
        "average_word_length": {
          "type": "number"
        },
        "line_length_uniformity": {
          "type": "null"
        },
        "line_count": {
          "type": "integer"
        },
        "verse_like": {
          "type": "boolean"
        },
        "sentence_count": {
          "type": "integer"
        },
        "lexical_features_used": {
          "type": "boolean"
        }
      }
    },
    "method": {
      "type": "string"
    },
    "word_count": {
      "type": "integer"
    },
    "caveats": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "skill"
  ]
}
"example":
{
  "skill": "ai_detector",
  "verdict": "possible_ai_influence",
  "classifier": {
    "verdict": "uncertain",
    "probability_ai": 0.362,
    "threshold_ai": 0.585,
    "threshold_human": 0.3233,
    "model_version": "2026-10-13",
    "model_kind": "logistic_regression"
  },
  "content_type": "opinion",
  "possible_ai_influence": true,
  "rubric_score": 0.4,
  "sections": [
    {
      "section": "rhythm",
      "section_weight": 0.1,
      "result": "no_signal",
      "evidence": [
        "8 sentences, sentence-length CV 0.35 (AI <= 0.34, human >= 0.55)",
        "rhythm is in the overlap range where human and prompted-AI text both sit"
      ]
    },
    {
      "section": "vocabulary",
      "section_weight": 0.4,
      "result": "ai_sign",
      "evidence": [
        "tell-phrase weight 2.4 (2.64 per 100 words, 138-entry list)",
        "tells: it's worth noting, a testament to, in conclusion",
        "lexical diversity MTLD 105 (informational, not scored)",
        "surprisal mean 3.21, variance 2.15, spike 0.40; rare-word share 0.033; MATTR 0.834; Zipf slope deviation 0.63",
        "tell phrases are dense; possible AI influence (secondary signal)"
      ]
    },
    {
      "section": "voice_structure",
      "section_weight": 0.3,
      "result": "no_signal",
      "evidence": [
        "ai cues: hedging (2 hedges)",
        "human cues: none",
        "first person, names, dialogue and sensory detail are not counted either way"
      ]
    },
    {
      "section": "resolution",
      "section_weight": 0.2,
      "result": "no_signal",
      "evidence": [
        "rhythm vs vocabulary: no_overlap (no_signal / ai_sign)",
        "vocabulary vs voice_structure: no_overlap (ai_sign / no_signal)",
        "voice_structure vs rhythm: no_overlap (no_signal / no_signal)",
        "tell phrases present but not confirmed by two sections; secondary signal only"
      ]
    }
  ],
  "tell_phrases": [
    {
      "phrase": "it's worth noting",
      "tell_weight": 0.9,
      "count": 1
    },
    {
      "phrase": "a testament to",
      "tell_weight": 0.9,
      "count": 1
    },
    {
      "phrase": "in conclusion",
      "tell_weight": 0.6,
      "count": 1
    }
  ],
  "ai_likelihood": 0.7822,
  "band": [
    0.5334,
    1.0
  ],
  "signals": {
    "sentence_length_mean": 11.375,
    "sentence_length_variance": 16.2344,
    "burstiness": 0.3542,
    "type_token_ratio": 0.7582,
    "hapax_ratio": 0.8841,
    "punctuation_diversity": 4,
    "repeated_ngram_rate": 0.0,
    "stock_phrase_per_100": 3.2967,
    "stock_phrase_hits": 3,
    "stock_phrases_found": [
      "it's worth noting",
      "a testament to",
      "in conclusion"
    ],
    "contraction_rate": 3.2967,
    "average_word_length": 4.3846,
    "line_length_uniformity": null,
    "line_count": 1,
    "verse_like": false,
    "sentence_count": 8,
    "lexical_features_used": true
  },
  "method": "stylometry",
  "word_count": 91,
  "caveats": [
    "Detection is probabilistic and should not be used as the only evidence that a text was or was not written by a person.",
    "ai_likelihood is a stylometric score from 0 to 1, not a calibrated probability. The band widens when there is less text and is not a statistical confidence interval.",
    "A low score means these surface patterns are weak. It does not prove a person wrote the text.",
    "Weights were chosen on a small set of public-domain prose, poems, and synthetic assistant-style paragraphs. Fixture accuracy is not a field accuracy."
  ]
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/ai-detector 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: "10000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.01 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/ai-detector on this host and decodes the 402. Never pays.
}
"json-flatten": { JSON Flattener $0.006 Deterministic nested JSON to flat path-value map. Arrays, custom separators, depth limits.
"method": "POST", "content_type": "application/json",
"price_usd": 0.006, // 6000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"you_provide": { // JSON body fields
required any JSON Any JSON value. Nested objects become dot-path keys: {"a":{"b":1}} -> {"a.b":1}. Required · any JSON Example: {"a": {"b": 1}}
optional object Optional JSON object of flatten options, e.g. {"sep":"/"}. Optional · object
},
"request_body": // live, from your inputs
{
  "data": {
    "a": {
      "b": 1
    }
  }
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "flat": {
      "type": "object",
      "properties": {
        "a.b": {
          "type": "integer"
        }
      }
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "json_flatten",
  "ok": true,
  "flat": {
    "a.b": 1
  }
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/json-flatten 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: "6000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.006 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/json-flatten on this host and decodes the 402. Never pays.
}
"json-sort": { JSON Key Sorter $0.003 Recursively sort object keys and return canonical compact JSON. Deterministic, no network.
"method": "POST", "content_type": "application/json",
"price_usd": 0.003, // 3000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"docs": "/docs/json-sort",
"you_provide": { // JSON body fields
required any JSON Any JSON value. Object keys are sorted recursively; you also get canonical compact JSON. Required · any JSON Example: {"b": 1, "a": {"d": 2, "c": 3}}
optional boolean true sorts keys Z->A, false (default) sorts A->Z. Optional · boolean default false Example: false
},
"request_body": // live, from your inputs
{
  "data": {
    "b": 1,
    "a": {
      "d": 2,
      "c": 3
    }
  },
  "reverse": false
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "sorted": {
      "type": "object",
      "properties": {
        "a": {
          "type": "object",
          "properties": {
            "c": {
              "type": "integer"
            },
            "d": {
              "type": "integer"
            }
          }
        },
        "b": {
          "type": "integer"
        }
      }
    },
    "canonical": {
      "type": "string"
    },
    "bytes": {
      "type": "integer"
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "json_sort",
  "ok": true,
  "sorted": {
    "a": {
      "c": 3,
      "d": 2
    },
    "b": 1
  },
  "canonical": "{\"a\":{\"c\":3,\"d\":2},\"b\":1}",
  "bytes": 25
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/json-sort 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: "3000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.003 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/json-sort on this host and decodes the 402. Never pays.
}
"text-diff": { Text Diff $0.006 Lightweight deterministic line/word/char diff. Structured ops or unified output.
"method": "POST", "content_type": "application/json",
"price_usd": 0.006, // 6000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"docs": "/docs/text-diff",
"you_provide": { // JSON body fields
required string The original / old text. Required · string Example: "hello"
required string The new / changed text to compare against a. Required · string Example: "hallo"
},
"request_body": // live, from your inputs
{
  "a": "hello",
  "b": "hallo"
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "mode": {
      "type": "string"
    },
    "ops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "op": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      }
    },
    "inserted": {
      "type": "integer"
    },
    "deleted": {
      "type": "integer"
    },
    "equal": {
      "type": "integer"
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "text_diff",
  "ok": true,
  "mode": "lines",
  "ops": [
    {
      "op": "del",
      "value": "hello"
    },
    {
      "op": "ins",
      "value": "hallo"
    }
  ],
  "inserted": 1,
  "deleted": 1,
  "equal": 0
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/text-diff 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: "6000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.006 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/text-diff on this host and decodes the 402. Never pays.
}
"url-normalize": { URL Normalizer $0.005 Canonicalize URLs: strip tracking params, force HTTPS, sort query, extract components.
"method": "POST", "content_type": "application/json",
"price_usd": 0.005, // 5000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"you_provide": { // JSON body fields
required string Any URL. Tracking params (utm_*), default ports and case are normalised. Required · string Example: "http://example.com/?utm_source=x"
},
"request_body": // live, from your inputs
{
  "url": "http://example.com/?utm_source=x"
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "canonical": {
      "type": "string"
    },
    "scheme": {
      "type": "string"
    },
    "host": {
      "type": "string"
    },
    "path": {
      "type": "string"
    },
    "query": {
      "type": "object"
    },
    "stripped_tracking": {
      "type": "boolean"
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "url_normalize",
  "ok": true,
  "canonical": "https://example.com/",
  "scheme": "https",
  "host": "example.com",
  "path": "/",
  "query": {},
  "stripped_tracking": true
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/url-normalize 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: "5000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.005 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/url-normalize on this host and decodes the 402. Never pays.
}
"html-clean": { HTML Cleaner $0.008 Strip scripts/styles and return readable text or markdown from HTML.
"method": "POST", "content_type": "application/json",
"price_usd": 0.008, // 8000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"docs": "/docs/html-clean",
"you_provide": { // JSON body fields
required string Raw HTML to strip down. Scripts, styles and tags are removed. Required · string Example: "<p>hi</p>"
optional string "text" (default) for plain text, "markdown" to keep basic structure. Optional · string one of "text", "markdown" Example: "text"
},
"request_body": // live, from your inputs
{
  "html": "<p>hi</p>",
  "mode": "text"
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "mode": {
      "type": "string"
    },
    "chars": {
      "type": "integer"
    },
    "output": {
      "type": "string"
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "html_clean",
  "ok": true,
  "mode": "text",
  "chars": 2,
  "output": "hi"
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/html-clean 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: "8000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.008 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/html-clean on this host and decodes the 402. Never pays.
}
"json-schema-validate": { JSON Schema Validator $0.006 Cheap schema gate: type, required, properties, array items.
"method": "POST", "content_type": "application/json",
"price_usd": 0.006, // 6000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"you_provide": { // JSON body fields
required any JSON The JSON value you want to validate. Required · any JSON Example: {"n": 1}
required object A JSON Schema object, e.g. {"type":"object","required":["n"]}. Required · object Example: {"type": "object", "required": ["n"]}
},
"request_body": // live, from your inputs
{
  "instance": {
    "n": 1
  },
  "schema": {
    "type": "object",
    "required": [
      "n"
    ]
  }
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "valid": {
      "type": "boolean"
    },
    "errors": {
      "type": "array"
    },
    "checked": {
      "type": "boolean"
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "json_schema_validate",
  "ok": true,
  "valid": true,
  "errors": [],
  "checked": true
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/json-schema-validate 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: "6000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.006 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/json-schema-validate on this host and decodes the 402. Never pays.
}
"keyword-extract": { Keyword Extractor $0.008 Deterministic term ranking from free text. Stopword-filtered.
"method": "POST", "content_type": "application/json",
"price_usd": 0.008, // 8000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"you_provide": { // JSON body fields
required string The text to pull keywords from. Required · string Example: "x402 micropay on Base USDC"
optional integer Maximum number of keywords to return. Optional · integer Example: 5
},
"request_body": // live, from your inputs
{
  "text": "x402 micropay on Base USDC",
  "limit": 5
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "keywords": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "term": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          }
        }
      }
    },
    "unique_terms": {
      "type": "integer"
    },
    "tokens": {
      "type": "integer"
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "keyword_extract",
  "ok": true,
  "keywords": [
    {
      "term": "x402",
      "count": 1
    },
    {
      "term": "micropay",
      "count": 1
    },
    {
      "term": "base",
      "count": 1
    },
    {
      "term": "usdc",
      "count": 1
    }
  ],
  "unique_terms": 4,
  "tokens": 4
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/keyword-extract 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: "8000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.008 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/keyword-extract on this host and decodes the 402. Never pays.
}
"uuid-mint": { UUID Minter $0.003 Mint 1-32 UUID v4 (or v1) identifiers for agent job IDs and idempotency keys.
"method": "POST", "content_type": "application/json",
"price_usd": 0.003, // 3000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"docs": "/docs/uuid-mint",
"you_provide": { // JSON body fields
optional integer How many UUIDs to mint in one call. Optional · integer min 1 · max 32 · default 1 Example: 2
optional integer 4 (random, default) or 1 (time-based). Optional · integer one of 1, 4 · default 4 Example: 4
},
"request_body": // live, from your inputs
{
  "count": 2,
  "version": 4
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "version": {
      "type": "integer"
    },
    "count": {
      "type": "integer"
    },
    "ids": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "uuid_mint",
  "ok": true,
  "version": 4,
  "count": 2,
  "ids": [
    "00000000-0000-4000-8000-000000000001",
    "00000000-0000-4000-8000-000000000002"
  ]
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/uuid-mint 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: "3000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.003 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/uuid-mint on this host and decodes the 402. Never pays.
}
"slugify": { Slugify $0.003 Turn free text into a URL-safe lowercase slug. Deterministic, no network.
"method": "POST", "content_type": "application/json",
"price_usd": 0.003, // 3000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"docs": "/docs/slugify",
"you_provide": { // JSON body fields
required string Free text to turn into a URL-safe lowercase slug. Required · string max length 4000 Example: "Hello, Grokzilla Shop!"
optional integer Maximum slug length in characters. Optional · integer min 1 · max 200 · default 80 Example: 80
},
"request_body": // live, from your inputs
{
  "text": "Hello, Grokzilla Shop!",
  "max_len": 80
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "slug": {
      "type": "string"
    },
    "chars": {
      "type": "integer"
    },
    "empty": {
      "type": "boolean"
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "slugify",
  "ok": true,
  "slug": "hello-grokzilla-shop",
  "chars": 20,
  "empty": false
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/slugify 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: "3000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.003 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/slugify on this host and decodes the 402. Never pays.
}
"pii-redact": { PII Redactor $0.003 Redact emails, phone numbers, SSN-shaped strings, Luhn-valid card numbers and IPv4 addresses with typed placeholders. Deterministic, no network.
"method": "POST", "content_type": "application/json",
"price_usd": 0.003, // 3000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"docs": "/docs/pii-redact",
"you_provide": { // JSON body fields
required string Text to scrub. Emails, phones, SSN-shaped strings, card numbers and IPv4s become [TYPE] placeholders. Required · string max length 400000 Example: "Mail [email protected] or call 555-123-4567."
},
"request_body": // live, from your inputs
{
  "text": "Mail [email protected] or call 555-123-4567."
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "redacted": {
      "type": "string"
    },
    "counts_by_type": {
      "type": "object",
      "properties": {
        "email": {
          "type": "integer"
        },
        "ipv4": {
          "type": "integer"
        },
        "card": {
          "type": "integer"
        },
        "ssn": {
          "type": "integer"
        },
        "phone": {
          "type": "integer"
        }
      }
    },
    "total": {
      "type": "integer"
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "pii_redact",
  "ok": true,
  "redacted": "Mail [EMAIL] or call [PHONE].",
  "counts_by_type": {
    "email": 1,
    "ipv4": 0,
    "card": 0,
    "ssn": 0,
    "phone": 1
  },
  "total": 2
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/pii-redact 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: "3000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.003 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/pii-redact on this host and decodes the 402. Never pays.
}
"csv-normalize": { CSV Normalizer $0.003 Parse CSV into JSON rows keyed by trimmed snake_case headers. Deterministic, no network.
"method": "POST", "content_type": "application/json",
"price_usd": 0.003, // 3000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"you_provide": { // JSON body fields
required string CSV text with a header row. Headers become trimmed snake_case keys. Required · string min length 1 · max length 400000 Example: "First Name,E-mail\nAda,[email protected]\n"
optional string Field separator: "," (default), ";", tab or "|". Optional · string one of ",", ";", "\t", "|" · default "," Example: ","
},
"request_body": // live, from your inputs
{
  "csv": "First Name,E-mail\nAda,[email protected]\n",
  "delimiter": ","
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "headers": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string"
          },
          "e_mail": {
            "type": "string"
          }
        }
      }
    },
    "row_count": {
      "type": "integer"
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "csv_normalize",
  "ok": true,
  "headers": [
    "first_name",
    "e_mail"
  ],
  "rows": [
    {
      "first_name": "Ada",
      "e_mail": "[email protected]"
    }
  ],
  "row_count": 1
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/csv-normalize 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: "3000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.003 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/csv-normalize on this host and decodes the 402. Never pays.
}
"base64": { Base64 Encode/Decode $0.003 Base64-encode UTF-8 text or decode base64 back to text, standard or URL-safe alphabet. Deterministic, no network.
"method": "POST", "content_type": "application/json",
"price_usd": 0.003, // 3000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"docs": "/docs/base64",
"you_provide": { // JSON body fields
required string "encode" turns text into base64, "decode" turns base64 back into text. Required · string one of "encode", "decode" Example: "encode"
required string The UTF-8 text to encode, or the base64 string to decode. Required · string max length 400000 Example: "hello agent"
optional boolean true uses the URL-safe alphabet (- and _ instead of + and /). Optional · boolean default false Example: false
},
"request_body": // live, from your inputs
{
  "mode": "encode",
  "text": "hello agent",
  "url_safe": false
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "mode": {
      "type": "string"
    },
    "url_safe": {
      "type": "boolean"
    },
    "output": {
      "type": "string"
    },
    "bytes": {
      "type": "integer"
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "base64",
  "ok": true,
  "mode": "encode",
  "url_safe": false,
  "output": "aGVsbG8gYWdlbnQ=",
  "bytes": 11
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/base64 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: "3000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.003 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/base64 on this host and decodes the 402. Never pays.
}
"epoch-convert": { Epoch Converter $0.003 Convert epoch seconds or milliseconds (detected by magnitude) or an ISO-8601 string into epoch_s, epoch_ms, UTC ISO and ISO in any IANA time zone. Deterministic, no network.
"method": "POST", "content_type": "application/json",
"price_usd": 0.003, // 3000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"you_provide": { // JSON body fields
required ['integer', 'number', 'string'] Epoch seconds or milliseconds (told apart by size), or an ISO-8601 date/time string. Required · ['integer', 'number', 'string'] max length 64 Example: 1700000000
optional string IANA time zone for iso_tz, e.g. America/Chicago. Default UTC. Optional · string min length 1 · max length 64 · default "UTC" Example: "America/Chicago"
},
"request_body": // live, from your inputs
{
  "value": 1700000000,
  "tz": "America/Chicago"
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "input_kind": {
      "type": "string"
    },
    "epoch_s": {
      "type": "integer"
    },
    "epoch_ms": {
      "type": "integer"
    },
    "iso_utc": {
      "type": "string"
    },
    "iso_tz": {
      "type": "string"
    },
    "tz": {
      "type": "string"
    },
    "utc_offset": {
      "type": "string"
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "epoch_convert",
  "ok": true,
  "input_kind": "epoch_s",
  "epoch_s": 1700000000,
  "epoch_ms": 1700000000000,
  "iso_utc": "2023-11-14T22:13:20Z",
  "iso_tz": "2023-11-14T16:13:20-06:00",
  "tz": "America/Chicago",
  "utc_offset": "-06:00"
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/epoch-convert 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: "3000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.003 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/epoch-convert on this host and decodes the 402. Never pays.
}
"url-to-markdown": { URL to Markdown $0.003 Fetch one public web page and return its title and clean Markdown (headings, links, lists, code, tables). Honors robots.txt, SSRF-guarded, HTML only, 1 MB / 5 s caps. No JavaScript rendering.
"method": "POST", "content_type": "application/json",
"price_usd": 0.003, // 3000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"you_provide": { // JSON body fields
required string A public http(s) page. robots.txt is honored; HTML only; JavaScript is not run. Required · string min length 8 · max length 2000 Example: "https://example.com"
},
"request_body": // live, from your inputs
{
  "url": "https://example.com"
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "url": {
      "type": "string"
    },
    "final_url": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "markdown": {
      "type": "string"
    },
    "bytes": {
      "type": "integer"
    },
    "truncated": {
      "type": "boolean"
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "url_to_markdown",
  "ok": true,
  "url": "https://example.com",
  "final_url": "https://example.com/",
  "title": "Example Domain",
  "markdown": "This domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.",
  "bytes": 577,
  "truncated": false
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/url-to-markdown 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: "3000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.003 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/url-to-markdown on this host and decodes the 402. Never pays.
}
"token-risk": { Token Risk (Base) $0.005 Heuristic risk checks for a Base ERC-20: contract code, metadata, proxy, owner/renounced, mint/blacklist/pause/fee selectors, deepest Uniswap/Aerodrome pool, and simulated sell/buy transfers with measured tax. Read-only public RPC. Not financial advice.
"method": "POST", "content_type": "application/json",
"price_usd": 0.005, // 5000 atomic USDC (6 decimals)
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"docs": "/docs/token-risk",
"you_provide": { // JSON body fields
required string ERC-20 contract address on Base mainnet (0x + 40 hex). Required · string Example: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
optional string Only "base" (Base mainnet) for now. Optional · string one of "base" · default "base" Example: "base"
},
"request_body": // live, from your inputs
{
  "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "chain": "base"
}
"you_get": { // HTTP 200 application/json after payment
"output_schema":
{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string"
    },
    "ok": {
      "type": "boolean"
    },
    "token": {
      "type": "string"
    },
    "chain": {
      "type": "string"
    },
    "chain_id": {
      "type": "integer"
    },
    "block": {
      "type": "integer"
    },
    "symbol": {
      "type": "string"
    },
    "risk_level": {
      "type": "string"
    },
    "reasons": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "checks": {
      "type": "object",
      "properties": {
        "contract_code": {
          "type": "object",
          "properties": {
            "result": {
              "type": "string"
            },
            "evidence": {
              "type": "object"
            }
          }
        },
        "erc20_metadata": {
          "type": "object",
          "properties": {
            "result": {
              "type": "string"
            },
            "evidence": {
              "type": "object"
            }
          }
        },
        "proxy": {
          "type": "object",
          "properties": {
            "result": {
              "type": "string"
            },
            "evidence": {
              "type": "object"
            }
          }
        },
        "ownership": {
          "type": "object",
          "properties": {
            "result": {
              "type": "string"
            },
            "evidence": {
              "type": "object"
            }
          }
        },
        "privileged_functions": {
          "type": "object",
          "properties": {
            "result": {
              "type": "string"
            },
            "evidence": {
              "type": "object"
            }
          }
        },
        "liquidity_pool": {
          "type": "object",
          "properties": {
            "result": {
              "type": "string"
            },
            "evidence": {
              "type": "object"
            }
          }
        },
        "sell_simulation": {
          "type": "object",
          "properties": {
            "result": {
              "type": "string"
            },
            "evidence": {
              "type": "object"
            }
          }
        },
        "buy_simulation": {
          "type": "object",
          "properties": {
            "result": {
              "type": "string"
            },
            "evidence": {
              "type": "object"
            }
          }
        },
        "transfer_tax": {
          "type": "object",
          "properties": {
            "result": {
              "type": "string"
            },
            "evidence": {
              "type": "object"
            }
          }
        }
      }
    },
    "rpc": {
      "type": "string"
    },
    "disclaimer": {
      "type": "string"
    }
  },
  "required": [
    "ok",
    "skill"
  ]
}
"example":
{
  "skill": "token_risk",
  "ok": true,
  "token": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
  "chain": "base",
  "chain_id": 8453,
  "block": 52494540,
  "symbol": "USDC",
  "risk_level": "medium",
  "reasons": [
    "proxy: warn",
    "ownership: warn",
    "privileged_functions: warn"
  ],
  "checks": {
    "contract_code": {
      "result": "pass",
      "evidence": {
        "bytecode_bytes": 1852,
        "block": 52494540
      }
    },
    "erc20_metadata": {
      "result": "pass",
      "evidence": {
        "name": "USD Coin",
        "symbol": "USDC",
        "decimals": 6,
        "total_supply": "4419304031200909",
        "missing": []
      }
    },
    "proxy": {
      "result": "warn",
      "evidence": {
        "standard": "zeppelinos (legacy unstructured storage)",
        "implementation": "0x2ce6311ddae708829bc0784c967b7d77d19fd779",
        "admin": "0x4fc7850364958d97b4d3f5a08f79db2493f8ca44",
        "note": "upgradeable: whoever controls the proxy can replace the token's code"
      }
    },
    "ownership": {
      "result": "warn",
      "evidence": {
        "function": "owner()",
        "owner": "0x3abd6f64a422225e61e435bae41db12096106df7",
        "renounced": false
      }
    },
    "privileged_functions": {
      "result": "warn",
      "evidence": {
        "found": {
          "mint": [
            "configureMinter(address,uint256)",
            "mint(address,uint256)"
          ],
          "blacklist": [
            "blacklist(address)",
            "isBlacklisted(address)"
          ],
          "pause": [
            "pause()",
            "unpause()"
          ]
        },
        "scanned": [
          "token",
          "implementation"
        ],
        "note": "selector presence only; who may call them is not checked"
      }
    },
    "liquidity_pool": {
      "result": "pass",
      "evidence": {
        "dex": "uniswap_v3",
        "variant": "fee 3000",
        "pool": "0x6c561b446416e1a00e8e93e221854d6ea4171372",
        "quote_token": "WETH",
        "token_balance": "76072526114911",
        "quote_balance": "29060996929756341666149",
        "thin_liquidity": false,
        "pools_found": 7
      }
    },
    "sell_simulation": {
      "result": "pass",
      "evidence": {
        "pool": "0x6c561b446416e1a00e8e93e221854d6ea4171372",
        "amount": "76072526114",
        "balance_slot": "solidity:9",
        "method": "eth_simulateV1 transfer leg",
        "received": "76072526114"
      }
    },
    "buy_simulation": {
      "result": "pass",
      "evidence": {
        "pool": "0x6c561b446416e1a00e8e93e221854d6ea4171372",
        "amount": "76072526114",
        "balance_slot": "solidity:9",
        "method": "eth_simulateV1 transfer leg",
        "received": "76072526114"
      }
    },
    "transfer_tax": {
      "result": "pass",
      "evidence": {
        "sell_tax_pct": 0.0,
        "buy_tax_pct": 0.0,
        "note": "token-side transfer tax only; AMM/pool fees are not included"
      }
    }
  },
  "rpc": "mainnet.base.org",
  "disclaimer": "Informational only, not financial advice. These are automated heuristics from public on-chain reads and simulations at a single block. They can miss risks (owner actions after this block, time-, amount- or wallet-specific traps, off-chain controls, other pools) and can flag legitimate tokens (for example regulated stablecoins with blacklist and pause functions). Do your own research."
}
},
"flow": [
  1. POST https://grokzilla.shop/api/skills/token-risk 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: "5000", payTo}]} (same JSON in the body)
  3. your x402 client checks amount ≤ $0.005 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/token-risk on this host and decodes the 402. Never pays.
}