{"audit":{"version":"1.4","generated_at":"2026-08-19T17:45:52.911721+00:00","generated_by":"Agenstry","report_url":"https://agenstry.com/agents/unratified.org","methodology_url":"https://agenstry.com/methodology","verifier_jwks_url":"https://agenstry.com/.well-known/jwks.json","subject":{"domain":"unratified.org","name":"unratified-agent","url":"https://unratified.org/.well-known/agent-card.json"}},"identity":{"provider":{"organization":"Safety Quotient Lab","url":"https://github.com/safety-quotient-lab"},"registry_verification":null,"signature":{"signed":false,"signature_valid":null}},"protocol":{"version":"1.0.0","supports_streaming":false,"supports_push_notifications":false},"operational":{"live_state":"no_url","live_responds":null,"last_status_code":200,"last_elapsed_ms":58,"last_error":null},"track_record":{"first_seen":"2026-05-14T12:46:33.026298+00:00","last_checked":"2026-08-19T13:40:13.913698+00:00","last_seen_ok":"2026-08-19T13:40:13.913698+00:00","checks_total":15,"checks_ok":4,"uptime_pct":26.7,"archived":false,"archived_reason":null},"conformance":{"score":43,"grade":"D","summary":"D-grade: significant issues, auth-gated, partially broken, or stale.","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":8,"max_points":10,"status":"partial","detail":"Declares A2A 1.0.0 but missing supportedInterfaces[] (required in v1.0, update your card to reach 10/10)."},{"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":4,"max_points":15,"status":"fail","detail":"4/15 probes succeeded (27% uptime)."},{"key":"skills","label":"Skill declaration","points":10,"max_points":10,"status":"pass","detail":"Declares 8 skills with structured metadata."},{"key":"verified_identity","label":"Verified Identity","points":5,"max_points":10,"status":"partial","detail":"Provider declared: Safety Quotient Lab (https://github.com/safety-quotient-lab). 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":4,"max_points":5,"status":"pass","detail":"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":[{"field":"security","problem":"Input should be a valid list","action":"dropped","detail":"this field was not indexed"}],"clean":false,"source_url":"https://unratified.org/.well-known/agent-card.json"},"skills":[{"id":"icescr-analysis","name":"ICESCR Article Analysis","description":"Analyze text, URLs, or policy content against specific ICESCR articles (1–15). Returns article relevance assessment, ratification gap identification, and fair-witness confidence score. Uses consensus-or-parsimony discriminator documented at unratified.org/.well-known/fair-witness.json.","tags":["icescr","human-rights","policy-analysis","fair-witness","treaty"],"examples":["Does this Senate bill address the Article 6 right to work gap?","Score this op-ed against ICESCR Article 12 (health) obligations.","What ratification gap does this AI labor displacement story expose?"],"inputModes":["text/plain","application/json"],"outputModes":["application/json","text/markdown"]},{"id":"voter-guide-generation","name":"Voter Guide Generation","description":"Generate plain-language voter guides on ICESCR provisions, ratification mechanics, and advocacy actions. Targets constituents without legal or policy backgrounds. Outputs Markdown with frontmatter compatible with blog.unratified.org post spec.","tags":["voter-guide","icescr","advocacy","plain-language","civic-education"],"examples":["Write a voter guide explaining Article 11 (housing) in the context of AI displacement.","Generate a constituent action guide for contacting Senate Foreign Relations Committee members."],"inputModes":["text/plain","application/json"],"outputModes":["text/markdown"]},{"id":"blog-publishing","name":"Blog Post Publishing","description":"Publish posts to blog.unratified.org via git pull request. Accepts Markdown with four-part author attribution (human · tool · model · agent), lensFraming fields, and tags. Post spec: https://blog.unratified.org/.well-known/blog-spec.json. voter-guide tagged posts appear in the Google News feed (rss-news.xml).","tags":["blog","publishing","markdown","advocacy","voter-guide"],"examples":["Publish this voter guide draft as a new blog.unratified.org post.","Add this ICESCR analysis to the blog under the methodology tag."],"inputModes":["text/markdown","application/json"],"outputModes":["application/json"]},{"id":"campaign-monitoring","name":"Bluesky Campaign Monitoring","description":"Return current @unratified.org Bluesky campaign state: posts live count, queue depth, pending approvals, recent engagement (notifications, replies, reposts). Data sourced from scripts/bsky-*.mjs in this repo.","tags":["bluesky","campaign","monitoring","at-protocol","social"],"examples":["How many posts sit in the @unratified.org queue?","What engagement has the #RatifyICESCR campaign received?","What unread notifications await @unratified.org?"],"inputModes":["text/plain"],"outputModes":["application/json"]},{"id":"generate-icescr-overlay","name":"ICESCR Overlay Generation","description":"Generate ICESCR article overlay data for observatory-agent UDHR story pages. Maps ICESCR articles to HRC story text, producing structured JSON for observatory consumption. Verified at SETL 0.0 in icescr-framing session (turn 7). Implements fetchArticleScores() + generateIcescrOverlay(). Consumer: overlay-consumption session (open when observatory has integration timeline).","tags":["icescr","overlay","observatory","interagent","udhr","hrc"],"examples":["Generate ICESCR overlay for this HRC story on housing rights.","Map ICESCR articles to observatory story text for Article 11 coverage."],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"bluesky-posting","name":"Bluesky Post & Thread","description":"Queue posts to @unratified.org via unratified-bot CLI. Supports single posts (≤300 graphemes), reply chains, and full threads. Rich text facets (mentions, hashtags, links) resolved automatically. Posts require human director approval before going live.","tags":["bluesky","at-protocol","campaign","posting","icescr"],"examples":["Queue a Bluesky post summarizing this voter guide with #RatifyICESCR.","Thread the five key ICESCR articles as a reply chain."],"inputModes":["text/plain","application/json"],"outputModes":["application/json"]},{"id":"interagent-mesh-daemon","name":"Interagent Mesh Daemon","description":"Webhook-driven mesh daemon that processes GitHub PR events, runs scheduled syncs and work discovery, and manages budget-controlled prompt execution across the agent mesh. Accepts POST /trigger for manual prompt invocation. Provides GET /health, /activity, /sessions endpoints. Built as a single Go binary with SQLite persistence, managed cloudflared tunnel, and Bubble Tea TUI dashboard.","tags":["interagent","daemon","webhook","mesh","sync","scheduling"],"examples":["Trigger a /sync on unratified repo.","Check daemon health and budget status.","List recent activity events from the mesh daemon."],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"activitypub-publishing","name":"ActivityPub Publishing","description":"Publish content to the fediverse via ActivityPub. Manages two actors: @blog@unratified.org and @observatory@unratified.org. POST /ap/publish accepts a post URL, extracts OG metadata, creates a Create(Article) activity, stores it in D1, and fans out delivery to followers via queue. Bearer token auth required.","tags":["activitypub","fediverse","publishing","federation","mastodon"],"examples":["Publish this blog post URL to the fediverse.","Check the @observatory@unratified.org outbox."],"inputModes":["application/json"],"outputModes":["application/json"]}],"provenance":[{"source":"github_code","first_seen":"2026-05-14T12:46:33.026298+00:00"},{"source":"resalvage-20260817","first_seen":"2026-08-17T17:37:02.956232+00:00"},{"source":"resalvage-20260817b","first_seen":"2026-08-17T18:13:47.434708+00:00"},{"source":"recrawl_hot","first_seen":"2026-08-18T18:49:25.813056+00:00"}],"recent_probes":[{"fetched_at":"2026-08-19T13:40:13.913698+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":58,"live_responds":null},{"fetched_at":"2026-08-18T18:49:25.813056+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":77,"live_responds":null},{"fetched_at":"2026-08-17T18:13:47.434708+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":44,"live_responds":null},{"fetched_at":"2026-08-17T17:37:02.956232+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":96,"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-08-19T17:45:52.917848+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/unratified.org/evidence","dispute_url":"https://agenstry.com/agents/unratified.org/dispute"},"verification_history":[],"signatures":[{"protected":"eyJhbGciOiJFUzI1NiIsImprdSI6Imh0dHBzOi8vYWdlbnN0cnkuY29tLy53ZWxsLWtub3duL2p3a3MuanNvbiIsImtpZCI6ImFnZW50ZmluZGVyLWVzMjU2LTEiLCJ0eXAiOiJKT1NFIn0","signature":"ET_8XD2mcvJCPGauu5XFgtFsO3TkJpcIUYeBb8UxbRBk-XGE8o_G_ACmPsW5tHFqhXXxwK_fNvW0pB6HrwW5iQ"}]}