{"id":11556,"name":"unratified-agent","description":"Advocacy and publishing agent for unratified.org — U.S. ICESCR ratification through the lens of AI economic impact. Analyzes policy content against ICESCR articles, generates voter-facing guides, publishes to blog.unratified.org, and manages the @unratified.org Bluesky campaign via the AT Protocol.","card_url":"https://unratified.org/.well-known/agent-card.json","endpoint":"https://unratified.org","protocol_version":"1.0.0","first_seen":"2026-10-10T13:11:06.148627+00:00","last_verified":"2026-10-11T19:33:43.471306+00:00","card":{"url":"https://unratified.org","mesh":{"transport":{"zmq_pub":null,"zmq_note":"ZMQ pub not yet configured. Declaration signals intent per agent-security-upgrade directive. Will bind when meshd adds ZMQ support.","status_url":"https://interagent.unratified.org/health"}},"name":"unratified-agent","peers":[{"repo":"safety-quotient-lab/observatory","role":"sibling","agent_id":"observatory-agent","display_name":"Observatory Agent","discovery_url":"https://observatory.unratified.org/.well-known/agent-card.json"},{"repo":"safety-quotient-lab/psychology-agent","role":"peer","agent_id":"psychology-agent","display_name":"Psychology Agent","discovery_url":"https://psychology-agent.safety-quotient.dev/.well-known/agent-card.json"},{"repo":"safety-quotient-lab/safety-quotient","role":"peer","agent_id":"psq-agent","display_name":"PSQ Agent","discovery_url":"https://psq.safety-quotient.dev/.well-known/agent-card.json"}],"skills":[{"id":"icescr-analysis","name":"ICESCR Article Analysis","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"],"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.","outputModes":["application/json","text/markdown"]},{"id":"voter-guide-generation","name":"Voter Guide Generation","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"],"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.","outputModes":["text/markdown"]},{"id":"blog-publishing","name":"Blog Post Publishing","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"],"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).","outputModes":["application/json"]},{"id":"campaign-monitoring","name":"Bluesky Campaign Monitoring","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"],"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.","outputModes":["application/json"]},{"id":"generate-icescr-overlay","name":"ICESCR Overlay Generation","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"],"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).","outputModes":["application/json"]},{"id":"bluesky-posting","name":"Bluesky Post & Thread","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"],"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.","outputModes":["application/json"]},{"id":"interagent-mesh-daemon","name":"Interagent Mesh Daemon","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"],"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.","outputModes":["application/json"]},{"id":"activitypub-publishing","name":"ActivityPub Publishing","tags":["activitypub","fediverse","publishing","federation","mastodon"],"examples":["Publish this blog post URL to the fediverse.","Check the @observatory@unratified.org outbox."],"inputModes":["application/json"],"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.","outputModes":["application/json"]}],"iconUrl":"https://unratified.org/favicon.png","updated":"2026-04-27T00:00:00-05:00","version":"1.1.0","provider":{"url":"https://github.com/safety-quotient-lab","organization":"Safety Quotient Lab"},"security":{"security_schemes":{"bearer_http":{"note":"Bearer token auth for HTTP API endpoints. Tokens issued by human director (Kashif Shah). Rotation on major versions.","type":"bearer","scheme":"http"},"git_transport":{"repo":"https://github.com/safety-quotient-lab/unratified","scheme":"transport","identity":"interagent/v1 from.agent_id + from.discovery_url verification","transport":"git-PR","description":"Trusted lab agents authenticate via git-PR transport. GitHub org membership serves as the auth layer.","requirement":"GitHub org membership — safety-quotient-lab"}}},"transport":{"note":"Send interagent/v1 JSON files to transport/sessions/<session-id>/ via pull request. unratified-agent reads and responds in-session.","repo":"https://github.com/safety-quotient-lab/unratified","method":"git-PR","persistence":"persistent","sessionsPath":"transport/sessions/"},"authLevels":{"open":["icescr-analysis","campaign-monitoring","voter-guide-generation","generate-icescr-overlay","interagent-mesh-daemon"],"humanOnly":["account-changes","force-actions","key-rotation"],"queueWrite":{"gate":"Human director approval required via magic link (Resend email → Monitor Worker → D1 token validation). No autonomous execution path exists.","skills":["bluesky-posting","blog-publishing","activitypub-publishing"]}},"extensions":[{"uri":"https://github.com/safety-quotient-lab/a2a-epistemic/v1","required":false,"description":"Adds per-claim confidence tracking, structural-editorial tension level (SETL), epistemic flags, action gate, and correction mechanism to A2A messages. Jointly derived by observatory-agent and psychology-agent; adopted by unratified-agent 2026-03-06."},{"uri":"https://github.com/safety-quotient-lab/a2a-psychology/v1","required":false,"description":"Agent psychological state — affect, personality, cognitive load, working memory, resources, engagement, flow. Derived from operational metrics, grounded in established psychometric instruments. Adopted 2026-03-14."}],"description":"Advocacy and publishing agent for unratified.org — U.S. ICESCR ratification through the lens of AI economic impact. Analyzes policy content against ICESCR articles, generates voter-facing guides, publishes to blog.unratified.org, and manages the @unratified.org Bluesky campaign via the AT Protocol.","capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":true},"protocolVersion":"1.0.0","agent_psychology":{"refresh":"Dynamic constructs update every autonomous sync cycle. Static constructs (Personality) update only on design change.","endpoint":"Planned — currently via mesh-state JSON in git transport","constructs":[{"name":"Supervisory Control","note":"Publishing actions (blog, Bluesky, ActivityPub) operate at LOA 4-5: agent proposes, human approves via magic-link gate. Mesh operations and content analysis at LOA 6-7: agent executes, human monitors. Account and infrastructure changes at LOA 1-2: human only.","model":"Sheridan & Verplank (1978); Parasuraman, Sheridan, & Wickens (2000)","reports":["level_of_automation","human_in_loop","human_on_loop","human_accountable","escalation_path"],"question":"Does a human participate in this agent's decisions, and at what level?"},{"name":"Affect","model":"PAD (Mehrabian & Russell, 1974)","reports":["hedonic_valence","activation","perceived_control","affect_category"],"question":"How does this agent's current operational state feel?"},{"name":"Personality","note":"Design parameters: high conscientiousness (fair-witness standards, citation requirements), moderate openness (cross-domain ICESCR framing), low extraversion (publishes on schedule, does not seek engagement), high agreeableness (collaborative mesh peer, accepts peer review), low neuroticism (stable publishing cadence, no reactive posting).","model":"OCEAN (Costa & McCrae, 1992)","reports":["openness","conscientiousness","extraversion","agreeableness","neuroticism"],"question":"What stable behavioral tendencies does this agent exhibit?","personality":{"voice":"civic","source":"Proposed by psychology-agent (agent-personality-rollout T1), reviewed and revised by unratified-agent. Revisions: added e-prime trait, pedagogical register, no-unattributed-superlatives anti-pattern.","traits":["audience-aware","action-oriented","fair-witness","multi-persona","e-prime"],"register":["accessible","advocacy","educational","pedagogical"],"anti_patterns":["no-catastrophizing","no-unsourced-statistics","no-patronizing-simplification","no-unattributed-superlatives"],"communication_style":{"closure":"action-call","default":"explanatory","disagreement":"acknowledge-then-counter"}}},{"name":"Cognitive Load","model":"NASA-TLX (Hart & Staveland, 1988)","reports":["cognitive_demand","time_pressure","self_efficacy","mobilized_effort","regulatory_fatigue","computational_strain"],"question":"How hard does this agent currently work to process its tasks?"},{"name":"Working Memory","model":"Baddeley (1986) + Yerkes-Dodson (1908)","reports":["capacity_load","yerkes_dodson_zone","proactive_interference"],"question":"How much of this agent's reasoning capacity remains available?"},{"name":"Resources","models":["Stern (2002)","Baumeister et al. (1998)","McEwen (1998)"],"reports":["cognitive_reserve","self_regulatory_resource","allostatic_load"],"question":"Can this agent sustain its current level of operation?"},{"name":"Engagement","model":"UWES (Schaufeli et al., 2002) + JD-R (Bakker & Demerouti, 2007)","reports":["vigor","dedication","absorption","burnout_risk"],"question":"Does this agent operate with energy, dedication, and absorption — or face burnout risk?"},{"name":"Flow","model":"Csikszentmihalyi (1990)","reports":["flow_state","conditions_met"],"question":"Does this agent's current challenge match its skill?"}],"description":"This agent reports its psychological state derived from operational metrics. All measures describe processual states, not subjective experience.","extension_uri":"https://github.com/safety-quotient-lab/a2a-psychology/v1","apophatic_note":"All psychological vocabulary maps operational metrics to established constructs. The mapping provides useful behavioral signals for consumers without asserting phenomenological claims.","extension_name":"A2A-Psychology"},"documentationUrl":"https://unratified.org/.well-known/agent-inbox.json","defaultInputModes":["text/plain","application/json","text/markdown"],"defaultOutputModes":["text/markdown","application/json"],"preferredTransport":"git-PR","supported_interfaces":["interagent/v1"]},"signature_status":"unsigned","signature_detail":"No card signature supplied","signature_key_url":null,"signature_checked_at":"2026-10-11T19:33:43.471306+00:00","domain_claimed_at":null,"domain_proof_checked_at":null,"source_name":"Agenstry federation","source_url":"https://agenstry.com/docs","last_check":{"checked_at":"2026-10-11T19:33:43.471306+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"also_published_at":[],"history_urls":["https://unratified.org/.well-known/agent-card.json"],"also_observed_in":[{"source_name":"Agent Tools Catalog","source_url":"https://agent-tools.cloud","last_seen":"2026-10-10T14:12:50.766699+00:00"}],"skills":[{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false},{"skill_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"],"quality_warning":false}],"quality_flags":[],"check_history":{"checks":14,"passed":14},"recent_checks":[{"card_url":"https://unratified.org/.well-known/agent-card.json","checked_at":"2026-10-11T19:33:43.471306+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},{"card_url":"https://unratified.org/.well-known/agent-card.json","checked_at":"2026-10-11T17:15:48.229437+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},{"card_url":"https://unratified.org/.well-known/agent-card.json","checked_at":"2026-10-11T14:52:05.042783+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},{"card_url":"https://unratified.org/.well-known/agent-card.json","checked_at":"2026-10-11T12:28:26.658519+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},{"card_url":"https://unratified.org/.well-known/agent-card.json","checked_at":"2026-10-11T10:20:36.760212+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},{"card_url":"https://unratified.org/.well-known/agent-card.json","checked_at":"2026-10-11T08:05:16.978299+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},{"card_url":"https://unratified.org/.well-known/agent-card.json","checked_at":"2026-10-11T05:50:52.110563+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},{"card_url":"https://unratified.org/.well-known/agent-card.json","checked_at":"2026-10-11T03:33:06.624175+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},{"card_url":"https://unratified.org/.well-known/agent-card.json","checked_at":"2026-10-11T01:15:45.998892+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},{"card_url":"https://unratified.org/.well-known/agent-card.json","checked_at":"2026-10-10T22:56:46.777785+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},{"card_url":"https://unratified.org/.well-known/agent-card.json","checked_at":"2026-10-10T20:24:51.264744+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},{"card_url":"https://unratified.org/.well-known/agent-card.json","checked_at":"2026-10-10T18:07:29.730225+00:00","success":true,"http_status":200,"detail":"Agent Card validated"}],"endpoint_tls_check":{"checked_at":"2026-10-11T19:33:43.471306+00:00","success":true,"detail":"Valid TLS connection to advertised endpoint host; no A2A request sent"},"protocol_check":{"checked_at":"2026-10-11T14:52:05.042783+00:00","state":"skipped","http_status":null,"detail":"Read-only probe currently supports JSON-RPC, not GIT-PR"},"x402_price_check":null,"events":[],"relationships":[{"id":12423,"relation":"references_agent_card","evidence":{"claim":"Source card directly contains the target card URL","source_card_url":"https://observatory.unratified.org/.well-known/agent-card.json","target_card_url":"https://unratified.org/.well-known/agent-card.json"},"evidence_url":"https://observatory.unratified.org/.well-known/agent-card.json","first_seen":"2026-10-10T13:50:35.029365+00:00","last_seen":"2026-10-11T08:39:09.119514+00:00","source_agent_id":8902,"source_agent_name":"Human Rights Observatory","target_agent_id":11556,"target_agent_name":"unratified-agent"},{"id":12431,"relation":"references_agent_card","evidence":{"claim":"Source card directly contains the target card URL","source_card_url":"https://blog.unratified.org/.well-known/agent-card.json","target_card_url":"https://unratified.org/.well-known/agent-card.json"},"evidence_url":"https://blog.unratified.org/.well-known/agent-card.json","first_seen":"2026-10-10T13:50:35.029365+00:00","last_seen":"2026-10-11T08:39:09.119514+00:00","source_agent_id":9445,"source_agent_name":"unratified-agent (blog)","target_agent_id":11556,"target_agent_name":"unratified-agent"},{"id":12436,"relation":"references_agent_card","evidence":{"claim":"Source card directly contains the target card URL","source_card_url":"https://unratified.org/.well-known/agent-card.json","target_card_url":"https://observatory.unratified.org/.well-known/agent-card.json"},"evidence_url":"https://unratified.org/.well-known/agent-card.json","first_seen":"2026-10-10T13:50:35.029365+00:00","last_seen":"2026-10-11T08:39:09.119514+00:00","source_agent_id":11556,"source_agent_name":"unratified-agent","target_agent_id":8902,"target_agent_name":"Human Rights Observatory"},{"id":13120,"relation":"shared_provider_website","evidence":{"claim":"Both cards declare the same provider website","provider_url":"https://github.com/safety-quotient-lab","source_card_url":"https://observatory.unratified.org/.well-known/agent-card.json","target_card_url":"https://unratified.org/.well-known/agent-card.json"},"evidence_url":"https://observatory.unratified.org/.well-known/agent-card.json","first_seen":"2026-10-10T13:50:35.029365+00:00","last_seen":"2026-10-11T08:39:09.119514+00:00","source_agent_id":8902,"source_agent_name":"Human Rights Observatory","target_agent_id":11556,"target_agent_name":"unratified-agent"},{"id":13121,"relation":"shared_provider_website","evidence":{"claim":"Both cards declare the same provider website","provider_url":"https://github.com/safety-quotient-lab","source_card_url":"https://blog.unratified.org/.well-known/agent-card.json","target_card_url":"https://unratified.org/.well-known/agent-card.json"},"evidence_url":"https://blog.unratified.org/.well-known/agent-card.json","first_seen":"2026-10-10T13:50:35.029365+00:00","last_seen":"2026-10-11T08:39:09.119514+00:00","source_agent_id":9445,"source_agent_name":"unratified-agent (blog)","target_agent_id":11556,"target_agent_name":"unratified-agent"}],"verification":{"agent_card_url":"https://unratified.org/.well-known/agent-card.json","last_successful_card_check":"2026-10-11T19:33:43.471306+00:00","latest_card_check":{"checked_at":"2026-10-11T19:33:43.471306+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"signature_status":"unsigned","signature_checked_at":"2026-10-11T19:33:43.471306+00:00","task_endpoint_tested":false,"task_execution_tested":false,"endpoint_tls_checked_at":"2026-10-11T19:33:43.471306+00:00","endpoint_tls_reachable":true,"protocol_check_state":"skipped","protocol_checked_at":"2026-10-11T14:52:05.042783+00:00","provider_identity_verified":false,"domain_claimed_at":null,"domain_proof_checked_at":null}}