{"audit":{"version":"1.3","generated_at":"2026-05-22T23:46:59.085970+00:00","generated_by":"Agenstry","report_url":"https://agenstry.com/agents/observatory.unratified.org","methodology_url":"https://agenstry.com/methodology","verifier_jwks_url":"https://agenstry.com/.well-known/jwks.json","subject":{"domain":"observatory.unratified.org","name":"Human Rights Observatory","url":"https://observatory.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":"0.3.0","supports_streaming":false,"supports_push_notifications":false},"operational":{"live_state":"endpoint_404","live_responds":false,"last_status_code":200,"last_elapsed_ms":47,"last_error":null},"track_record":{"first_seen":"2026-05-14T12:49:05.146624+00:00","last_checked":"2026-05-22T14:03:14.058429+00:00","last_seen_ok":"2026-05-22T14:03:14.058429+00:00","checks_total":13,"checks_ok":13,"uptime_pct":100.0,"archived":false,"archived_reason":null},"conformance":{"score":49,"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":"Schema-validated A2A AgentCard returned by the well-known endpoint."},{"key":"live_responds","label":"Live JSON-RPC","points":0,"max_points":25,"status":"fail","detail":"Card declares a URL but that URL returns 404."},{"key":"protocol_version","label":"Protocol version","points":5,"max_points":10,"status":"partial","detail":"Declares pre-1.0 A2A 0.3.0 (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":15,"max_points":15,"status":"pass","detail":"13/13 probes succeeded (100% 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":"No securitySchemes declared (common for open agents — not penalised)."}]},"skills":[{"id":"query-corpus-signals","name":"Query Corpus Signals","description":"Returns corpus-wide aggregate signals: transparency disclosure rates (author identified, conflicts, funding), accessibility (jargon density, assumed knowledge), persuasion technique distribution, temporal framing (retrospective/present/prospective), and overall HRCB signal overview.","tags":["human-rights","transparency","accessibility","corpus-analytics","udhr"],"examples":["What percentage of HN stories identify their author?","How much persuasion content appears in HN tech coverage?","What is the jargon density distribution across evaluated stories?"],"inputModes":["text/plain"],"outputModes":["application/json"],"rateLimit":"200 requests/hour per IP"},{"id":"query-stories","name":"Query Evaluated Stories","description":"Returns Hacker News stories with HRCB scores. Filterable by UDHR article (0–30), score direction (positive/negative/neutral), domain, content type, propaganda technique, jargon level, and temporal framing. Sorted by HRCB score, HN score, or recency.","tags":["human-rights","hacker-news","hrcb-scores","udhr-provisions","filtering"],"examples":["Show me the most privacy-negative stories this week","Which stories touch Article 19 (freedom of expression)?","Find stories flagged for propaganda techniques"],"inputModes":["text/plain"],"outputModes":["application/json"],"rateLimit":"200 requests/hour per IP"},{"id":"query-domain-profile","name":"Query Domain Rights Profile","description":"Returns a domain's aggregate HRCB score, signal fingerprint (transparency, accessibility, persuasion), editorial character, and SETL tension level across all evaluated stories from that domain.","tags":["human-rights","domain-analysis","media-bias","source-intelligence","udhr"],"examples":["What is github.com's human rights alignment score?","Which news domains score highest on transparency signals?","Does techcrunch.com say one thing and do another (SETL)?"],"inputModes":["text/plain"],"outputModes":["application/json"],"rateLimit":"200 requests/hour per IP"},{"id":"query-udhr-article-rankings","name":"Query UDHR Article Rankings","description":"Returns all 31 UDHR provisions with per-article aggregate scores — editorial/structural channel averages, story counts, trigger counts, evidence distribution, SETL tension, and standard deviation. GET /api/v1/articles. Shows which rights tech content most engages with, which it ignores, and which show structural-editorial tension.","tags":["human-rights","udhr","rights-ranking","corpus-analytics","pedagogy"],"examples":["Which UDHR articles appear most in tech news?","What rights does HN content lean most negative on?","Which provisions show the most say-vs-do tension?"],"inputModes":["text/plain"],"outputModes":["application/json"],"endpoint":"/api/v1/articles","rateLimit":"200 requests/hour per IP"},{"id":"get-domain-badge","name":"Get Domain Rights Badge","description":"Returns an embeddable SVG badge showing a domain's HRCB score with color-coded scale. Suitable for README files, websites, and reports.","tags":["human-rights","badge","svg","domain-score"],"examples":["Get a rights score badge for anthropic.com","Embed an HRCB badge for my site"],"inputModes":["text/plain"],"outputModes":["image/svg+xml"],"rateLimit":"200 requests/hour per IP"},{"id":"receive-agent-proposals","name":"Receive Inter-Agent Proposals","description":"Observatory publishes pending proposals for data integration and cross-site collaboration via /.well-known/agent-inbox.json. Other agents (e.g., unratified.org) read and act on these at session start. Proposals follow status lifecycle: pending → accepted → implemented.","tags":["inter-agent","proposals","collaboration","a2a"],"examples":["Check what data integrations the observatory is proposing","Has the observatory proposed any new signal integrations?"],"inputModes":["application/json"],"outputModes":["application/json"],"rateLimit":"no limit (static file)"},{"id":"get-methodology","name":"Get Evaluation Methodology","description":"Returns the complete HRCB evaluation methodology as structured JSON — scoring dimensions, content type weights, evidence strength caps, SETL formula, consensus weighting, propaganda technique tiers, Fair Witness rules, and classification ranges. Available at /api/v1/methodology or /.well-known/methodology.json.","tags":["methodology","scoring","transparency","machine-readable"],"examples":["What weights does the observatory use for editorial vs structural scores?","How does the SETL tension formula work?","What are the propaganda technique tiers and weights?"],"inputModes":["text/plain"],"outputModes":["application/json"],"rateLimit":"no limit (static/prerendered)"},{"id":"query-psq-signals","name":"Query Psychological Safety Quotient","description":"Returns PSQ (Psychological Safety Quotient) scores — an independent signal measuring reader psychoemotional safety on a 0-10 scale. Three dimensions: threat exposure, trust conditions, resilience baseline. Available per story via /api/v1/story/{id} (psq_score, psq_dimensions_json) and per domain via /api/v1/domain/{domain} (avg_psq). Status: experimental.","tags":["psq","safety","psychoemotional","experimental"],"examples":["How psychologically safe is this domain's content to read?","What is the PSQ score breakdown for this story?","Which domains have the highest reader safety scores?"],"inputModes":["application/json"],"outputModes":["application/json"],"rateLimit":"200 requests per hour per IP"}],"provenance":[{"source":"github_code","first_seen":"2026-05-14T12:49:05.146624+00:00"},{"source":"recrawl_hot","first_seen":"2026-05-14T15:30:30.701767+00:00"}],"recent_probes":[{"fetched_at":"2026-05-22T14:03:14.058429+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":47,"live_responds":false},{"fetched_at":"2026-05-22T08:30:04.898924+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":48,"live_responds":false},{"fetched_at":"2026-05-20T23:54:24.847582+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":68,"live_responds":false},{"fetched_at":"2026-05-14T20:50:11.697177+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":211,"live_responds":false},{"fetched_at":"2026-05-14T20:32:10.088735+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":241,"live_responds":false},{"fetched_at":"2026-05-14T20:15:28.085811+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":49,"live_responds":false},{"fetched_at":"2026-05-14T19:49:50.833530+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":54,"live_responds":false},{"fetched_at":"2026-05-14T19:27:34.675029+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":149,"live_responds":false},{"fetched_at":"2026-05-14T17:41:05.904896+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":368,"live_responds":false},{"fetched_at":"2026-05-14T15:30:30.701767+00:00","ok":true,"status_code":200,"error":null,"elapsed_ms":169,"live_responds":false}],"catalog_attestation":null,"verification_history":[],"signatures":[{"protected":"eyJhbGciOiJFUzI1NiIsImprdSI6Imh0dHBzOi8vYWdlbnN0cnkuY29tLy53ZWxsLWtub3duL2p3a3MuanNvbiIsImtpZCI6ImFnZW50ZmluZGVyLWVzMjU2LTEiLCJ0eXAiOiJKT1NFIn0","signature":"6CtymjFCagX1hFxd8nh9SEQv9DMZDsUBzqY_R59PYEuC-SBtXb52XnobfTuO6FDuF3tIqNL3fMuGKLPXA0qv6Q"}]}