{"skills":[{"id":"osint_graph","name":"Public OSINT Graph","description":"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.","endpoint":"/api/skills/osint-graph","method":"POST","doc_slug":"osint-graph","category":"osint_graph","price_usd":0.01,"docs_url":"https://grokzilla.shop/docs/osint-graph","try_url":"https://grokzilla.shop/try/osint-graph","example_request":{"seed_entity":"OpenAI","max_depth":2},"example_response":{"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","kind":"organization","url":"https://www.wikidata.org/wiki/Q21708200"},{"id":"Q111759432","name":"Reddit Inc.","type":"dot-com company","kind":"organization","url":"https://www.wikidata.org/wiki/Q111759432"},{"id":"Q62","name":"San Francisco","type":"city in the United States","kind":"place","url":"https://www.wikidata.org/wiki/Q62"},{"id":"Q7407093","name":"Sam Altman","type":"human","kind":"person","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"]},"input_schema":{"type":"object","required":["seed_entity"],"properties":{"seed_entity":{"type":"string"},"max_depth":{"type":"integer","default":2,"maximum":4}}}},{"id":"seo","name":"SEO Optimizer","description":"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, returns an error status (403/404/5xx), is a CDN/WAF challenge page, or times out (7 s cap), it answers 422 with score null, the reason, and charged:false; no payment is taken.","endpoint":"/api/skills/seo","method":"POST","doc_slug":"seo","category":"marketing","price_usd":0.012,"docs_url":"https://grokzilla.shop/docs/seo","try_url":"https://grokzilla.shop/try/seo","example_request":{"url":"https://example.com"},"example_response":{"skill":"seo","url":"https://example.com","final_url":"https://example.com/","score":28,"grade":"F","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}},"input_schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string"},"keywords":{"type":"array","items":{"type":"string"}}}}},{"id":"seo_v2","name":"SEO Optimizer v2","description":"On-page SEO + AEO audit with paste-ready fixes: 0-100 score across technical, content, metadata, structured data and AI-answer readiness, ~25 checks with severity, and generated title/meta, canonical, Open Graph/Twitter and a JSON-LD skeleton. Scores reflect technical checks only; no ranking or citation is guaranteed. Not charged if the site blocks us or is unreachable (422, charged:false).","endpoint":"/api/skills/seo-v2","method":"POST","doc_slug":"seo-v2","category":"marketing","price_usd":0.0997,"docs_url":"https://grokzilla.shop/docs/seo-v2","try_url":"https://grokzilla.shop/try/seo-v2","example_request":{"url":"https://www.python.org/","keywords":["python"]},"example_response":{"skill":"seo_v2","version":"2.0","url":"https://www.python.org/","final_url":"https://www.python.org/","score":77.7,"grade":"C","subscores":{"technical":80,"content":90,"metadata":62,"structured_data":83,"aeo":72},"checks":[{"id":"canonical","category":"technical","pass":false,"severity":"medium","points":0.0,"max":5,"evidence":"no rel=canonical","fix":{"summary":"Use exactly one absolute, self-referencing canonical on the same host.","snippet":"<link rel=\"canonical\" href=\"https://www.python.org/\">","snippet_lang":"html","effort":"S"}},{"id":"h1","category":"content","pass":false,"severity":"medium","points":3.0,"max":5,"evidence":"5 H1 elements","fix":{"summary":"Use exactly one H1 that states the page topic in the same words as the title.","snippet":"<h1>Functions Defined</h1>","snippet_lang":"html","effort":"S"}},{"id":"title","category":"metadata","pass":false,"severity":"medium","points":3.0,"max":6,"evidence":"title 21 chars: 'Welcome to Python.org'","fix":{"summary":"Use one <title> of 30-60 characters that names the page topic.","snippet":"<title>Welcome to</title>","snippet_lang":"html","effort":"S"}}],"top_fixes":[{"check_id":"canonical","impact_points":5.0,"summary":"Use exactly one absolute, self-referencing canonical on the same host."},{"check_id":"title","impact_points":3.0,"summary":"Use one <title> of 30-60 characters that names the page topic."},{"check_id":"meta_description","impact_points":2.5,"summary":"Write a 70-160 character meta description from the page's own text."}],"generated":{"meta_tags_html":"<title>Welcome to</title>\n<meta name=\"description\" content=\"Notice: This page displays a fallback because interactive scripts did not run.\">\n<link rel=\"canonical\" href=\"https://www.python.org/\">"},"reason":null,"disclaimer":"Scores reflect technical checks only; no ranking or citation is guaranteed."}},{"id":"seo_compare","name":"SEO Compare","description":"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).","endpoint":"/api/skills/seo-compare","method":"POST","doc_slug":"seo-v2","category":"marketing","price_usd":0.0503,"docs_url":"https://grokzilla.shop/docs/seo-v2","try_url":"https://grokzilla.shop/try/seo-compare","example_request":{"url":"https://www.python.org/","competitor_urls":["https://www.ruby-lang.org/en/"]},"example_response":{"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."}},{"id":"agent_ready_audit","name":"Agent-Ready Audit","description":"Audits how ~17 AI crawlers and agents (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, ChatGPT-User, ...) can reach and read a site: robots rules per bot, live user-agent probes, llms.txt, sitemap, JSON-LD, canonical host, agent interfaces. Does not guarantee crawling, ranking, citation, or traffic. Not charged if the site blocks us or is unreachable (422, charged:false).","endpoint":"/api/skills/agent-ready-audit","method":"POST","doc_slug":"agent-ready","category":"marketing","price_usd":0.1993,"docs_url":"https://grokzilla.shop/docs/agent-ready","try_url":"https://grokzilla.shop/try/agent-ready-audit","example_request":{"url":"https://www.python.org/","max_pages":5},"example_response":{"skill":"agent_ready_audit","url":"https://www.python.org/","score":62.8,"grade":"D","subscores":{"crawler_access":100,"machine_readable_summary":0,"structured_data":50,"discoverability":43,"content_readability":100,"agent_interfaces":null},"bots":[{"name":"GPTBot","operator":"OpenAI","class":"training","robots":"not_specified","matched_rule":"group * has no rule for / (allowed)","http_probe":{"status":200,"blocked_by_waf":false,"probed_as":"GPTBot"}},{"name":"ClaudeBot","operator":"Anthropic","class":"training","robots":"not_specified","matched_rule":"group * has no rule for / (allowed)","http_probe":{"status":200,"blocked_by_waf":false,"probed_as":"GPTBot"}},{"name":"Google-Extended","operator":"Google","class":"training","robots":"not_specified","matched_rule":"group * has no rule for / (allowed)","http_probe":{"status":200,"blocked_by_waf":false,"probed_as":"GPTBot"}}],"checks":[{"id":"llms_txt","category":"machine_readable_summary","pass":false,"severity":"medium","points":0.0,"max":8,"evidence":"no /llms.txt","fix":{"summary":"Publish /llms.txt in the llmstxt.org shape (see artifacts.llms_txt).","snippet":"","snippet_lang":"txt","effort":"S"}},{"id":"llms_full_txt","category":"machine_readable_summary","pass":false,"severity":"low","points":0.0,"max":3,"evidence":"no /llms-full.txt","fix":{"summary":"Publish /llms-full.txt with the full text of your key pages (see artifacts.llms_full_txt).","snippet":"","snippet_lang":"txt","effort":"S"}}],"pages_audited":["https://www.python.org/","https://www.python.org/psf-landing/","https://www.python.org/jobs/"],"reason":null,"disclaimer":"Improves technical accessibility for AI crawlers and agents. Does not guarantee crawling, ranking, citation, or traffic."}},{"id":"agent_ready_kit","name":"Agent-Ready Website Kit","description":"Agent-Ready Audit plus generated files: llms.txt, llms-full.txt, merged robots.txt AI section, sitemap.xml, JSON-LD and meta/OG per page, agent card, and an install guide (zip). Unknown facts stay TODO. Kit license: No-Resale License (LICENSE.md in the zip; https://grokzilla.shop/kits/license). Not charged if the site blocks us or is unreachable (422, charged:false).","endpoint":"/api/skills/agent-ready-kit","method":"POST","doc_slug":"agent-ready","category":"marketing","price_usd":0.2502,"docs_url":"https://grokzilla.shop/docs/agent-ready","try_url":"https://grokzilla.shop/try/agent-ready-kit","example_request":{"url":"https://www.python.org/","max_pages":5,"crawler_policy":"allow_search_block_training"},"example_response":{"skill":"agent_ready_kit","url":"https://www.python.org/","score":62.8,"grade":"D","subscores":{"crawler_access":100,"machine_readable_summary":0,"structured_data":50,"discoverability":43,"content_readability":100,"agent_interfaces":null},"bots":[{"name":"GPTBot","operator":"OpenAI","class":"training","robots":"not_specified","matched_rule":"group * has no rule for / (allowed)","http_probe":{"status":200,"blocked_by_waf":false,"probed_as":"GPTBot"}},{"name":"ClaudeBot","operator":"Anthropic","class":"training","robots":"not_specified","matched_rule":"group * has no rule for / (allowed)","http_probe":{"status":200,"blocked_by_waf":false,"probed_as":"GPTBot"}},{"name":"Google-Extended","operator":"Google","class":"training","robots":"not_specified","matched_rule":"group * has no rule for / (allowed)","http_probe":{"status":200,"blocked_by_waf":false,"probed_as":"GPTBot"}}],"checks":[{"id":"llms_txt","category":"machine_readable_summary","pass":false,"severity":"medium","points":0.0,"max":8,"evidence":"no /llms.txt","fix":{"summary":"Publish /llms.txt in the llmstxt.org shape (see artifacts.llms_txt).","snippet":"","snippet_lang":"txt","effort":"S"}},{"id":"llms_full_txt","category":"machine_readable_summary","pass":false,"severity":"low","points":0.0,"max":3,"evidence":"no /llms-full.txt","fix":{"summary":"Publish /llms-full.txt with the full text of your key pages (see artifacts.llms_full_txt).","snippet":"","snippet_lang":"txt","effort":"S"}}],"pages_audited":["https://www.python.org/","https://www.python.org/psf-landing/","https://www.python.org/jobs/"],"reason":null,"disclaimer":"Improves technical accessibility for AI crawlers and agents. Does not guarantee crawling, ranking, citation, or traffic.","artifacts":{"robots_txt_ai_block":"# BEGIN agent-ready AI crawler rules (generated)\n# policy: allow_search_block_training  (bot tokens from operator docs, accessed 2026-10-16)\n# allowed bots repeat your User-agent: * rules, because a named group replaces the * group (RFC 9309)\n\nUser-agent: GPTBot\nDisallow: /\n\nUser-agent: ClaudeBot\nDisallow: /\n\nUser-agent: Google-Extended\nDisallow: /\n\nUser-agent: Applebot-Extended\nDisallow: /\n\nUser-agent: CCBot\nDisallow: /\n\nUser-agent: meta-externalagent\nDisallow: /\n\nUser-agent: Bytespider\nDisallow: /\n\nUser-agent: OAI-SearchBot\nDisallow: /~guido/orlijn/\nDisallow: /webstats/\n\nUser-agent: Claude-S","llms_txt":"# Python.org\n\n> The official home of the Python Programming Language\n\n## Pages\n\n- [Welcome to Python.org](https://www.python.org/): The official home of the Python Programming Language\n- [Python Software Foundation](https://www.python.org/psf-landing/): The official home of the Python Programming Language\n- [Python Job Board | Python.org](https://www.python.org/jobs/): The official home of the Python Programming Language\n- [Our Community | Python.org](https://www.python.org/community/): The offi"},"bundle":{"filename":"agent-ready-kit.zip","encoding":"base64","bytes":32631,"files":[".well-known/agent-card.json","INSTALL.md","jsonld/community.json","jsonld/community_irc.json","jsonld/index.json","jsonld/jobs.json","jsonld/psf-landing.json","llms-full.txt","llms.txt","meta/community.html","meta/community_irc.html","meta/index.html","meta/jobs.html","meta/psf-landing.html","robots.txt","sitemap.xml"]}}},{"id":"agent_ready_recheck","name":"Agent-Ready Recheck","description":"Re-runs an Agent-Ready audit from its report_id (30 days) and returns what got fixed or regressed. Not charged if the site blocks us or is unreachable (422, charged:false).","endpoint":"/api/skills/agent-ready-recheck","method":"POST","doc_slug":"agent-ready","category":"marketing","price_usd":0.0102,"docs_url":"https://grokzilla.shop/docs/agent-ready","try_url":"https://grokzilla.shop/try/agent-ready-recheck","example_request":{"report_id":"ar.<report_id from a previous audit>.<sig>"},"example_response":{"url":"https://www.python.org/","score":62.8,"grade":"D","subscores":{"crawler_access":100,"machine_readable_summary":0,"structured_data":50,"discoverability":43,"content_readability":100,"agent_interfaces":null},"diff":{"previous_score":62.8,"score_delta":0.0,"fixed":[],"regressed":[]},"reason":null,"disclaimer":"Improves technical accessibility for AI crawlers and agents. Does not guarantee crawling, ranking, citation, or traffic.","skill":"agent_ready_recheck","changed_checks":[],"still_failing_count":2,"note":"Recheck only. Run agent-ready-audit for the full check list, fixes and artifacts."}},{"id":"ai_detector","name":"AI Content Detector","description":"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.","endpoint":"/api/skills/ai-detector","method":"POST","doc_slug":"ai-detector","category":"ai_detection","price_usd":0.01,"docs_url":"https://grokzilla.shop/docs/ai-detector","try_url":"https://grokzilla.shop/try/ai-detector","example_request":{"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."},"example_response":{"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."]},"input_schema":{"type":"object","properties":{"url":{"type":"string"},"text":{"type":"string"}}}},{"id":"json_flatten","name":"JSON Flattener","description":"Deterministic nested JSON to flat path-value map. Arrays, custom separators, depth limits.","endpoint":"/api/skills/json-flatten","method":"POST","doc_slug":"json-flatten","category":"data_prep","price_usd":0.006,"docs_url":"https://grokzilla.shop/docs/json-flatten","try_url":"https://grokzilla.shop/try/json-flatten","example_request":{"data":{"a":{"b":1}}},"example_response":{"skill":"json_flatten","ok":true,"flat":{"a.b":1}},"input_schema":{"type":"object","required":["data"],"properties":{"data":{},"options":{"type":"object"}}}},{"id":"json_sort","name":"JSON Key Sorter","description":"Recursively sort object keys and return canonical compact JSON. Deterministic, no network.","endpoint":"/api/skills/json-sort","method":"POST","doc_slug":"json-sort","category":"data_prep","price_usd":0.003,"docs_url":"https://grokzilla.shop/docs/json-sort","try_url":"https://grokzilla.shop/try/json-sort","example_request":{"data":{"b":1,"a":{"d":2,"c":3}},"reverse":false},"example_response":{"skill":"json_sort","ok":true,"sorted":{"a":{"c":3,"d":2},"b":1},"canonical":"{\"a\":{\"c\":3,\"d\":2},\"b\":1}","bytes":25},"input_schema":{"type":"object","required":["data"],"properties":{"data":{},"reverse":{"type":"boolean","default":false}}}},{"id":"text_diff","name":"Text Diff","description":"Lightweight deterministic line/word/char diff. Structured ops plus a one-line delta summary.","endpoint":"/api/skills/text-diff","method":"POST","doc_slug":"text-diff","category":"text_ops","price_usd":0.006,"docs_url":"https://grokzilla.shop/docs/text-diff","try_url":"https://grokzilla.shop/try/text-diff","example_request":{"a":"hello","b":"hallo"},"example_response":{"skill":"text_diff","ok":true,"mode":"lines","ops":[{"op":"del","value":"hello"},{"op":"ins","value":"hallo"}],"inserted":1,"deleted":1,"equal":0},"input_schema":{"type":"object","required":["a","b"],"properties":{"a":{"type":"string"},"b":{"type":"string"}}}},{"id":"url_normalize","name":"URL Normalizer","description":"Canonicalize URLs: strip tracking params, force HTTPS, sort query, extract components.","endpoint":"/api/skills/url-normalize","method":"POST","doc_slug":"url-normalize","category":"web_utils","price_usd":0.005,"docs_url":"https://grokzilla.shop/docs/url-normalize","try_url":"https://grokzilla.shop/try/url-normalize","example_request":{"url":"http://example.com/?utm_source=x"},"example_response":{"skill":"url_normalize","ok":true,"canonical":"https://example.com/","scheme":"https","host":"example.com","path":"/","query":{},"stripped_tracking":true},"input_schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string"}}}},{"id":"html_clean","name":"HTML Cleaner","description":"Strip scripts/styles and return readable text or markdown from HTML. mode normalized: text with NFKC and zero-width/bidi characters stripped.","endpoint":"/api/skills/html-clean","method":"POST","doc_slug":"html-clean","category":"data_prep","price_usd":0.008,"docs_url":"https://grokzilla.shop/docs/html-clean","try_url":"https://grokzilla.shop/try/html-clean","example_request":{"html":"<p>hi</p>","mode":"text"},"example_response":{"skill":"html_clean","ok":true,"mode":"text","chars":2,"output":"hi"},"input_schema":{"type":"object","required":["html"],"properties":{"html":{"type":"string"},"mode":{"type":"string","enum":["text","markdown","normalized"]}}}},{"id":"json_schema_validate","name":"JSON Schema Validator","description":"Cheap schema gate: type, required, properties, array items, plus format checks (email, date, date-time, uri, ipv4, ipv6, uuid, hostname).","endpoint":"/api/skills/json-schema-validate","method":"POST","doc_slug":"json-schema-validate","category":"data_prep","price_usd":0.006,"docs_url":"https://grokzilla.shop/docs/json-schema-validate","try_url":"https://grokzilla.shop/try/json-schema-validate","example_request":{"instance":{"n":1},"schema":{"type":"object","required":["n"]}},"example_response":{"skill":"json_schema_validate","ok":true,"valid":true,"errors":[],"checked":true},"input_schema":{"type":"object","required":["instance","schema"],"properties":{"instance":{},"schema":{"type":"object"}}}},{"id":"keyword_extract","name":"Keyword Extractor","description":"Deterministic term ranking from free text. Stopword-filtered. ngrams 2-3 adds scored multi-word phrases.","endpoint":"/api/skills/keyword-extract","method":"POST","doc_slug":"keyword-extract","category":"text_ops","price_usd":0.008,"docs_url":"https://grokzilla.shop/docs/keyword-extract","try_url":"https://grokzilla.shop/try/keyword-extract","example_request":{"text":"x402 micropay on Base USDC","limit":5},"example_response":{"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},"input_schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"},"limit":{"type":"integer"},"ngrams":{"type":"integer","minimum":1,"maximum":3,"default":1}}}},{"id":"token_count","name":"Token Counter","description":"Approximate cl100k/o200k token counts for budget decisions.","endpoint":"/api/skills/token-count","method":"POST","doc_slug":"token-count","category":"text_ops","price_usd":0.004,"docs_url":"https://grokzilla.shop/docs/token-count","try_url":"https://grokzilla.shop/try/token-count","example_request":{"text":"hello agent","encoding":"cl100k_base"},"example_response":{"skill":"token_count","ok":true,"encoding":"cl100k_base","chars":11,"words":2,"approx_tokens":2,"usd_hint_gpt4o_mini":3e-07},"input_schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"},"encoding":{"type":"string"}}}},{"id":"sha256","name":"SHA-256 Hash","description":"Hash a string (SHA-256 by default; algo: sha512, sha3_256 or blake2b_256) and return hex plus a short prefix. Deterministic, no network.","endpoint":"/api/skills/sha256","method":"POST","doc_slug":"sha256","category":"text_ops","price_usd":0.003,"docs_url":"https://grokzilla.shop/docs/sha256","try_url":"https://grokzilla.shop/try/sha256","example_request":{"text":"hello","encoding":"utf-8"},"example_response":{"skill":"sha256","ok":true,"algo":"sha256","bytes":5,"hex":"2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824","hex_prefix":"2cf24dba5fb0a30e"},"input_schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","maxLength":400000},"encoding":{"type":"string","maxLength":16,"default":"utf-8"},"algo":{"type":"string","enum":["sha256","sha512","sha3_256","blake2b_256"],"default":"sha256"}}}},{"id":"uuid_mint","name":"UUID Minter","description":"Mint 1-32 IDs for agent job IDs and idempotency keys: UUID v4 (default), v7 or v1 (time-ordered), or ULID (format: ulid). v7 and ULID batches sort in mint order.","endpoint":"/api/skills/uuid-mint","method":"POST","doc_slug":"uuid-mint","category":"text_ops","price_usd":0.003,"docs_url":"https://grokzilla.shop/docs/uuid-mint","try_url":"https://grokzilla.shop/try/uuid-mint","example_request":{"count":2,"version":4},"example_response":{"skill":"uuid_mint","ok":true,"version":4,"count":2,"ids":["00000000-0000-4000-8000-000000000001","00000000-0000-4000-8000-000000000002"]},"input_schema":{"type":"object","properties":{"count":{"type":"integer","minimum":1,"maximum":32,"default":1},"version":{"type":"integer","enum":[1,4,7],"default":4},"format":{"type":"string","enum":["uuid","ulid"],"default":"uuid"}}}},{"id":"slugify","name":"Slugify","description":"Turn free text into a URL-safe lowercase slug. Deterministic, no network.","endpoint":"/api/skills/slugify","method":"POST","doc_slug":"slugify","category":"text_ops","price_usd":0.003,"docs_url":"https://grokzilla.shop/docs/slugify","try_url":"https://grokzilla.shop/try/slugify","example_request":{"text":"Hello, Grokzilla Shop!","max_len":80},"example_response":{"skill":"slugify","ok":true,"slug":"hello-grokzilla-shop","chars":20,"empty":false},"input_schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","maxLength":4000},"max_len":{"type":"integer","minimum":1,"maximum":200,"default":80}}}},{"id":"pii_redact","name":"PII Redactor","description":"Redact emails, phone numbers, SSN-shaped strings, Luhn-valid card numbers and IPv4 addresses with typed placeholders. Deterministic, no network.","endpoint":"/api/skills/pii-redact","method":"POST","doc_slug":"pii-redact","category":"text_ops","price_usd":0.003,"docs_url":"https://grokzilla.shop/docs/pii-redact","try_url":"https://grokzilla.shop/try/pii-redact","example_request":{"text":"Mail jane@example.com or call 555-123-4567."},"example_response":{"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},"input_schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","maxLength":400000}}}},{"id":"csv_normalize","name":"CSV Normalizer","description":"Parse CSV into JSON rows keyed by trimmed snake_case headers, plus a type hint per column (integer, number, boolean, date, datetime, string). Deterministic, no network.","endpoint":"/api/skills/csv-normalize","method":"POST","doc_slug":"csv-normalize","category":"data_prep","price_usd":0.003,"docs_url":"https://grokzilla.shop/docs/csv-normalize","try_url":"https://grokzilla.shop/try/csv-normalize","example_request":{"csv":"First Name,E-mail\nAda,ada@example.com\n","delimiter":","},"example_response":{"skill":"csv_normalize","ok":true,"headers":["first_name","e_mail"],"rows":[{"first_name":"Ada","e_mail":"ada@example.com"}],"row_count":1,"column_types":{"first_name":"string","e_mail":"string"}},"input_schema":{"type":"object","required":["csv"],"properties":{"csv":{"type":"string","minLength":1,"maxLength":400000},"delimiter":{"type":"string","enum":[",",";","\t","|"],"default":","}}}},{"id":"base64","name":"Base64 Encode/Decode","description":"Encode UTF-8 text or decode it back: base64 (default; standard or URL-safe), base32, base58 (Bitcoin alphabet), hex or URI percent-encoding (codec). Deterministic, no network.","endpoint":"/api/skills/base64","method":"POST","doc_slug":"base64","category":"text_ops","price_usd":0.003,"docs_url":"https://grokzilla.shop/docs/base64","try_url":"https://grokzilla.shop/try/base64","example_request":{"mode":"encode","text":"hello agent","url_safe":false},"example_response":{"skill":"base64","ok":true,"mode":"encode","url_safe":false,"output":"aGVsbG8gYWdlbnQ=","bytes":11},"input_schema":{"type":"object","required":["mode","text"],"properties":{"mode":{"type":"string","enum":["encode","decode"]},"text":{"type":"string","maxLength":400000},"url_safe":{"type":"boolean","default":false},"codec":{"type":"string","enum":["base64","base32","base58","hex","uri"],"default":"base64"}}}},{"id":"epoch_convert","name":"Epoch Converter","description":"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.","endpoint":"/api/skills/epoch-convert","method":"POST","doc_slug":"epoch-convert","category":"text_ops","price_usd":0.003,"docs_url":"https://grokzilla.shop/docs/epoch-convert","try_url":"https://grokzilla.shop/try/epoch-convert","example_request":{"value":1700000000,"tz":"America/Chicago"},"example_response":{"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"},"input_schema":{"type":"object","required":["value"],"properties":{"value":{"type":["integer","number","string"],"maxLength":64},"tz":{"type":"string","minLength":1,"maxLength":64,"default":"UTC"}}}},{"id":"url_to_markdown","name":"URL to Markdown","description":"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.","endpoint":"/api/skills/url-to-markdown","method":"POST","doc_slug":"url-to-markdown","category":"data_prep","price_usd":0.003,"docs_url":"https://grokzilla.shop/docs/url-to-markdown","try_url":"https://grokzilla.shop/try/url-to-markdown","example_request":{"url":"https://example.com"},"example_response":{"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},"input_schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","minLength":8,"maxLength":2000,"pattern":"^[Hh][Tt][Tt][Pp][Ss]?://"}}}},{"id":"token_risk","name":"Token Risk (Base)","description":"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.","endpoint":"/api/skills/token-risk","method":"POST","doc_slug":"token-risk","category":"onchain","price_usd":0.005,"docs_url":"https://grokzilla.shop/docs/token-risk","try_url":"https://grokzilla.shop/try/token-risk","example_request":{"token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","chain":"base"},"example_response":{"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."},"input_schema":{"type":"object","required":["token"],"properties":{"token":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"chain":{"type":"string","enum":["base"],"default":"base"}}}},{"id":"json_repair","name":"JSON Repair","description":"Repair malformed or truncated JSON from LLMs, JS or Python: strips ```json fences and comments, fixes trailing commas, single quotes, unquoted keys, True/False/None, missing commas and unclosed strings/brackets. Returns the parsed JSON, a compact repaired JSON string and the list of fixes. Deterministic, no network.","endpoint":"/api/skills/json-repair","method":"POST","doc_slug":"json-repair","category":"data_prep","price_usd":0.0041,"docs_url":"https://grokzilla.shop/docs/json-repair","try_url":"https://grokzilla.shop/try/json-repair","example_request":{"text":"{name: 'Ada', tags: ['math', 'code',], active: True, // note\n}"},"example_response":{"skill":"json_repair","ok":true,"json":{"name":"Ada","tags":["math","code"],"active":true},"repaired":"{\"name\":\"Ada\",\"tags\":[\"math\",\"code\"],\"active\":true}","fixes":["unquoted_keys","single_quotes","trailing_commas","python_literals","removed_comments"],"changed":true},"input_schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":400000}},"required":["text"]}},{"id":"cron_next","name":"Cron Next Runs","description":"Validate a 5-field cron expression (lists, ranges, steps, JAN-DEC/SUN-SAT names, @daily/@hourly macros) and return its next 1-20 run times in any IANA time zone (DST-aware), as local ISO, UTC ISO and epoch seconds. Deterministic, no network.","endpoint":"/api/skills/cron-next","method":"POST","doc_slug":"cron-next","category":"text_ops","price_usd":0.0031,"docs_url":"https://grokzilla.shop/docs/cron-next","try_url":"https://grokzilla.shop/try/cron-next","example_request":{"expr":"*/15 9-17 * * MON-FRI","tz":"America/Chicago","count":3,"from":"2026-10-16T12:42:00-05:00"},"example_response":{"skill":"cron_next","ok":true,"expr":"*/15 9-17 * * MON-FRI","normalized":"*/15 9-17 * * MON-FRI","tz":"America/Chicago","from":"2026-10-16T12:42:00-05:00","count":3,"next":["2026-10-16T12:45:00-05:00","2026-10-16T13:00:00-05:00","2026-10-16T13:15:00-05:00"],"next_utc":["2026-10-16T17:45:00Z","2026-10-16T18:00:00Z","2026-10-16T18:15:00Z"],"next_epoch_s":[1792172700,1792173600,1792174500],"fields":{"minute":[0,15,30,45],"hour":[9,10,11,12,13,14,15,16,17],"day_of_month":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],"month":[1,2,3,4,5,6,7,8,9,10,11,12],"day_of_week":[1,2,3,4,5]}},"input_schema":{"type":"object","properties":{"expr":{"type":"string","minLength":1,"maxLength":200},"tz":{"type":"string","minLength":1,"maxLength":64,"default":"UTC"},"count":{"type":"integer","minimum":1,"maximum":20,"default":5},"from":{"type":"string","minLength":1,"maxLength":64}},"required":["expr"]}},{"id":"token_price","name":"Verified Token Price (Base)","description":"Verified USD price for a Base ERC-20: DeFiLlama cross-checked against the deepest on-chain Uniswap/Aerodrome pool. Returns price, spread, staleness, confidence. Refused, not charged, if sources disagree over 2.5% or one is missing. Data only, not investment advice.","endpoint":"/api/skills/token-price","method":"POST","doc_slug":"token-price","category":"onchain","price_usd":0.002,"docs_url":"https://grokzilla.shop/docs/token-price","try_url":"https://grokzilla.shop/try/token-price","example_request":{"token":"0x4200000000000000000000000000000000000006"},"example_response":{"ok":true,"skill":"token_price","service":"token_price","version":"1.0.0","summary":"WETH $2433.056 (2 sources, spread 0.15%) - data only, not advice","data":{"token":"0x4200000000000000000000000000000000000006","chain":"base","symbol":"WETH","decimals":18,"price_usd":"2433.056","spread_pct":0.1524,"agree":true,"sources_agree_within_pct":2.5,"by_source":{"defillama":{"price_usd":"2434.91","confidence":0.99,"as_of":"2026-10-17T11:11:51Z","staleness_s":58},"onchain":{"price_usd":"2431.203","block":52723111,"pool":{"dex":"uniswap_v3","variant":"fee 3000","address":"0x6c561b446416e1a00e8e93e221854d6ea4171372","quote":"USDC","quote_side_usd":60045166.09},"weth_usd_onchain":2431.202812620857}},"disclaimer":"Data only, not investment advice. Spot prices from public sources at one point in time; they can be stale, manipulated in thin pools, or wrong. No buy/sell signal is given or implied."},"confidence":0.975,"sources":[{"name":"DeFiLlama coins API","url":"https://coins.llama.fi/prices/current/base:0x4200000000000000000000000000000000000006","fetched_at":"2026-10-17T11:12:48Z"},{"name":"Base on-chain pool (public RPC)","url":"https://basescan.org/address/0x6c561b446416e1a00e8e93e221854d6ea4171372","fetched_at":"2026-10-17T11:12:48Z","block":52723111}],"generated_at":"2026-10-17T11:12:49Z","data_as_of":"2026-10-17T11:11:51Z","charged":true,"warnings":[],"next":["token_risk"],"disclaimer":"Data only, not investment advice. Spot prices from public sources at one point in time; they can be stale, manipulated in thin pools, or wrong. No buy/sell signal is given or implied."},"input_schema":{"type":"object","additionalProperties":false,"properties":{"token":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Base ERC-20 contract address"},"chain":{"type":"string","enum":["base"],"default":"base"},"request_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9._:-]+$","description":"Optional idempotency key. Echoed back; a credit-pack redemption with the same request_id and body is charged once."}},"required":["token"]}},{"id":"email_check","name":"Email Deliverability Check","description":"Check an email address for deliverability: syntax, canonical form, MX, SPF, DMARC, disposable domain. One verdict with reasons and sources. DNS-over-HTTPS only, no mailbox probing. Not charged if the DNS lookup fails.","endpoint":"/api/skills/email-check","method":"POST","doc_slug":"email-check","category":"data","price_usd":0.0032,"docs_url":"https://grokzilla.shop/docs/email-check","try_url":"https://grokzilla.shop/try/email-check","example_request":{"email":"jane.doe+news@gmail.com"},"example_response":{"ok":true,"skill":"email_check","service":"email_check","version":"1.0.0","summary":"deliverable: MX ok (gmail-smtp-in.l.google.com), SPF ok, DMARC p=none","data":{"email":"jane.doe+news@gmail.com","local":"jane.doe+news","domain":"gmail.com","verdict":"deliverable","reasons":["MX ok (gmail-smtp-in.l.google.com)","SPF ok","DMARC p=none"],"syntax_valid":true,"canonical":"janedoe@gmail.com","canonical_rule":"gmail: dots and +tag removed","plus_tag":"news","domain_exists":true,"mx":[{"priority":5,"host":"gmail-smtp-in.l.google.com"},{"priority":10,"host":"alt1.gmail-smtp-in.l.google.com"},{"priority":20,"host":"alt2.gmail-smtp-in.l.google.com"},{"priority":30,"host":"alt3.gmail-smtp-in.l.google.com"},{"priority":40,"host":"alt4.gmail-smtp-in.l.google.com"}],"null_mx":false,"implicit_mx":false,"mx_host_resolves":true,"spf":{"present":true,"record":"v=spf1 redirect=_spf.google.com","count":1},"dmarc":{"present":true,"record":"v=DMARC1; p=none; sp=quarantine; rua=mailto:mailauth-reports@google.com","p":"none","sp":"quarantine","pct":null,"rua":true},"disposable":false,"role_account":false,"free_provider":true,"mailbox_checked":false},"confidence":0.85,"sources":[{"name":"Cloudflare DoH","url":"https://cloudflare-dns.com/dns-query?name=gmail.com","fetched_at":"2026-10-17T11:12:49Z"},{"name":"disposable-email-domains","url":"https://github.com/disposable-email-domains/disposable-email-domains (CC0-1.0)","fetched_at":"2026-10-17T11:12:49Z","list_date":"2026-10-16"}],"generated_at":"2026-10-17T11:12:49Z","data_as_of":"2026-10-17T11:12:49Z","charged":true,"warnings":["mailbox existence is not checked (no SMTP probing); a deliverable domain can still reject this mailbox"],"next":["phone_normalize","ip_intel"]},"input_schema":{"type":"object","additionalProperties":false,"properties":{"email":{"type":"string","minLength":3,"maxLength":254},"request_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9._:-]+$","description":"Optional idempotency key. Echoed back; a credit-pack redemption with the same request_id and body is charged once."}},"required":["email"]}},{"id":"news_brief","name":"News Brief with Sources","description":"Topic in, deduplicated story clusters out: headline, every outlet URL and first-seen time, from GDELT and publisher RSS. Headlines and links only, no article text. Not charged when nothing matches or sources fail.","endpoint":"/api/skills/news-brief","method":"POST","doc_slug":"news-brief","category":"data","price_usd":0.0101,"docs_url":"https://grokzilla.shop/docs/news-brief","try_url":"https://grokzilla.shop/try/news-brief","example_request":{"topic":"bitcoin","timespan":"3d","max_clusters":2},"example_response":{"ok":true,"skill":"news_brief","service":"news_brief","version":"1.0.0","summary":"2 stories on 'bitcoin'; top: Don’t Let a Crypto Inheritance Get Stuck on the Blockchain","data":{"topic":"bitcoin","terms":["bitcoin"],"timespan":"3d","clusters":[{"headline":"Don’t Let a Crypto Inheritance Get Stuck on the Blockchain","first_seen":"2026-10-17T10:30:00Z","latest":"2026-10-17T10:30:00Z","outlet_count":1,"outlets":[{"outlet":"Wired","headline":"Don’t Let a Crypto Inheritance Get Stuck on the Blockchain","url":"https://www.wired.com/story/crypto-inheritance-how-to/","seen_at":"2026-10-17T10:30:00Z","via":"rss"}]},{"headline":"‘Wow, it’s a real discovery’: Claude cracks a 25-year NSA number mystery","first_seen":"2026-10-17T06:39:48Z","latest":"2026-10-17T06:39:48Z","outlet_count":1,"outlets":[{"outlet":"CoinDesk","headline":"‘Wow, it’s a real discovery’: Claude cracks a 25-year NSA number mystery","url":"https://www.coindesk.com/tech/2026/10/17/wow-it-s-a-real-discovery-claude-cracks-a-25-year-nsa-number-mystery","seen_at":"2026-10-17T06:39:48Z","via":"rss"}]}],"cluster_count":2,"headline_count":2,"searched":{"gdelt":false,"feeds_ok":22,"feeds_total":22}},"confidence":0.7,"sources":[{"name":"Wired","url":"https://www.wired.com/feed/rss","fetched_at":"2026-10-17T11:12:49Z"},{"name":"CoinDesk","url":"https://www.coindesk.com/arc/outboundfeeds/rss/","fetched_at":"2026-10-17T11:12:49Z"}],"generated_at":"2026-10-17T11:12:56Z","data_as_of":"2026-10-17T11:12:49Z","charged":true,"warnings":["headlines and links only; open the outlet URL for the article","GDELT did not answer in time (it rate-limits shared IPs); results come from publisher RSS only"],"next":["url_to_markdown"],"note":"Headlines and links only. No article text is republished."},"input_schema":{"type":"object","additionalProperties":false,"properties":{"topic":{"type":"string","minLength":2,"maxLength":100},"timespan":{"type":"string","enum":["24h","3d","7d"],"default":"24h"},"max_clusters":{"type":"integer","minimum":1,"maximum":20,"default":10},"request_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9._:-]+$","description":"Optional idempotency key. Echoed back; a credit-pack redemption with the same request_id and body is charged once."}},"required":["topic"]}},{"id":"ip_intel","name":"IP & CIDR Intel","description":"One public IP or CIDR in: normalized network, size, membership checks, plus holder, abuse contact and origin ASN from RIR RDAP and RIPEstat, and country from DB-IP Lite (CC BY 4.0, attributed). Private ranges refused before payment. Not charged if registries fail.","endpoint":"/api/skills/ip-intel","method":"POST","doc_slug":"ip-intel","category":"data","price_usd":0.0033,"docs_url":"https://grokzilla.shop/docs/ip-intel","try_url":"https://grokzilla.shop/try/ip-intel","example_request":{"query":"8.8.8.8"},"example_response":{"ok":true,"skill":"ip_intel","service":"ip_intel","version":"1.0.0","summary":"8.8.8.8/32: AS15169 GOOGLE - Google LLC, Google LLC, US","data":{"network":{"query":"8.8.8.8","version":4,"network":"8.8.8.8/32","prefix_length":32,"num_addresses":"1","first":"8.8.8.8","last":"8.8.8.8","is_single_address":true,"is_global":true,"reverse_pointer":"8.8.8.8.in-addr.arpa"},"registry":{"handle":"NET-8-8-8-0-2","name":"GOGL","holder":"Google LLC","type":"DIRECT ALLOCATION","start_address":"8.8.8.0","end_address":"8.8.8.255","cidrs":["8.8.8.0/24"],"registry_country":null,"abuse_email":"network-abuse@google.com","registered":"2023-12-28T17:24:33-05:00","last_changed":"2023-12-28T17:24:56-05:00","origin_asns_registered":null},"routing":{"asns":[15169],"routed_prefix":"8.8.8.0/24","as_holder":"GOOGLE - Google LLC"},"geo":{"country":"US","countries_at_edges":["US"],"dataset":"DB-IP IP-to-Country Lite 2026-10","attribution":{"text":"IP Geolocation by DB-IP","url":"https://db-ip.com","license":"CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)"}}},"confidence":0.9,"sources":[{"name":"RIR RDAP (via rdap.org bootstrap)","url":"https://rdap.arin.net/registry/ip/8.8.8.8","fetched_at":"2026-10-17T11:12:56Z"},{"name":"RIPEstat network-info / as-overview","url":"https://stat.ripe.net/data/network-info/data.json?resource=8.8.8.8","fetched_at":"2026-10-17T11:12:56Z"},{"name":"IP Geolocation by DB-IP","url":"https://db-ip.com","fetched_at":"2026-10-17T11:12:56Z","dataset_month":"2026-10","license":"CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)"}],"generated_at":"2026-10-17T11:12:56Z","data_as_of":"2026-10-17T11:12:56Z","charged":true,"warnings":["country is DB-IP Lite geolocation (country-level, monthly); it can differ from the registry country"],"next":["email_check"],"attribution":{"text":"IP Geolocation by DB-IP","url":"https://db-ip.com","license":"CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)"}},"input_schema":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","minLength":2,"maxLength":64,"description":"IPv4/IPv6 address or CIDR"},"check":{"type":"array","items":{"type":"string","maxLength":45},"maxItems":50,"description":"IPs to test for membership in the network"},"request_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9._:-]+$","description":"Optional idempotency key. Echoed back; a credit-pack redemption with the same request_id and body is charged once."}},"required":["query"]}},{"id":"llm_cost_quote","name":"LLM Cost Quote","description":"Text or token counts in, cost per model out, cheapest first, from OpenRouter's public price list with a price-fetched-at timestamp. Applies time-of-day pricing. Not charged if the price list is unavailable or no model matches.","endpoint":"/api/skills/llm-cost-quote","method":"POST","doc_slug":"llm-cost-quote","category":"data","price_usd":0.0034,"docs_url":"https://grokzilla.shop/docs/llm-cost-quote","try_url":"https://grokzilla.shop/try/llm-cost-quote","example_request":{"input_tokens":3000,"output_tokens":400,"models":["openai/gpt-4o-mini","google/gemini-2.5-flash"]},"example_response":{"ok":true,"skill":"llm_cost_quote","service":"llm_cost_quote","version":"1.0.0","summary":"cheapest: openai/gpt-4o-mini $0.00069 for 3000 in + 400 out tokens","data":{"input_tokens":3000,"output_tokens":400,"token_source":"caller-supplied input_tokens","models_considered":2,"quotes":[{"model":"openai/gpt-4o-mini","name":"OpenAI: GPT-4o-mini","cost_usd":"0.00069","input_usd_per_mtok":"0.15","output_usd_per_mtok":"0.6","context_length":128000,"fits_context":true,"time_based_price":false},{"model":"google/gemini-2.5-flash","name":"Google: Gemini 2.5 Flash","cost_usd":"0.0019","input_usd_per_mtok":"0.3","output_usd_per_mtok":"2.5","context_length":1048576,"fits_context":true,"time_based_price":false}],"missing_models":[],"price_fetched_at":"2026-10-17T11:12:57Z","currency":"USD"},"confidence":0.97,"sources":[{"name":"OpenRouter public models list","url":"https://openrouter.ai/api/v1/models","fetched_at":"2026-10-17T11:12:57Z"}],"generated_at":"2026-10-17T11:12:57Z","data_as_of":"2026-10-17T11:12:57Z","charged":true,"warnings":[],"next":["token_count"]},"input_schema":{"type":"object","additionalProperties":false,"properties":{"text":{"type":"string","maxLength":400000},"input_tokens":{"type":"integer","minimum":0,"maximum":10000000},"output_tokens":{"type":"integer","minimum":0,"maximum":1000000,"default":500},"models":{"type":"array","items":{"type":"string","maxLength":120},"maxItems":25},"top":{"type":"integer","minimum":1,"maximum":50,"default":10},"include_free":{"type":"boolean","default":false},"request_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9._:-]+$","description":"Optional idempotency key. Echoed back; a credit-pack redemption with the same request_id and body is charged once."}}}},{"id":"phone_normalize","name":"Phone Normalize & Validate","description":"Parse and validate one phone number with full libphonenumber metadata: valid/possible, number type, region, E.164, national and international formats. Offline. No owner or carrier lookup. Unparseable numbers refused before payment.","endpoint":"/api/skills/phone-normalize","method":"POST","doc_slug":"phone-normalize","category":"data","price_usd":0.0021,"docs_url":"https://grokzilla.shop/docs/phone-normalize","try_url":"https://grokzilla.shop/try/phone-normalize","example_request":{"number":"+1 415 555 2671"},"example_response":{"ok":true,"skill":"phone_normalize","service":"phone_normalize","version":"1.0.0","summary":"valid fixed_line_or_mobile number in US: +14155552671","data":{"input":"+1 415 555 2671","valid":true,"possible":true,"type":"fixed_line_or_mobile","region":"US","country_code":1,"national_number":"4155552671","extension":null,"e164":"+14155552671","international":"+1 415-555-2671","national":"(415) 555-2671","rfc3966":"tel:+1-415-555-2671","metadata":"libphonenumber 9.0.41"},"confidence":1.0,"sources":[],"generated_at":"2026-10-17T11:12:57Z","data_as_of":"2026-10-17T11:12:57Z","charged":true,"warnings":[],"next":["email_check"],"note":"Format and validity only. No owner, carrier or location lookup."},"input_schema":{"type":"object","additionalProperties":false,"properties":{"number":{"type":"string","minLength":3,"maxLength":64},"region":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO 3166-1 alpha-2 default region for numbers without +"},"request_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9._:-]+$","description":"Optional idempotency key. Echoed back; a credit-pack redemption with the same request_id and body is charged once."}},"required":["number"]}}],"x402_enabled":true,"stripe_enabled":true,"free_beta":false,"hosted_partners":[],"partner_resale":{"group":"partner_resale","description":"Resold partner services (provider x402-mcp.onrender.com, not ours). GET with query params, paid per call via x402 on Base. Your payment settles first; if the partner then fails you get charged:true plus a full refund record. Output is normalized to grokzilla.partner-resale.v1. Separate from the native skills list.","count":4,"output_schema_id":"grokzilla.partner-resale.v1","services":[{"id":"base-tx-decision","group":"partner_resale","name":"Base tx decision (partner resale)","description":"Resold partner service: submit-or-wait verdict and EIP-1559 fee suggestion for a Base mainnet transaction, from live Base RPC block data.","url":"https://grokzilla.shop/api/resale/base/tx-decision","path":"/api/resale/base/tx-decision","method":"GET","price":"0.020001","price_usd":0.020001,"amount_atomic":"20001","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69","mimeType":"application/json","provider":"x402-mcp.onrender.com","resold":true,"tags":["base","gas","partner"],"input":{"type":"http","method":"GET","queryParams":{"type":"object","properties":{"gas":{"type":"string","description":"Transaction kind, e.g. eth, usdc, x402","default":"usdc"},"urgency":{"type":"string","description":"e.g. flexible, normal, urgent","default":"flexible"}},"required":[]},"example":{"gas":"usdc","urgency":"flexible"}},"output_schema_id":"grokzilla.partner-resale.v1","output_schema":{"description":"Normalized base-tx-decision response (grokzilla.partner-resale.v1).","type":"object","properties":{"ok":{"description":"Always true on a 200 response.","type":"boolean"},"schema":{"description":"Schema id, currently grokzilla.partner-resale.v1.","type":"string"},"route":{"description":"Our route id, e.g. base-tx-decision.","type":"string"},"provider":{"description":"Upstream data provider we resell (attribution).","type":"string"},"subject":{"description":"What was checked.","type":"object","properties":{"kind":{"description":"base_network | base_tx | street_address.","type":"string"},"value":{"description":"The subject as the provider resolved it (tx hash, normalized address); null for network-wide checks.","type":["string","null"]},"jurisdiction":{"description":"base | nyc | minneapolis.","type":"string"}},"required":["kind","value","jurisdiction"],"additionalProperties":false},"verdict":{"description":"Provider verdict, lower snake case (settle_now, safe, registered_with_violations, licensed_clean, unlicensed...).","type":["string","null"]},"status":{"description":"ok, or no_records when a property lookup matched nothing (then a negative verdict may mean 'not found', not a confirmed negative).","type":"string"},"summary":{"description":"Provider's one-line explanation, when it sends one.","type":["string","null"]},"risk_flags":{"description":"Machine-readable flags derived only from returned fields (see per-route list).","type":"array","items":{"type":"string"}},"evidence":{"description":"Records backing the verdict (capped at 25).","type":"array","items":{"type":"object","properties":{"type":{"description":"Record kind, e.g. block, tx_block, hpd_registration, hpd_violation, rental_license, code_case.","type":"string"},"id":{"description":"Record identifier as issued by the source (block number, registration id, case number).","type":["string","null"]},"date":{"description":"Most relevant date for the record (YYYY-MM-DD, or ISO 8601 for chain data).","type":["string","null"]},"status":{"description":"Record status as reported by the source.","type":["string","null"]},"code":{"description":"Source classification code (HPD class, Minneapolis violation code, license tier).","type":["string","null"]},"detail":{"description":"Short source text for the record (violation description, inspection type).","type":["string","null"]}},"required":["type","id","date","status","code","detail"],"additionalProperties":false}},"sources":{"description":"Source dataset URLs reported by the provider; null when the provider names none.","type":["array","null"],"items":{"type":"string"}},"disclaimer":{"description":"Provider's disclaimer, passed through verbatim.","type":["string","null"]},"checked_at":{"description":"When the provider computed the result (ISO 8601, UTC).","type":["string","null"]},"upstream_tx":{"description":"Base tx hash of our payment to the provider for this call (receipt).","type":["string","null"]},"data":{"description":"Route-specific fields for base-tx-decision.","type":"object","properties":{"submit":{"description":"True = submit now, false = wait.","type":["boolean","null"]},"urgency":{"description":"Urgency the decision was computed for (echo of input).","type":["string","null"]},"fee":{"description":"Fee suggestion.","type":"object","properties":{"max_fee_per_gas_gwei":{"description":"Suggested EIP-1559 maxFeePerGas, gwei.","type":["number","null"]},"max_priority_fee_per_gas_gwei":{"description":"Suggested maxPriorityFeePerGas, gwei.","type":["number","null"]},"current_base_fee_gwei":{"description":"Base fee of the latest block, gwei.","type":["number","null"]},"next_base_fee_gwei":{"description":"Projected base fee of the next block, gwei.","type":["number","null"]}},"required":["max_fee_per_gas_gwei","max_priority_fee_per_gas_gwei","current_base_fee_gwei","next_base_fee_gwei"],"additionalProperties":false},"estimated_cost":{"description":"Estimated cost of the transaction.","type":"object","properties":{"gas":{"description":"Gas units assumed for the transaction kind.","type":["integer","null"]},"eth":{"description":"Estimated fee in ETH.","type":["number","null"]},"usd":{"description":"Estimated fee in USD.","type":["number","null"]}},"required":["gas","eth","usd"],"additionalProperties":false},"recheck_in_s":{"description":"Seconds until a recheck is suggested; null when not needed.","type":["integer","null"]},"as_of_block":{"description":"Base block the decision is based on.","type":["integer","null"]},"chain":{"description":"CAIP-2 chain id.","type":["string","null"]}},"required":["submit","urgency","fee","estimated_cost","recheck_in_s","as_of_block","chain"],"additionalProperties":false}},"required":["ok","schema","route","provider","subject","verdict","status","summary","risk_flags","evidence","sources","disclaimer","checked_at","upstream_tx","data"],"additionalProperties":false,"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://grokzilla.shop/schemas/grokzilla.partner-resale.v1/base-tx-decision.json"},"example_response":{"ok":true,"schema":"grokzilla.partner-resale.v1","route":"base-tx-decision","provider":"x402-mcp.onrender.com","subject":{"kind":"base_network","value":null,"jurisdiction":"base"},"verdict":"settle_now","status":"ok","summary":"Blockspace is 4.5% full at 0.0050 gwei - settlement is at or near the floor with ~22.1x headroom. No congestion premium; a stablecoin transfer settles for a fraction of a cent.","risk_flags":[],"evidence":[{"type":"block","id":"52702618","date":"2026-10-16T23:49:46.011831+00:00","status":null,"code":null,"detail":null}],"sources":null,"disclaimer":null,"checked_at":"2026-10-16T23:49:46.011831+00:00","upstream_tx":"0x954459f45d1427ddf187d34bd5d17f6e637030e920080ef106efeb10222b46ce","data":{"submit":true,"urgency":"flexible","fee":{"max_fee_per_gas_gwei":0.011,"max_priority_fee_per_gas_gwei":0.001,"current_base_fee_gwei":0.005,"next_base_fee_gwei":0.004432},"estimated_cost":{"gas":55000,"eth":3.3e-07,"usd":0.000799},"recheck_in_s":null,"as_of_block":52702618,"chain":"eip155:8453"}}},{"id":"base-finality-check","group":"partner_resale","name":"Base finality check (partner resale)","description":"Resold partner service: inclusion, confirmations and safe/finalized status for a Base transaction hash.","url":"https://grokzilla.shop/api/resale/base/finality-check","path":"/api/resale/base/finality-check","method":"GET","price":"0.020002","price_usd":0.020002,"amount_atomic":"20002","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69","mimeType":"application/json","provider":"x402-mcp.onrender.com","resold":true,"tags":["base","finality","partner"],"input":{"type":"http","method":"GET","queryParams":{"type":"object","properties":{"tx":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$","description":"Base tx hash"}},"required":["tx"]},"example":{"tx":"0xeb43b522a462fa251ba7d6eb8f47dcc7cf0a5bc6cc53bce48cbeb685a79f480e"}},"output_schema_id":"grokzilla.partner-resale.v1","output_schema":{"description":"Normalized base-finality-check response (grokzilla.partner-resale.v1).","type":"object","properties":{"ok":{"description":"Always true on a 200 response.","type":"boolean"},"schema":{"description":"Schema id, currently grokzilla.partner-resale.v1.","type":"string"},"route":{"description":"Our route id, e.g. base-tx-decision.","type":"string"},"provider":{"description":"Upstream data provider we resell (attribution).","type":"string"},"subject":{"description":"What was checked.","type":"object","properties":{"kind":{"description":"base_network | base_tx | street_address.","type":"string"},"value":{"description":"The subject as the provider resolved it (tx hash, normalized address); null for network-wide checks.","type":["string","null"]},"jurisdiction":{"description":"base | nyc | minneapolis.","type":"string"}},"required":["kind","value","jurisdiction"],"additionalProperties":false},"verdict":{"description":"Provider verdict, lower snake case (settle_now, safe, registered_with_violations, licensed_clean, unlicensed...).","type":["string","null"]},"status":{"description":"ok, or no_records when a property lookup matched nothing (then a negative verdict may mean 'not found', not a confirmed negative).","type":"string"},"summary":{"description":"Provider's one-line explanation, when it sends one.","type":["string","null"]},"risk_flags":{"description":"Machine-readable flags derived only from returned fields (see per-route list).","type":"array","items":{"type":"string"}},"evidence":{"description":"Records backing the verdict (capped at 25).","type":"array","items":{"type":"object","properties":{"type":{"description":"Record kind, e.g. block, tx_block, hpd_registration, hpd_violation, rental_license, code_case.","type":"string"},"id":{"description":"Record identifier as issued by the source (block number, registration id, case number).","type":["string","null"]},"date":{"description":"Most relevant date for the record (YYYY-MM-DD, or ISO 8601 for chain data).","type":["string","null"]},"status":{"description":"Record status as reported by the source.","type":["string","null"]},"code":{"description":"Source classification code (HPD class, Minneapolis violation code, license tier).","type":["string","null"]},"detail":{"description":"Short source text for the record (violation description, inspection type).","type":["string","null"]}},"required":["type","id","date","status","code","detail"],"additionalProperties":false}},"sources":{"description":"Source dataset URLs reported by the provider; null when the provider names none.","type":["array","null"],"items":{"type":"string"}},"disclaimer":{"description":"Provider's disclaimer, passed through verbatim.","type":["string","null"]},"checked_at":{"description":"When the provider computed the result (ISO 8601, UTC).","type":["string","null"]},"upstream_tx":{"description":"Base tx hash of our payment to the provider for this call (receipt).","type":["string","null"]},"data":{"description":"Route-specific fields for base-finality-check.","type":"object","properties":{"tx":{"description":"Transaction hash checked.","type":["string","null"]},"included":{"description":"Whether the tx is in a block.","type":["boolean","null"]},"finality":{"description":"Provider finality status (e.g. safe, finalized).","type":["string","null"]},"tx_block":{"description":"Block containing the tx.","type":["integer","null"]},"confirmations":{"description":"Blocks on top of tx_block.","type":["integer","null"]},"latest_block":{"description":"Latest block at check time.","type":["integer","null"]},"safe_block":{"description":"Latest 'safe' (L1-attested) block.","type":["integer","null"]},"finalized_block":{"description":"Latest finalized block.","type":["integer","null"]}},"required":["tx","included","finality","tx_block","confirmations","latest_block","safe_block","finalized_block"],"additionalProperties":false}},"required":["ok","schema","route","provider","subject","verdict","status","summary","risk_flags","evidence","sources","disclaimer","checked_at","upstream_tx","data"],"additionalProperties":false,"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://grokzilla.shop/schemas/grokzilla.partner-resale.v1/base-finality-check.json"},"example_response":{"ok":true,"schema":"grokzilla.partner-resale.v1","route":"base-finality-check","provider":"x402-mcp.onrender.com","subject":{"kind":"base_tx","value":"0xeb43b522a462fa251ba7d6eb8f47dcc7cf0a5bc6cc53bce48cbeb685a79f480e","jurisdiction":"base"},"verdict":"safe","status":"ok","summary":"Block 52702514 is at or behind the 'safe' block (52702610) but ahead of 'finalized' (52702040) -- L1-attested, reorg risk is extremely low but not yet finalized.","risk_flags":["not_finalized"],"evidence":[{"type":"tx_block","id":"52702514","date":null,"status":"safe","code":null,"detail":null}],"sources":null,"disclaimer":null,"checked_at":"2026-10-16T23:49:48+00:00","upstream_tx":"0x50a2a223bd29271107677d756e8f72ae480cd7f02ac445908d77d3e99376361d","data":{"tx":"0xeb43b522a462fa251ba7d6eb8f47dcc7cf0a5bc6cc53bce48cbeb685a79f480e","included":true,"finality":"safe","tx_block":52702514,"confirmations":107,"latest_block":52702620,"safe_block":52702610,"finalized_block":52702040}}},{"id":"nyc-property-check","group":"partner_resale","name":"NYC property check (partner resale)","description":"Resold partner service: NYC HPD registration and housing-violation lookup for a street address.","url":"https://grokzilla.shop/api/resale/us/nyc/property-check","path":"/api/resale/us/nyc/property-check","method":"GET","price":"0.020003","price_usd":0.020003,"amount_atomic":"20003","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69","mimeType":"application/json","provider":"x402-mcp.onrender.com","resold":true,"tags":["real-estate","nyc","partner"],"input":{"type":"http","method":"GET","queryParams":{"type":"object","properties":{"address":{"type":"string","minLength":3,"description":"NYC street address incl. borough"}},"required":["address"]},"example":{"address":"225 EAST 19 STREET MANHATTAN"}},"output_schema_id":"grokzilla.partner-resale.v1","output_schema":{"description":"Normalized nyc-property-check response (grokzilla.partner-resale.v1).","type":"object","properties":{"ok":{"description":"Always true on a 200 response.","type":"boolean"},"schema":{"description":"Schema id, currently grokzilla.partner-resale.v1.","type":"string"},"route":{"description":"Our route id, e.g. base-tx-decision.","type":"string"},"provider":{"description":"Upstream data provider we resell (attribution).","type":"string"},"subject":{"description":"What was checked.","type":"object","properties":{"kind":{"description":"base_network | base_tx | street_address.","type":"string"},"value":{"description":"The subject as the provider resolved it (tx hash, normalized address); null for network-wide checks.","type":["string","null"]},"jurisdiction":{"description":"base | nyc | minneapolis.","type":"string"}},"required":["kind","value","jurisdiction"],"additionalProperties":false},"verdict":{"description":"Provider verdict, lower snake case (settle_now, safe, registered_with_violations, licensed_clean, unlicensed...).","type":["string","null"]},"status":{"description":"ok, or no_records when a property lookup matched nothing (then a negative verdict may mean 'not found', not a confirmed negative).","type":"string"},"summary":{"description":"Provider's one-line explanation, when it sends one.","type":["string","null"]},"risk_flags":{"description":"Machine-readable flags derived only from returned fields (see per-route list).","type":"array","items":{"type":"string"}},"evidence":{"description":"Records backing the verdict (capped at 25).","type":"array","items":{"type":"object","properties":{"type":{"description":"Record kind, e.g. block, tx_block, hpd_registration, hpd_violation, rental_license, code_case.","type":"string"},"id":{"description":"Record identifier as issued by the source (block number, registration id, case number).","type":["string","null"]},"date":{"description":"Most relevant date for the record (YYYY-MM-DD, or ISO 8601 for chain data).","type":["string","null"]},"status":{"description":"Record status as reported by the source.","type":["string","null"]},"code":{"description":"Source classification code (HPD class, Minneapolis violation code, license tier).","type":["string","null"]},"detail":{"description":"Short source text for the record (violation description, inspection type).","type":["string","null"]}},"required":["type","id","date","status","code","detail"],"additionalProperties":false}},"sources":{"description":"Source dataset URLs reported by the provider; null when the provider names none.","type":["array","null"],"items":{"type":"string"}},"disclaimer":{"description":"Provider's disclaimer, passed through verbatim.","type":["string","null"]},"checked_at":{"description":"When the provider computed the result (ISO 8601, UTC).","type":["string","null"]},"upstream_tx":{"description":"Base tx hash of our payment to the provider for this call (receipt).","type":["string","null"]},"data":{"description":"Route-specific fields for nyc-property-check.","type":"object","properties":{"address_queried":{"description":"Address as the provider normalized it.","type":["string","null"]},"parsed_address":{"description":"Address parts the provider parsed.","type":"object","properties":{"house_number":{"description":"House number.","type":["string","null"]},"street":{"description":"Street name.","type":["string","null"]},"borough":{"description":"NYC borough.","type":["string","null"]}},"required":["house_number","street","borough"],"additionalProperties":false},"registered":{"description":"Has an HPD multiple-dwelling registration.","type":["boolean","null"]},"registrations":{"description":"HPD registrations (no owner/agent names).","type":"array","items":{"type":"object","properties":{"registration_id":{"description":"HPD registration id.","type":["string","null"]},"building_id":{"description":"HPD building id.","type":["string","null"]},"bin":{"description":"NYC Building Identification Number.","type":["string","null"]},"block":{"description":"Tax block.","type":["string","null"]},"lot":{"description":"Tax lot.","type":["string","null"]},"borough":{"description":"Borough.","type":["string","null"]},"zip":{"description":"ZIP code.","type":["string","null"]},"last_registration_date":{"description":"Last registration date (YYYY-MM-DD).","type":["string","null"]},"registration_end_date":{"description":"Registration expiry (YYYY-MM-DD).","type":["string","null"]}},"required":["registration_id","building_id","bin","block","lot","borough","zip","last_registration_date","registration_end_date"],"additionalProperties":false}},"violations":{"description":"HPD housing-maintenance violations.","type":"object","properties":{"total":{"description":"Total violations on record.","type":["integer","null"]},"open_count":{"description":"Provider's count of not-closed violations ('openish_count').","type":["integer","null"]},"recent":{"description":"Most recent violations as returned (provider caps the list).","type":"array","items":{"type":"object","properties":{"violation_id":{"description":"HPD violation id.","type":["string","null"]},"class":{"description":"HPD class A/B/C (C = immediately hazardous).","type":["string","null"]},"inspection_date":{"description":"Inspection date (YYYY-MM-DD).","type":["string","null"]},"status":{"description":"HPD status text.","type":["string","null"]},"apartment":{"description":"Apartment, if unit-specific.","type":["string","null"]},"description":{"description":"HPD violation text.","type":["string","null"]}},"required":["violation_id","class","inspection_date","status","apartment","description"],"additionalProperties":false}}},"required":["total","open_count","recent"],"additionalProperties":false}},"required":["address_queried","parsed_address","registered","registrations","violations"],"additionalProperties":false}},"required":["ok","schema","route","provider","subject","verdict","status","summary","risk_flags","evidence","sources","disclaimer","checked_at","upstream_tx","data"],"additionalProperties":false,"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://grokzilla.shop/schemas/grokzilla.partner-resale.v1/nyc-property-check.json"},"example_response":{"ok":true,"schema":"grokzilla.partner-resale.v1","route":"nyc-property-check","provider":"x402-mcp.onrender.com","subject":{"kind":"street_address","value":"225 EAST 19 STREET MANHATTAN","jurisdiction":"nyc"},"verdict":"registered_with_violations","status":"ok","summary":null,"risk_flags":["has_violations","open_violations","class_c_in_recent"],"evidence":[{"type":"hpd_registration","id":"144626","date":"2027-09-01","status":null,"code":null,"detail":null},{"type":"hpd_violation","id":"18829417","date":"2026-04-29","status":"VIOLATION DISMISSED","code":"A","detail":"(A) § HMC:FILE ANNUAL BEDBUG REPORT IN ACCORDANCE WITH HPD RULE AS DESCRIBED ON THE BACK OF THIS NOTICE OF VIOLATION OR AS DESCRIBED ON HPD'S WEBSITE, WWW.NYC.GOV\\HPD, SEARCH BED BUGS."}],"sources":["https://data.cityofnewyork.us/resource/tesw-yqqr.json","https://data.cityofnewyork.us/resource/wvxf-dwi5.json"],"disclaimer":"Public records from New York City open data, served as-is; not legal advice. Verify with the city before acting.","checked_at":"2026-10-16T23:49:58+00:00","upstream_tx":"0xe69884d253d6618bd4e9f99695b60239618a8275b3dbf1508e87e3926c71943f","data":{"address_queried":"225 EAST 19 STREET MANHATTAN","parsed_address":{"house_number":"225","street":"EAST 19 STREET","borough":"MANHATTAN"},"registered":true,"registrations":[{"registration_id":"144626","building_id":"12374","bin":"1090879","block":"900","lot":"7501","borough":"MANHATTAN","zip":"10003","last_registration_date":"2026-07-30","registration_end_date":"2027-09-01"}],"violations":{"total":26,"open_count":15,"recent":[{"violation_id":"18829417","class":"A","inspection_date":"2026-04-29","status":"VIOLATION DISMISSED","apartment":null,"description":"(A) § HMC:FILE ANNUAL BEDBUG REPORT IN ACCORDANCE WITH HPD RULE AS DESCRIBED ON THE BACK OF THIS NOTICE OF VIOLATION OR AS DESCRIBED ON HPD'S WEBSITE, WWW.NYC.GOV\\HPD, SEARCH BED BUGS."},{"violation_id":"17944892","class":"A","inspection_date":"2025-06-04","status":"VIOLATION DISMISSED","apartment":null,"description":"(A) § HMC:FILE ANNUAL BEDBUG REPORT IN ACCORDANCE WITH HPD RULE AS DESCRIBED ON THE BACK OF THIS NOTICE OF VIOLATION OR AS DESCRIBED ON HPD'S WEBSITE, WWW.NYC.GOV\\HPD, SEARCH BED BUGS."}]}}}},{"id":"mn-property-check","group":"partner_resale","name":"Minneapolis property check (partner resale)","description":"Resold partner service: Minneapolis rental-license and code-enforcement case lookup for a street address.","url":"https://grokzilla.shop/api/resale/mn/property-check","path":"/api/resale/mn/property-check","method":"GET","price":"0.020004","price_usd":0.020004,"amount_atomic":"20004","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69","mimeType":"application/json","provider":"x402-mcp.onrender.com","resold":true,"tags":["real-estate","minneapolis","partner"],"input":{"type":"http","method":"GET","queryParams":{"type":"object","properties":{"address":{"type":"string","minLength":3,"description":"Minneapolis street address"}},"required":["address"]},"example":{"address":"1700 Penn Ave N"}},"output_schema_id":"grokzilla.partner-resale.v1","output_schema":{"description":"Normalized mn-property-check response (grokzilla.partner-resale.v1).","type":"object","properties":{"ok":{"description":"Always true on a 200 response.","type":"boolean"},"schema":{"description":"Schema id, currently grokzilla.partner-resale.v1.","type":"string"},"route":{"description":"Our route id, e.g. base-tx-decision.","type":"string"},"provider":{"description":"Upstream data provider we resell (attribution).","type":"string"},"subject":{"description":"What was checked.","type":"object","properties":{"kind":{"description":"base_network | base_tx | street_address.","type":"string"},"value":{"description":"The subject as the provider resolved it (tx hash, normalized address); null for network-wide checks.","type":["string","null"]},"jurisdiction":{"description":"base | nyc | minneapolis.","type":"string"}},"required":["kind","value","jurisdiction"],"additionalProperties":false},"verdict":{"description":"Provider verdict, lower snake case (settle_now, safe, registered_with_violations, licensed_clean, unlicensed...).","type":["string","null"]},"status":{"description":"ok, or no_records when a property lookup matched nothing (then a negative verdict may mean 'not found', not a confirmed negative).","type":"string"},"summary":{"description":"Provider's one-line explanation, when it sends one.","type":["string","null"]},"risk_flags":{"description":"Machine-readable flags derived only from returned fields (see per-route list).","type":"array","items":{"type":"string"}},"evidence":{"description":"Records backing the verdict (capped at 25).","type":"array","items":{"type":"object","properties":{"type":{"description":"Record kind, e.g. block, tx_block, hpd_registration, hpd_violation, rental_license, code_case.","type":"string"},"id":{"description":"Record identifier as issued by the source (block number, registration id, case number).","type":["string","null"]},"date":{"description":"Most relevant date for the record (YYYY-MM-DD, or ISO 8601 for chain data).","type":["string","null"]},"status":{"description":"Record status as reported by the source.","type":["string","null"]},"code":{"description":"Source classification code (HPD class, Minneapolis violation code, license tier).","type":["string","null"]},"detail":{"description":"Short source text for the record (violation description, inspection type).","type":["string","null"]}},"required":["type","id","date","status","code","detail"],"additionalProperties":false}},"sources":{"description":"Source dataset URLs reported by the provider; null when the provider names none.","type":["array","null"],"items":{"type":"string"}},"disclaimer":{"description":"Provider's disclaimer, passed through verbatim.","type":["string","null"]},"checked_at":{"description":"When the provider computed the result (ISO 8601, UTC).","type":["string","null"]},"upstream_tx":{"description":"Base tx hash of our payment to the provider for this call (receipt).","type":["string","null"]},"data":{"description":"Route-specific fields for mn-property-check.","type":"object","properties":{"address_queried":{"description":"Address as queried.","type":["string","null"]},"licensed":{"description":"Has an active Minneapolis rental license.","type":["boolean","null"]},"rental_licenses":{"description":"Rental licenses (owner names removed).","type":"array","items":{"type":"object","properties":{"license_number":{"description":"License number.","type":["string","null"]},"status":{"description":"License status.","type":["string","null"]},"tier":{"description":"Minneapolis license tier.","type":["string","null"]},"category":{"description":"License category code.","type":["string","null"]},"licensed_units":{"description":"Licensed units.","type":["integer","null"]},"issue_date":{"description":"Issue date (YYYY-MM-DD).","type":["string","null"]},"expiration_date":{"description":"Expiry (YYYY-MM-DD).","type":["string","null"]},"ward":{"description":"City ward.","type":["string","null"]},"neighborhood":{"description":"Neighborhood.","type":["string","null"]},"community":{"description":"Community.","type":["string","null"]},"short_term_rental":{"description":"Short-term rental flag.","type":["boolean","null"]},"apn":{"description":"Parcel number.","type":["string","null"]},"address":{"description":"Licensed address.","type":["string","null"]}},"required":["license_number","status","tier","category","licensed_units","issue_date","expiration_date","ward","neighborhood","community","short_term_rental","apn","address"],"additionalProperties":false}},"violations":{"description":"Code-enforcement cases.","type":"object","properties":{"total":{"description":"Total violation cases.","type":["integer","null"]},"open":{"description":"Open cases.","type":["integer","null"]},"abated":{"description":"Abated cases.","type":["integer","null"]},"recent":{"description":"Most recent cases as returned.","type":"array","items":{"type":"object","properties":{"case_number":{"description":"Case number.","type":["string","null"]},"case_type":{"description":"Case type.","type":["string","null"]},"case_group":{"description":"Case group.","type":["string","null"]},"case_status":{"description":"Case status.","type":["string","null"]},"inspection_result":{"description":"Inspection result.","type":["string","null"]},"inspection_type":{"description":"What was cited.","type":["string","null"]},"violation_code":{"description":"Violation code.","type":["string","null"]},"start_date":{"description":"Opened (YYYY-MM-DD).","type":["string","null"]},"completed_date":{"description":"Closed (YYYY-MM-DD).","type":["string","null"]}},"required":["case_number","case_type","case_group","case_status","inspection_result","inspection_type","violation_code","start_date","completed_date"],"additionalProperties":false}}},"required":["total","open","abated","recent"],"additionalProperties":false},"condemned_or_boarded":{"description":"Condemned/boarded registry.","type":"object","properties":{"flagged":{"description":"On the condemned/boarded list.","type":["boolean","null"]},"record_count":{"description":"Number of registry records returned.","type":["integer","null"]}},"required":["flagged","record_count"],"additionalProperties":false}},"required":["address_queried","licensed","rental_licenses","violations","condemned_or_boarded"],"additionalProperties":false}},"required":["ok","schema","route","provider","subject","verdict","status","summary","risk_flags","evidence","sources","disclaimer","checked_at","upstream_tx","data"],"additionalProperties":false,"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://grokzilla.shop/schemas/grokzilla.partner-resale.v1/mn-property-check.json"},"example_response":{"ok":true,"schema":"grokzilla.partner-resale.v1","route":"mn-property-check","provider":"x402-mcp.onrender.com","subject":{"kind":"street_address","value":"1700 Penn Ave N","jurisdiction":"minneapolis"},"verdict":"licensed_clean","status":"ok","summary":null,"risk_flags":["has_violations"],"evidence":[{"type":"rental_license","id":"LIC394217","date":"2027-03-01","status":"Active","code":"Tier 1","detail":null},{"type":"code_case","id":"CE1284448","date":"2022-03-02","status":"Closed","code":"HIS158","detail":"Install, Replace Or Repair Handrails"}],"sources":["https://services.arcgis.com/afSMGVsC7QlRK1kZ/ArcGIS/rest/services/Active_Rental_Licenses/FeatureServer/0","https://services.arcgis.com/afSMGVsC7QlRK1kZ/ArcGIS/rest/services/CaseViolations/FeatureServer/0","https://services.arcgis.com/afSMGVsC7QlRK1kZ/ArcGIS/rest/services/Condemned_by_Boarding/FeatureServer/0"],"disclaimer":"Public records from City of Minneapolis Open Data, served as-is; not legal advice. Verify with the city before acting.","checked_at":"2026-10-16T23:44:15+00:00","upstream_tx":"0x6501e1bd0c6c3491563b65e9a91c45d2820db1ff12474380bf316b508af7ae67","data":{"address_queried":"1700 Penn Ave N","licensed":true,"rental_licenses":[{"license_number":"LIC394217","status":"Active","tier":"Tier 1","category":"CONV","licensed_units":1,"issue_date":"2021-05-24","expiration_date":"2027-03-01","ward":"5","neighborhood":"Willard - Hay","community":"Near North","short_term_rental":false,"apn":"1602924320087","address":"1700 PENN AVE N"}],"violations":{"total":12,"open":0,"abated":12,"recent":[{"case_number":"CE1284448","case_type":"HIS","case_group":"HISRENTAL","case_status":"Closed","inspection_result":"Abate","inspection_type":"Install, Replace Or Repair Handrails","violation_code":"HIS158","start_date":"2022-03-02","completed_date":"2022-12-06"},{"case_number":"CE1284447","case_type":"HIS","case_group":"HISRENTAL","case_status":"Closed","inspection_result":"Abate","inspection_type":"Windows Must Be Operational","violation_code":"HIS713","start_date":"2022-03-02","completed_date":"2022-03-02"}]},"condemned_or_boarded":{"flagged":false,"record_count":0}}}}]},"kits":{"group":"kits","description":"One-time downloadable kits, paid per purchase via x402. License: No-Resale (/kits/license).","count":1,"kits":[{"id":"domain-to-vercel","group":"kits","name":"Domain-to-Vercel MCP kit (bring your own keys)","description":"Two local MCP servers that point a GoDaddy domain at a Vercel project in one call: execute_task(\"{connect_domain; example.com}\") sets A @ + CNAME www, adds the domain to your Vercel project and reads the records back. Runs on your machine with your own GoDaddy and Vercel keys; nothing is hosted and we never see your keys.","url":"https://grokzilla.shop/api/kits/domain-to-vercel/buy","path":"/api/kits/domain-to-vercel/buy","method":"POST","page":"https://grokzilla.shop/kits/domain-to-vercel","price":"5","price_usd":5.0,"amount_atomic":"5000000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0xc22f9CAEBAc37fE72D5142f35f21f6696Ea9Ef69","mimeType":"application/json","delivery":{"type":"signed_download_link","expires_in_seconds":900,"max_downloads":3,"sha256":"92fc1f5ace10fb9130e3c6b0e8d3481ba236c5a77af66e37010684d8785828a0","bytes":15524},"license":{"name":"No-Resale License","url":"https://grokzilla.shop/kits/license"}}]}}