Estimate whether text (or a web page's text) is AI-written using a trained classifier:…
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 'possibl…
by grokzilla.shop · discovered, not yet claimed by its owner · updated 2026-10-13
Mirrored from Coinbase's public x402 Bazaar. The description is the provider's own text and has not been reviewed here; the payment requirements are copied as published.
What it does
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.
Tags: ai-detection · ai-text · stylometry · content-check · text · bazaar
Call contract
- Method
- POST
- Input
- json
- Output
- json
- Last paid call
- 2026-10-13
{
"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."
}{
"ai_likelihood": 0.7822,
"band": [
0.5334,
1
],
"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."
],
"classifier": {
"model_kind": "logistic_regression",
"model_version": "2026-10-13",
"probability_ai": 0.362,
"threshold_ai": 0.585,
"threshold_human": 0.3233,
"verdict": "uncertain"
},
"content_type": "opinion",
"method": "stylometry",
"possible_ai_influence": true,
"rubric_score": 0.4,
"sections": [
{
"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"
],
"result": "no_signal",
"section": "rhythm",
"section_weight": 0.1
},
{
"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)"
],
"result": "ai_sign",
"section": "vocabulary",
"section_weight": 0.4
},
{
"evidence": [
"ai cues: hedging (2 hedges)",
"human cues: none",
"first person, names, dialogue and sensory detail are not counted either way"
],
"result": "no_signal",
"section": "voice_structure",
"section_weight": 0.3
},
{
"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"
],
"result": "no_signal",
"section": "resolution",
"section_weight": 0.2
}
],
"signals": {
"average_word_length": 4.3846,
"burstiness": 0.3542,
"contraction_rate": 3.2967,
"hapax_ratio": 0.8841,
"lexical_features_used": true,
"line_count": 1,
"line_length_uniformity": null,
"punctuation_diversity": 4,
"repeated_ngram_rate": 0,
"sentence_count": 8,
"sentence_length_mean": 11.375,
"sentence_length_variance": 16.2344,
"stock_phrase_hits": 3,
"stock_phrase_per_100": 3.2967,
"stock_phrases_found": [
"it's worth noting",
"a testament to",
"in conclusion"
],
"type_token_ratio": 0.7582,
"verse_like": false
},
"skill": "ai_detector",
"tell_phrases": [
{
"count": 1,
"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
}
],
"verdict": "possible_ai_influence",
"word_count": 91
}Use with an agent
- Discover. Agents find this listing with
GET https://bazaar.saylorinnovations.com/discovery/search?query=…, the MCP toolsearch_resources, or/discovery/resources. - Inspect. Fetch
/resources/35087.jsonfor the price and payment options. - Pay. Call
GET https://grokzilla.shop/api/skills/ai-detector. The provider answers402with its payment requirements. An x402 client signs one of the options below and retries withPAYMENT-SIGNATURE. - Execute. The provider returns
200with the data. Agent Bazaar is not in the request path and never sees your payment.
For humans
You don't need an account or an API key; you need a wallet holding a small amount of USDC on Base, and an x402-capable client (see the examples below). Call the endpoint unpaid first to see exactly what it asks for.
Pricing & payment
- Price
- $0.01 / request
- Protocol
- x402 v2
- Auth
- No account or API key. Pay per request.
- Networks
- Base
- Demand
- 9 calls · 4 unique payers in 30d (public x402 Bazaar data)
x402 payment requirements
| Scheme | Network | Asset | Amount | Pay to | Timeout |
|---|---|---|---|---|---|
| exact | Base eip155:8453 | USDC | $0.01 | 0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69 | 300s |
accepts[] (raw JSON)
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "10000",
"amountUsd": 0.01,
"maxTimeoutSeconds": 300
}
]Schemas
Output schema (JSON Schema)
{
"properties": {
"example": {
"properties": {
"ai_likelihood": {
"type": "number"
},
"band": {
"items": {
"type": "number"
},
"type": "array"
},
"caveats": {
"items": {
"type": "string"
},
"type": "array"
},
"classifier": {
"properties": {
"model_kind": {
"type": "string"
},
"model_version": {
"type": "string"
},
"probability_ai": {
"type": "number"
},
"threshold_ai": {
"type": "number"
},
"threshold_human": {
"type": "number"
},
"verdict": {
"type": "string"
}
},
"type": "object"
},
"content_type": {
"type": "string"
},
"method": {
"type": "string"
},
"possible_ai_influence": {
"type": "boolean"
},
"rubric_score": {
"type": "number"
},
"sections": {
"items": {
"properties": {
"evidence": {
"type": "array"
},
"result": {
"type": "string"
},
"section": {
"type": "string"
},
"section_weight": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"signals": {
"properties": {
"average_word_length": {
"type": "number"
},
"burstiness": {
"type": "number"
},
"contraction_rate": {
"type": "number"
},
"hapax_ratio": {
"type": "number"
},
"lexical_features_used": {
"type": "boolean"
},
"line_count": {
"type": "integer"
},
"line_length_uniformity": {
"type": "null"
},
"punctuation_diversity": {
"type": "integer"
},
"repeated_ngram_rate": {
"type": "number"
},
"sentence_count": {
"type": "integer"
},
"sentence_length_mean": {
"type": "number"
},
"sentence_length_variance": {
"type": "number"
},
"stock_phrase_hits": {
"type": "integer"
},
"stock_phrase_per_100": {
"type": "number"
},
"stock_phrases_found": {
"items": {
"type": "string"
},
"type": "array"
},
"type_token_ratio": {
"type": "number"
},
"verse_like": {
"type": "boolean"
}
},
"type": "object"
},
"skill": {
"type": "string"
},
"tell_phrases": {
"items": {
"properties": {
"count": {
"type": "integer"
},
"phrase": {
"type": "string"
},
"tell_weight": {
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"verdict": {
"type": "string"
},
"word_count": {
"type": "integer"
}
},
"required": [
"skill"
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}Example shape — generated from the schema, not a captured live response
{
"example": {
"ai_likelihood": 0,
"band": [
0
],
"caveats": [
"string"
],
"classifier": {
"model_kind": "string",
"model_version": "string",
"probability_ai": 0,
"threshold_ai": 0,
"threshold_human": 0,
"verdict": "string"
},
"content_type": "string",
"method": "string",
"possible_ai_influence": true,
"rubric_score": 0,
"sections": [
{
"evidence": [
"value"
],
"result": "string",
"section": "string",
"section_weight": 0
}
],
"signals": {
"average_word_length": 0,
"burstiness": 0,
"contraction_rate": 0,
"hapax_ratio": 0,
"lexical_features_used": true,
"line_count": 0,
"line_length_uniformity": null,
"punctuation_diversity": 0,
"repeated_ngram_rate": 0,
"sentence_count": 0,
"sentence_length_mean": 0,
"sentence_length_variance": 0,
"stock_phrase_hits": 0,
"stock_phrase_per_100": 0,
"stock_phrases_found": [
"string"
],
"type_token_ratio": 0,
"verse_like": true
},
"skill": "string",
"tell_phrases": [
{
"count": 0,
"phrase": "string",
"tell_weight": 0
}
],
"verdict": "string",
"word_count": 0
},
"type": "string"
}Examples
curl "https://grokzilla.shop/api/skills/ai-detector"
# -> 402 Payment Required, accepts[] lists how to pay
# retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paidconst res = await fetch("https://grokzilla.shop/api/skills/ai-detector");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}import httpx
res = httpx.get("https://grokzilla.shop/api/skills/ai-detector")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerDetails
- Provider
- grokzilla.shop
- Endpoint
- https://grokzilla.shop/api/skills/ai-detector
- Machine-readable
/resources/35087.json