{"audit":{"version":"1.5","generated_at":"2026-10-02T14:14:05.012654+00:00","generated_by":"Agenstry","report_url":"https://agenstry.com/agents/nano.stacknodehost.com","methodology_url":"https://agenstry.com/methodology","verifier_jwks_url":"https://agenstry.com/.well-known/jwks.json","subject":{"domain":"nano.stacknodehost.com","name":"NanoTools","url":"https://nano.stacknodehost.com/.well-known/agent-card.json"}},"identity":{"provider":{"organization":"NanoTools","url":"https://nano.stacknodehost.com"},"registry_verification":null,"signature":{"signed":false,"signature_valid":null}},"protocol":{"version":"0.2.9","supports_streaming":false,"supports_push_notifications":false},"operational":{"live_state":"no_url","live_responds":null,"last_status_code":200,"last_elapsed_ms":31,"last_error":null},"track_record":{"first_seen":"2026-10-02T11:25:30.129637+00:00","last_checked":"2026-10-02T11:25:30.129637+00:00","last_seen_ok":"2026-10-02T11:25:30.129637+00:00","checks_total":1,"checks_ok":1,"uptime_pct":100.0,"uptime_window_days":30,"uptime_probes":1,"archived":false,"archived_reason":null},"conformance":{"score":37,"grade":"F","summary":"F-grade: card is reachable but fails most operational signals.","criteria":[{"key":"valid_card","label":"Valid AgentCard","points":10,"max_points":10,"status":"pass","detail":"Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification)."},{"key":"live_responds","label":"Live JSON-RPC","points":2,"max_points":25,"status":"fail","detail":"Card is valid but has no .url field."},{"key":"protocol_version","label":"Protocol version","points":5,"max_points":10,"status":"partial","detail":"Declares pre-1.0 A2A 0.2.9 (Google preview). Upgrade to v1.x for full points."},{"key":"signature","label":"JWS signature","points":0,"max_points":10,"status":"info","detail":"Card is unsigned (most published agents are)."},{"key":"uptime","label":"Uptime track record","points":0,"max_points":15,"status":"info","detail":"Only 1 probe so far, need ≥5 for an uptime grade."},{"key":"skills","label":"Skill declaration","points":10,"max_points":10,"status":"pass","detail":"Declares 45 skills with structured metadata."},{"key":"verified_identity","label":"Verified Identity","points":5,"max_points":10,"status":"partial","detail":"Provider declared: NanoTools (https://nano.stacknodehost.com). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit."},{"key":"freshness","label":"Freshness + modern flags","points":5,"max_points":5,"status":"pass","detail":"declares 1 modern capability flag(s) (x402); seen in upstream source within 0d"},{"key":"security","label":"Security declaration","points":0,"max_points":5,"status":"info","detail":"Neither securitySchemes nor securityRequirements declared — how to authenticate is unstated."}]},"card_read":{"findings":[],"clean":true,"source_url":"https://nano.stacknodehost.com/.well-known/agent-card.json"},"skills":[{"id":"base64","name":"base64","description":"Base64 encode or decode. ?op=enc|dec&data=... Tolerant to missing padding.","tags":["base64","encode","decode","encoding"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"color-convert","name":"color convert","description":"Convert colors between hex, rgb, hsl. ?color=#ff0000 or rgb(255,0,0)","tags":["color","hex","rgb","hsl","convert"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"cron-parse","name":"cron parse","description":"Explain a cron expression: next 3 run times in UTC. ?expr=*/5 * * * *","tags":["cron","schedule","crontab","parser"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"csv2json","name":"csv2json","description":"Convert CSV to JSON array. ?data=<csv urlencoded>&delim=,","tags":["csv","json","convert","data"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"diff","name":"diff","description":"Unified diff of two texts with changed line count. ?a=<text>&b=<text>","tags":["diff","compare","texts","changes"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"dns","name":"dns","description":"DNS lookup: A, AAAA, MX, TXT, NS, CNAME records for a domain. ?name=example.com&type=A","tags":["dns","lookup","domain","mx","nameserver"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"hash-multi","name":"hash multi","description":"MD5, SHA-1, SHA-256, SHA-512 in one call. ?text=...","tags":["hash","md5","sha1","sha256","checksum"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"html-entities","name":"html entities","description":"Escape or unescape HTML entities. ?op=enc|dec&data=<text>","tags":["html","entities","escape","unescape"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"json","name":"json","description":"Validate + pretty-print JSON. ?data={...} (urlencoded).","tags":["json","validate","format","pretty"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"jwt-decode","name":"jwt decode","description":"Decode a JWT header and payload WITHOUT signature verification. ?token=<jwt>","tags":["jwt","token","decode","auth","claims"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"lorem","name":"lorem","description":"Lorem ipsum placeholder generator. ?paras=3 or ?words=50","tags":["lorem","ipsum","placeholder","text generator"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"markdown2html","name":"markdown2html","description":"Convert Markdown to HTML (tables, fenced code). ?text=<markdown urlencoded>","tags":["markdown","html","convert","md"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"password","name":"password","description":"Secure random password. ?len=16&symbols=1","tags":["password","generator","secure","random"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"qr","name":"qr","description":"QR code generator. ?data=<text>&size=256 -> PNG as base64 in JSON.","tags":["qr","qrcode","generator","image","encode"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"random","name":"random","description":"Cryptographically secure random number. ?min=&max= (ints, default 0..100).","tags":["random","rng","number","dice","lottery"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"regex","name":"regex","description":"Test a regex against text: matches with groups and positions. ?pattern=<re>&text=<text>&flags=i","tags":["regex","regexp","match","test","pattern"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"sha256","name":"sha256","description":"SHA-256 and SHA-512 digests for any text (?text=). Deterministic, local, stable JSON.","tags":["hash","sha256","sha512","checksum","digest"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"slug","name":"slug","description":"URL slug from any text. ?text=Hello%20World -> hello-world","tags":["slug","url","seo","text"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"text-stats","name":"text stats","description":"Text statistics: words, chars, sentences, reading time. ?text=...","tags":["text","words","count","statistics","seo"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"timestamp","name":"timestamp","description":"Unix timestamp <-> ISO8601 both ways. ?ts=1690000000 or ?iso=2026-01-01T00:00:00Z","tags":["timestamp","unix","epoch","date","time"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"toml2json","name":"toml2json","description":"Convert TOML to JSON. ?data=<toml urlencoded>","tags":["toml","json","convert","config"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"unit-convert","name":"unit convert","description":"Convert units: length, weight, volume, data size, temperature. ?value=100&from=cm&to=inch","tags":["unit","convert","length","weight","temperature"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"urlcode","name":"urlcode","description":"URL encode/decode. ?op=enc|dec&data=...","tags":["url","encode","decode","percent"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"uuid","name":"uuid","description":"Generate UUIDv4 (and optional count ?n= up to 100).","tags":["uuid","guid","identifier","unique id"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"yaml2json","name":"yaml2json","description":"Convert YAML to JSON. ?data=<yaml urlencoded>","tags":["yaml","json","convert","config"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"fx-rates","name":"fx rates","description":"ECB reference currency exchange rates. ?base=USD&symbols=EUR,GBP or ?date=2026-01-15","tags":["currency","exchange rate","fx","forex","ecb"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"ip-info","name":"ip info","description":"IP geolocation and network info: country, city, ASN/org, timezone. ?ip=1.2.3.4","tags":["ip","geolocation","asn","network","lookup"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"rss","name":"rss","description":"Parse any RSS or Atom feed into clean JSON items. ?url=<feed>&limit=10","tags":["rss","atom","feed","news","parse"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"search","name":"search","description":"Google web search. ?q=query&num=5 returns organic results with title, link, snippet.","tags":["search","google","web","serp","find"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"weather","name":"weather","description":"Current weather + 7-day forecast by city name or lat/lon (open-meteo, no key needed). ?city=Moscow","tags":["weather","forecast","temperature","climate"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"readability","name":"readability","description":"Text readability: Flesch score, level, avg sentence length, keyword density, top words. ?text=<text>&keyword=","tags":["readability","flesch","seo","content","keyword density"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"scrape","name":"scrape","description":"Fetch a web page and return clean readable text. ?url=https://example.com","tags":["scrape","extract","web page","reader","crawl"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"whois","name":"whois","description":"Domain registration data via RDAP: registrar, created/updated/expires, status, nameservers. ?domain=example.com","tags":["whois","domain","rdap","registrar","expiry"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"robots-audit","name":"robots audit","description":"Audit robots.txt + sitemap.xml of a site: rules, sitemaps listed, sitemap reachable, URL counts. ?url=<site root>","tags":["robots","sitemap","seo","audit","crawl"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"seo-meta","name":"seo meta","description":"SEO snapshot of a page: title, description, OG/Twitter meta, h1s, h2 count, canonical, robots meta, lang, word count. ?url=","tags":["seo","meta","opengraph","title","description"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"serp-google","name":"serp google","description":"Google SERP: organic results with position, ads count, related searches. ?q=&num=5&gl=us","tags":["serp","google","search","ranking","keywords"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"serp-yandex","name":"serp yandex","description":"Yandex SERP for RU-market keyword research (region by ?lr=). ?q=&lr=213","tags":["yandex","serp","search","russian","ranking"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"og-image","name":"og image","description":"Generate an Open Graph image 1200x630 from title/subtitle/theme. ?title=&subtitle=&theme=indigo|dark|green|red|blue","tags":["og image","open graph","social preview","banner generator","image"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"render-text","name":"render text","description":"Render a JS-heavy page in a real browser and return the visible text. ?url=","tags":["render","javascript","spa","scrape","browser"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"pdf","name":"pdf","description":"Render any page to PDF (A4, print background) via headless Chrome. ?url=","tags":["pdf","convert","print","browser","render"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"screenshot","name":"screenshot","description":"Real browser screenshot of any page as PNG (base64), JS rendered. ?url=&width=1280&height=800&full=0|1","tags":["screenshot","capture","browser","render","image"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"trends","name":"trends","description":"Google Trends interest over time for a keyword (weekly points, peak). ?q=casino&geo=US&time=12-m|5-y","tags":["google trends","interest over time","keyword research","search trends","seo"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"trends-region","name":"trends region","description":"Google Trends interest by region/country for a keyword. ?q=casino&geo=&time=12-m","tags":["google trends","interest by region","geo","keyword research","seo"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"trends-related","name":"trends related","description":"Google Trends related queries: top and rising search terms for a keyword. ?q=casino&geo=&time=12-m","tags":["google trends","related queries","keyword ideas","search trends","seo"],"examples":[],"inputModes":[],"outputModes":[]},{"id":"seo-report","name":"seo report","description":"Full SEO audit report of a domain: health score 0-100, prioritized issues list, title/description/H1/canonical, robots.txt review, word count. Returns ready markdown report. ?url=https://example.com","tags":["seo report","site audit","seo audit","on-page seo","domain analysis"],"examples":[],"inputModes":[],"outputModes":[]}],"provenance":[{"source":"smithery","first_seen":"2026-10-02T11:25:30.129637+00:00"}],"recent_probes":[{"fetched_at":"2026-10-02T11:25:30.129637+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":31,"live_responds":null}],"catalog_attestation":null,"operator_revenue_evidence":{"evidence_class":"operator_submitted","authenticity":{"rung":"no_operator_evidence","rank":0,"why":"No verifiable operator evidence has been submitted for this agent.","thresholds":{"min_independent_payers":3,"min_verified_usd":25.0},"engine_table":"agent_authenticity","merge_rule":"max(existing_rank, rank)"},"metric_metadata":{"provenance":"operator_submitted_evidence","confidence":"attested","coverage":{"numerator":0},"as_of":"2026-10-02T14:14:05.034866+00:00","definition":"Revenue proofs submitted by the verified owner and re-checked by Agenstry against the settlement chain or the operator's own Stripe account. Only independently confirmed proofs are counted."},"counts":{"retained":0,"verified":0,"unverifiable":0},"verified":{"gross_usd":0.0,"transactions":0,"independent_payers":0},"detail_url":"https://agenstry.com/api/agents/nano.stacknodehost.com/evidence","dispute_url":"https://agenstry.com/agents/nano.stacknodehost.com/dispute"},"verification_history":[]}