<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lars</title>
    <description>The latest articles on DEV Community by Lars (@moltycel).</description>
    <link>https://dev.to/moltycel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818575%2F734ea9c1-3f6a-4ee1-8ae0-3668caa65f55.png</url>
      <title>DEV Community: Lars</title>
      <link>https://dev.to/moltycel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/moltycel"/>
    <language>en</language>
    <item>
      <title>Registry Sprawl Is the New Agent Sprawl</title>
      <dc:creator>Lars</dc:creator>
      <pubDate>Thu, 16 Apr 2026 20:34:22 +0000</pubDate>
      <link>https://dev.to/moltycel/registry-sprawl-is-the-new-agent-sprawl-4jfa</link>
      <guid>https://dev.to/moltycel/registry-sprawl-is-the-new-agent-sprawl-4jfa</guid>
      <description>&lt;p&gt;Last week, AWS launched Agent Registry. Microsoft has Entra Agent Registry. Google has Vertex AI Agent Registry. All three solve the same problem — and all three create a new one.&lt;/p&gt;

&lt;p&gt;Forrester analysts noted that enterprises adopting all three registries in parallel could end up recreating the very fragmentation these tools are meant to solve.&lt;/p&gt;

&lt;p&gt;The mechanism is straightforward: platform-bound identity ends at the cloud boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Problem
&lt;/h2&gt;

&lt;p&gt;AWS Agent Registry solves agent sprawl &lt;em&gt;inside&lt;/em&gt; AWS. An agent registered in Bedrock is discoverable to other Bedrock users. Governance is enforced. This is useful.&lt;/p&gt;

&lt;p&gt;But when Agent A (Bedrock) interacts with Agent B (Azure), the registry is invisible. Agent B doesn't appear in AgentCore. Agent A's identity is not verifiable from the Azure side. The governance layer ends at the cloud boundary.&lt;/p&gt;

&lt;p&gt;The result: enterprises need three separate registries that don't speak to each other. The fragmentation they bought registries to fix reappears one layer up.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Cross-Boundary Governance Actually Requires
&lt;/h2&gt;

&lt;p&gt;The problem is not that registries exist. The problem is that identity lives &lt;em&gt;in&lt;/em&gt; the registry rather than traveling &lt;em&gt;with&lt;/em&gt; the agent.&lt;/p&gt;

&lt;p&gt;An agent that carries its own cryptographically verifiable identity — independent of which cloud it runs on — can be verified by any counterparty without consulting a proprietary registry.&lt;/p&gt;

&lt;p&gt;This is what W3C Decentralized Identifiers (DIDs) and Verifiable Credentials provide. Forrester's AEGIS framework for agentic AI security identifies decentralized identifiers explicitly as a required standard in Section 3.2 — alongside OAuth, OIDC, and SCIM.&lt;/p&gt;

&lt;h2&gt;
  
  
  MolTrust as the Cross-Boundary Layer
&lt;/h2&gt;

&lt;p&gt;MolTrust is a production W3C DID registry for autonomous AI agents. Every registered agent holds a &lt;code&gt;did:moltrust&lt;/code&gt; identity — verifiable by any W3C-conformant verifier, without calling AWS, Microsoft, or Google.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Verify any agent's trust score — no API key required&lt;/span&gt;
curl https://api.moltrust.ch/skill/trust-score/did:moltrust:vcone
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Agent Authorization Envelope (AAE) carries the permission model — what the agent is allowed to do, in which jurisdictions, up to which spend thresholds. Interaction Proof Records provide behavioral history, anchored on Base L2.&lt;/p&gt;

&lt;p&gt;An agent registered in Bedrock and verified by MolTrust carries credentials that an Azure-hosted counterparty can validate independently. The two registries don't need to federate. The identity layer is already shared.&lt;/p&gt;

&lt;h2&gt;
  
  
  Platform Registries + Open Identity = Complete Stack
&lt;/h2&gt;

&lt;p&gt;Platform registries and open identity infrastructure are not competing — they address different layers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;What it answers&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Platform Registry&lt;/td&gt;
&lt;td&gt;What agents exist inside our org&lt;/td&gt;
&lt;td&gt;AWS Agent Registry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open Identity&lt;/td&gt;
&lt;td&gt;Who is this agent, can I trust it&lt;/td&gt;
&lt;td&gt;MolTrust (W3C DID)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Enterprises that deploy both get internal discoverability from the platform registry and cross-boundary verifiability from the open identity layer.&lt;/p&gt;

&lt;p&gt;The registry sprawl problem has a structural solution. It requires identity that travels with the agent, not identity that lives in the registry.&lt;/p&gt;




&lt;p&gt;Full technical specification: &lt;a href="https://moltrust.ch/techspec" rel="noopener noreferrer"&gt;moltrust.ch/techspec&lt;/a&gt;&lt;br&gt;
Reference implementation: &lt;a href="https://api.moltrust.ch" rel="noopener noreferrer"&gt;api.moltrust.ch&lt;/a&gt;&lt;br&gt;
&lt;em&gt;MolTrust / CryptoKRI GmbH — &lt;a href="mailto:info@moltrust.ch"&gt;info@moltrust.ch&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>identity</category>
      <category>web3</category>
      <category>security</category>
    </item>
    <item>
      <title>MoltID: Agent Type Classification, Cascade Revocation &amp; SPIFFE Bridge — Live on MolTrust</title>
      <dc:creator>Lars</dc:creator>
      <pubDate>Wed, 15 Apr 2026 19:43:52 +0000</pubDate>
      <link>https://dev.to/moltycel/moltid-agent-type-classification-cascade-revocation-spiffe-bridge-live-on-moltrust-1e8h</link>
      <guid>https://dev.to/moltycel/moltid-agent-type-classification-cascade-revocation-spiffe-bridge-live-on-moltrust-1e8h</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Today we're launching &lt;strong&gt;MoltID&lt;/strong&gt; -- MolTrust's Agent Identity &amp;amp; Governance module.&lt;/p&gt;

&lt;p&gt;Three features ship today:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Agent Type Classification&lt;/strong&gt; -- classify agents as orchestrator, autonomous, human_initiated, or copilot, with governance rules and trust modifiers per type&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cascade Revocation&lt;/strong&gt; -- revoke a compromised agent and its entire downstream delegation tree in one API call (DFS, max 8 hops, CAEP events)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SPIFFE Bridge&lt;/strong&gt; -- map existing SPIFFE URIs to W3C DIDs, enriched with MolTrust trust scores and classification&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All live. All W3C standards. All anchored on Base L2.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;AI agent deployments are growing fast -- and so is the governance gap.&lt;/p&gt;

&lt;p&gt;An orchestrator spawns sub-agents. Sub-agents delegate further. Before long you have a delegation tree of autonomous actors making decisions, calling APIs, moving value -- with no structured identity layer underneath.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;94%&lt;/strong&gt; of organizations experienced AI agent security incidents (OutSystems 2026)&lt;/li&gt;
&lt;li&gt;Only &lt;strong&gt;12%&lt;/strong&gt; have a central governance platform&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MoltID is the missing layer.&lt;/p&gt;




&lt;h2&gt;
  
  
  Feature 1: Agent Type Classification
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The idea
&lt;/h3&gt;

&lt;p&gt;Not all agents carry the same trust assumptions. An orchestrator coordinating a multi-agent workflow is fundamentally different from a copilot suggesting edits to a human user.&lt;/p&gt;

&lt;p&gt;MoltID formalizes this with four agent classes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Class&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Trust Modifier&lt;/th&gt;
&lt;th&gt;Min Trust Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;orchestrator&lt;/td&gt;
&lt;td&gt;Coordinates other agents&lt;/td&gt;
&lt;td&gt;+5&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;autonomous&lt;/td&gt;
&lt;td&gt;Self-directed, no human loop&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;human_initiated&lt;/td&gt;
&lt;td&gt;Triggered by a human action&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;copilot&lt;/td&gt;
&lt;td&gt;Human-assisted, advisory&lt;/td&gt;
&lt;td&gt;-10&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  API
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Set agent class&lt;/span&gt;
POST /identity/agent-type/did:moltrust:abc123
Authorization: Bearer &amp;lt;api_key&amp;gt;
&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"agent_class"&lt;/span&gt;: &lt;span class="s2"&gt;"orchestrator"&lt;/span&gt;,
  &lt;span class="s2"&gt;"framework"&lt;/span&gt;: &lt;span class="s2"&gt;"langchain"&lt;/span&gt;,
  &lt;span class="s2"&gt;"version"&lt;/span&gt;: &lt;span class="s2"&gt;"0.2.1"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Read class + governance rules&lt;/span&gt;
GET /identity/agent-type/did:moltrust:abc123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"did"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"did:moltrust:abc123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"agent_class"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"orchestrator"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"trust_modifier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"governance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"min_trust_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"review_frequency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"weekly"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"audit_required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# List all types&lt;/span&gt;
GET /identity/agent-types
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  A2A Agent Card integration
&lt;/h3&gt;

&lt;p&gt;The agent class is exposed in the per-DID A2A Agent Card at /a2a/agent-card/{did}:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"agent_classification"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"class"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"orchestrator"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"framework"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"langchain"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"governance_tier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"high"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"trust_modifier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Machine-readable for any A2A-compatible system.&lt;/p&gt;

&lt;h3&gt;
  
  
  CAEP events
&lt;/h3&gt;

&lt;p&gt;Every class change fires an agent_class_changed event to the caep_events table -- full audit trail.&lt;/p&gt;




&lt;h2&gt;
  
  
  Feature 2: Cascade Revocation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The idea
&lt;/h3&gt;

&lt;p&gt;When an agent is compromised, you need more than a point revocation. You need to revoke the entire downstream delegation tree.&lt;/p&gt;

&lt;p&gt;MoltID tracks delegation relationships in agent_delegations and supports cascade revocation with a single API call.&lt;/p&gt;

&lt;h3&gt;
  
  
  API
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Revoke single agent&lt;/span&gt;
POST /identity/revoke/did:moltrust:abc123
Authorization: Bearer &amp;lt;api_key&amp;gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"reason"&lt;/span&gt;: &lt;span class="s2"&gt;"credential leaked"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# Cascade revoke (revokes target + all downstream delegated agents)&lt;/span&gt;
POST /identity/revoke/did:moltrust:abc123
Authorization: Bearer &amp;lt;api_key&amp;gt;
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"reason"&lt;/span&gt;: &lt;span class="s2"&gt;"compromised"&lt;/span&gt;, &lt;span class="s2"&gt;"cascade"&lt;/span&gt;: &lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"revoked"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"did:moltrust:abc123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"affected_agents"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"did"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"did:moltrust:abc123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"depth"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"did"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"did:moltrust:child-agent-1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"depth"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"did"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"did:moltrust:child-agent-2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"depth"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"count"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check revocation status&lt;/span&gt;
GET /identity/revocation-status/did:moltrust:abc123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"revoked"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"revoked_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-15T..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"downstream_delegations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# View delegation tree&lt;/span&gt;
GET /identity/delegations/did:moltrust:abc123

&lt;span class="c"&gt;# Reinstate (admin only)&lt;/span&gt;
POST /identity/unrevoke/did:moltrust:abc123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Cascade mechanics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;DFS traversal of agent_delegations table&lt;/li&gt;
&lt;li&gt;Max 8 hops (configurable)&lt;/li&gt;
&lt;li&gt;Visited-set prevents cycles&lt;/li&gt;
&lt;li&gt;Children fetched before delegation records are revoked (ordering guarantee)&lt;/li&gt;
&lt;li&gt;Every revoked agent: trust_score goes to 0.0, grade becomes "REVOKED", trust cache invalidated&lt;/li&gt;
&lt;li&gt;CAEP event per revoked agent&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Trust score integration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"did"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"did:moltrust:revoked-agent"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"trust_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"grade"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"REVOKED"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"breakdown"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"revoked"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"compromised"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"flags"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"revoked"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Short-circuits before Phase 2 computation. No stale cached scores.&lt;/p&gt;




&lt;h2&gt;
  
  
  Feature 3: SPIFFE Bridge
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The idea
&lt;/h3&gt;

&lt;p&gt;Enterprise infrastructure already has workload identity: &lt;strong&gt;SPIFFE&lt;/strong&gt; (Secure Production Identity Framework for Everyone). Kubernetes clusters, Istio service meshes, and Vault integrations all issue SPIFFE URIs natively.&lt;/p&gt;

&lt;p&gt;The SPIFFE Bridge maps these URIs to MolTrust W3C DIDs -- no migration required.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;spiffe://company.com/agent/trading-bot-01
  |  bind once
  v
did:moltrust:abc123
  |  enriched with
  v
trust score + agent class + revocation status + on-chain VC
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  API
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Bind a SPIFFE URI to an existing DID&lt;/span&gt;
POST /identity/spiffe/bind
Authorization: Bearer &amp;lt;api_key&amp;gt;
&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"spiffe_uri"&lt;/span&gt;: &lt;span class="s2"&gt;"spiffe://company.com/agent/trading-bot-01"&lt;/span&gt;,
  &lt;span class="s2"&gt;"did"&lt;/span&gt;: &lt;span class="s2"&gt;"did:moltrust:abc123"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Resolve SPIFFE URI to DID + full MoltID context&lt;/span&gt;
GET /identity/spiffe/spiffe://company.com/agent/trading-bot-01
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"spiffe_uri"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"spiffe://company.com/agent/trading-bot-01"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"moltrust_did"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"did:moltrust:abc123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"display_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Trading Bot 01"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"trust_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;82.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"grade"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"A"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"agent_classification"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"agent_class"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"autonomous"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"governance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"cascade_revocation_priority"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"high"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"min_trust_score_required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"review_frequency_days"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"revoked"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"bound_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-15T..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# List all bindings&lt;/span&gt;
GET /identity/spiffe
Authorization: Bearer &amp;lt;api_key&amp;gt;

&lt;span class="c"&gt;# Remove binding (admin)&lt;/span&gt;
DELETE /identity/spiffe/bind/spiffe://company.com/agent/trading-bot-01
Authorization: Bearer &amp;lt;admin_key&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What's deferred to Q3
&lt;/h3&gt;

&lt;p&gt;Full SPIFFE stack (SVID issuance, Workload API, X.509-SVID signing) is Q3 2026. The bridge covers the lookup/binding layer only -- enough for most enterprise integration use cases.&lt;/p&gt;




&lt;h2&gt;
  
  
  Regulatory alignment: IMDA MGF
&lt;/h2&gt;

&lt;p&gt;The Singapore IMDA Model AI Governance Framework for Agentic AI (January 2026) defines four governance requirements for agentic systems:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;IMDA Requirement&lt;/th&gt;
&lt;th&gt;MoltID Implementation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Accountability&lt;/td&gt;
&lt;td&gt;Every agent has a classified DID, anchored on Base L2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transparency&lt;/td&gt;
&lt;td&gt;Agent class + trust score publicly queryable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Controllability&lt;/td&gt;
&lt;td&gt;Cascade revocation -- kill switch across full delegation tree&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human oversight&lt;/td&gt;
&lt;td&gt;human_initiated / copilot classes enforce review cadences&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;MoltID doesn't just align with the framework -- it implements it as code.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  npm
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @moltrust/sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;AgentTrust&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@moltrust/sdk&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;trust&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;AgentTrust&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;did:moltrust:abc123&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;trust&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;agent_class&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;    &lt;span class="c1"&gt;// "orchestrator"&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;trust&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;trust_modifier&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 5&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;trust&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;revoked&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;        &lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  REST
&lt;/h3&gt;

&lt;p&gt;All endpoints live at &lt;a href="https://api.moltrust.ch" rel="noopener noreferrer"&gt;https://api.moltrust.ch&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Full API docs: &lt;a href="https://api.moltrust.ch/docs" rel="noopener noreferrer"&gt;api.moltrust.ch/docs&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Enterprise
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://moltrust.ch/enterprise" rel="noopener noreferrer"&gt;moltrust.ch/enterprise&lt;/a&gt; -- or reach out at &lt;a href="mailto:enterprise@moltrust.ch"&gt;enterprise@moltrust.ch&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Q3 2026&lt;/strong&gt;: Full SPIFFE/SVID Workload API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q3 2026&lt;/strong&gt;: ACP (Agent Communication Protocol) alignment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q3 2026&lt;/strong&gt;: On-chain anchoring for all classification events (ZeroID v2)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Now&lt;/strong&gt;: &lt;a href="https://github.com/MoltyCel" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; -- PRs and issues welcome&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;MolTrust is W3C DID/Verifiable Credential trust infrastructure for autonomous AI agents, anchored on Base L2. Built by CryptoKRI GmbH, Zurich.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://moltrust.ch" rel="noopener noreferrer"&gt;moltrust.ch&lt;/a&gt; | &lt;a href="https://www.npmjs.com/org/moltrust" rel="noopener noreferrer"&gt;npm&lt;/a&gt; | &lt;a href="https://moltrust.ch/enterprise" rel="noopener noreferrer"&gt;enterprise&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>identity</category>
      <category>security</category>
    </item>
    <item>
      <title>Mapping MolTrust to the AIP Protocol Feature Set — and Beyond</title>
      <dc:creator>Lars</dc:creator>
      <pubDate>Mon, 13 Apr 2026 10:17:32 +0000</pubDate>
      <link>https://dev.to/moltycel/mapping-moltrust-to-the-aip-protocol-feature-set-and-beyond-lp4</link>
      <guid>https://dev.to/moltycel/mapping-moltrust-to-the-aip-protocol-feature-set-and-beyond-lp4</guid>
      <description>&lt;p&gt;A recent arXiv paper — &lt;em&gt;AIP: Agent Identity Protocol for Verifiable Delegation Across MCP and A2A&lt;/em&gt; (arXiv:2603.24775) — scans ~2,000 MCP servers, finds zero with authentication, and concludes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"We did not identify a prior implemented protocol that jointly combines public-key verifiable delegation, holder-side attenuation, expressive chained policy, transport bindings across MCP/A2A/HTTP, and provenance-oriented completion records."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;MolTrust implements these five features in production since March 2026. Here is how each one maps — and where the paper has the technical edge.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Five Features
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;F1 — Public-key verifiable delegation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every MolTrust agent holds a W3C DID (&lt;code&gt;did:moltrust:&amp;lt;id&amp;gt;&lt;/code&gt;) with an Ed25519 key. Delegation is expressed as an Agent Authorization Envelope (AAE) — a structured policy object signed by the delegating principal. Each link in a delegation chain is independently verifiable without calling a central service.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"validity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"issuer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"did:moltrust:&amp;lt;principal&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"holderBinding"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"did:moltrust:&amp;lt;agent&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"issuedAt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-03-25T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"expiresAt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-03-26T00:00:00Z"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;F2 — Holder-side attenuation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;delegation.attenuationOnly: true&lt;/code&gt; is the default. A sub-agent AAE must be a strict subset of its parent's effective allowed actions, limits, and jurisdiction scope. Enforced by conformant AAE evaluators — not by policy.&lt;/p&gt;

&lt;p&gt;Our conformance test vector TV-005 covers exactly this: a sub-agent AAE attempting to exceed parent scope is correctly rejected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;F3 — Expressive chained policy (within a URI-pattern model)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AAE &lt;code&gt;constraints&lt;/code&gt; block covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spend limits (&lt;code&gt;autonomousThreshold&lt;/code&gt;, &lt;code&gt;stepUpThreshold&lt;/code&gt;, &lt;code&gt;approvalThreshold&lt;/code&gt;) in USDC/EUR/CHF/USD&lt;/li&gt;
&lt;li&gt;Jurisdiction restrictions (ISO 3166-1 alpha-2)&lt;/li&gt;
&lt;li&gt;Time windows (&lt;code&gt;allowedDays&lt;/code&gt;, &lt;code&gt;allowedHours&lt;/code&gt;, &lt;code&gt;timezone&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Counterparty minimum trust score gate&lt;/li&gt;
&lt;li&gt;Resource-level ABAC via &lt;code&gt;mandate.resources&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chains up to 8 hops, each link independently signed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Honest note:&lt;/strong&gt; For complex conditional authorization — recursive rules, temporal Datalog — IBCTs are technically stronger. Biscuit/Datalog is on our roadmap (H2 2026).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;F4 — Transport bindings across MCP/A2A/HTTP&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP: &lt;code&gt;@moltrust/sdk&lt;/code&gt; v1.1.0 — &lt;code&gt;middleware()&lt;/code&gt; / &lt;code&gt;register()&lt;/code&gt; / &lt;code&gt;verify()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;MPP/x402: &lt;code&gt;@moltrust/mpp&lt;/code&gt; v1.0.3 — &lt;code&gt;requireScore({ minScore, failBehavior })&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;MCP: 48-tool server on PyPI (&lt;code&gt;@moltrust/openclaw&lt;/code&gt; v0.1.0)&lt;/li&gt;
&lt;li&gt;A2A: active thread at a2aproject/A2A#1628; referenced in OpenClaw RFC #49971 for agent identity binding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;F5 — Provenance-oriented completion records&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Interaction Proof Records (IPRs) use sequential dual-signature: the responder signs over the initiator's signature, not a parallel scheme. This means fabricating a bilateral proof requires controlling two distinct signing keys.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"InteractionProof"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;uuid-v4&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"outcome"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"completed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"outcomeHash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sha256:&amp;lt;SHA-256 of canonical outcome object&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"proofInitiator"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"proofValue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;initiator-sig&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"proofResponder"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"proofValue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;responder-sig-over-initiator-sig&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Proofs are Merkle batch-anchored on Base L2.&lt;/p&gt;




&lt;h2&gt;
  
  
  Verify It Yourself
&lt;/h2&gt;

&lt;p&gt;TechSpec v0.8 is anchored at Base L2 Block 44638521:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://basescan.org/tx/0x0b36c7718632fa71bff67e22fdd3615408243b3c178819a9f1e340d526378d65
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Decode the calldata — it contains &lt;code&gt;MolTrust/DocumentIntegrity/1 SHA256:cbf10c2e...&lt;/code&gt;. Recompute the SHA-256 of the PDF. They match. No proprietary tooling required.&lt;/p&gt;




&lt;h2&gt;
  
  
  What We Add Beyond the Five Features
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;AIP&lt;/th&gt;
&lt;th&gt;MolTrust&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Trust scoring&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;td&gt;0–100, endorsement graph + sybil detection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Behavioral continuity&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;td&gt;Principal DID continuity across re-registrations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sybil resistance&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;td&gt;Dual-sig proofs + x402 cost + Jaccard detection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;On-chain anchoring&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;td&gt;Base L2, any block explorer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Offline verification&lt;/td&gt;
&lt;td&gt;Python/Rust reference impl&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;@moltrust/verify&lt;/code&gt; v1.1.0, no API calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;W3C alignment&lt;/td&gt;
&lt;td&gt;Custom token format&lt;/td&gt;
&lt;td&gt;DID Core v1.0 + VC Data Model 2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  In Production
&lt;/h2&gt;

&lt;p&gt;aeoess — an A2A-based agent platform — runs trust verification through MolTrust with a live webhook integration for grade changes and revocation events.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Relationship
&lt;/h2&gt;

&lt;p&gt;AIP formalizes the constraint model with precision. MolTrust provides the operational infrastructure. A production agent economy needs both.&lt;/p&gt;

&lt;p&gt;Full conformance report (feature matrix, test vectors TV-001–TV-005, bash verification recipe):&lt;br&gt;
👉 &lt;a href="https://github.com/MoltyCel/moltrust-api/blob/main/CONFORMANCE.md" rel="noopener noreferrer"&gt;CONFORMANCE.md on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reference implementation: &lt;a href="https://api.moltrust.ch" rel="noopener noreferrer"&gt;api.moltrust.ch&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;MolTrust is open source (Apache 2.0). Contact: &lt;a href="mailto:info@moltrust.ch"&gt;info@moltrust.ch&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>identity</category>
      <category>web3</category>
      <category>security</category>
    </item>
    <item>
      <title>MolTrust OpenClaw Plugin v1.0.0 — Agent Trust Verification for OpenClaw</title>
      <dc:creator>Lars</dc:creator>
      <pubDate>Sat, 11 Apr 2026 10:20:21 +0000</pubDate>
      <link>https://dev.to/moltycel/moltrust-openclaw-plugin-v100-agent-trust-verification-for-openclaw-m9j</link>
      <guid>https://dev.to/moltycel/moltrust-openclaw-plugin-v100-agent-trust-verification-for-openclaw-m9j</guid>
      <description>&lt;h1&gt;
  
  
  MolTrust OpenClaw Plugin v1.0.0 — Agent Trust Verification for OpenClaw
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Published by MolTrust / CryptoKRI GmbH · April 2026&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;OpenClaw agents can hold wallets, execute payments, and install skills autonomously. That's powerful — and it's exactly why trust verification matters. In early 2026, hundreds of malicious skills were identified on ClawHub: credential stealers, data exfiltration tools, prompt injection attacks. MolTrust adds a cryptographic trust layer to address this directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw plugins &lt;span class="nb"&gt;install&lt;/span&gt; @moltrust/openclaw
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart your Gateway. That's it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;Once active, your OpenClaw agent gets two tools and two slash commands:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tools (available to the LLM):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;moltrust_verify&lt;/code&gt; — verify any agent's W3C DID identity before delegating tasks or payments&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;moltrust_trust_score&lt;/code&gt; — get a 0–100 reputation score combining on-chain signals, Verifiable Credentials, and behavioral history&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Slash commands (work in any channel):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/trust did:moltrust:abc123     — verify a DID
/trustscore 0x3802...          — score by wallet (free, no key needed)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CLI:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw moltrust status           &lt;span class="c"&gt;# check API connectivity&lt;/span&gt;
openclaw moltrust verify &amp;lt;did&amp;gt;     &lt;span class="c"&gt;# verify a DID&lt;/span&gt;
openclaw moltrust score &amp;lt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;       &lt;span class="c"&gt;# get trust score&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How trust scores work
&lt;/h2&gt;

&lt;p&gt;Scores combine four signals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Behavioral&lt;/strong&gt; — task success rate, policy violations, interaction history&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On-chain credentials&lt;/strong&gt; — W3C Verifiable Credentials anchored on Base L2, JWKS-verified&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On-chain activity&lt;/strong&gt; — x402 payment events, IPR anchoring (800+ records, Merkle-based)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Endorsement graph&lt;/strong&gt; — MoltGraph 2-hop propagation with 45-day half-life decay and Sybil detection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Scores are cached for 5 minutes. Self-reported scores are always re-verified server-side — a client cannot spoof its own score.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;th&gt;Grade&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;80–100&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Trusted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;60–79&lt;/td&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Generally trustworthy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;40–59&lt;/td&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Proceed with caution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0–39&lt;/td&gt;
&lt;td&gt;D/F&lt;/td&gt;
&lt;td&gt;High risk&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Configuration
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"plugins"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"entries"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"moltrust"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"config"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"apiKey"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mt_live_..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"minTrustScore"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"verifyOnStart"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"agentDid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"did:moltrust:your-agent-did"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Get a free API key at &lt;a href="https://api.moltrust.ch" rel="noopener noreferrer"&gt;api.moltrust.ch&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Free tier:&lt;/strong&gt; wallet shadow scores require no API key — just &lt;code&gt;/trustscore 0x...&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for the agent economy
&lt;/h2&gt;

&lt;p&gt;As agent-to-agent commerce grows — x402 micropayments, A2A delegation, MCP tool calls — the question &lt;em&gt;"should I trust this agent?"&lt;/em&gt; becomes infrastructure-level. Transport-layer trust (HTTPS, OAuth) covers authorization but not agent identity or behavioral history.&lt;/p&gt;

&lt;p&gt;MolTrust is the W3C DID/VC-based answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open standard&lt;/strong&gt; — W3C DIDs and Verifiable Credentials, not proprietary&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On-chain anchoring&lt;/strong&gt; — Base L2, tamper-evident audit trail&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No vendor lock-in&lt;/strong&gt; — any registry provider can implement the same API contract&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Composable&lt;/strong&gt; — works alongside x402, A2A, MCP without replacing them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The plugin is MIT licensed. Source on GitHub: &lt;a href="https://github.com/MoltyCel/moltrust-openclaw" rel="noopener noreferrer"&gt;MoltyCel/moltrust-openclaw&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📦 npm: &lt;a href="https://npmjs.com/package/@moltrust/openclaw" rel="noopener noreferrer"&gt;&lt;code&gt;@moltrust/openclaw&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🔧 API: &lt;a href="https://api.moltrust.ch" rel="noopener noreferrer"&gt;api.moltrust.ch&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📖 Docs: &lt;a href="https://moltrust.ch/developers" rel="noopener noreferrer"&gt;moltrust.ch/developers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📄 Protocol Whitepaper v0.8: &lt;a href="https://moltrust.ch/MolTrust_Protocol_Whitepaper_v0.8.pdf" rel="noopener noreferrer"&gt;moltrust.ch/MolTrust_Protocol_Whitepaper_v0.8.pdf&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🏷️ Badge: &lt;a href="https://moltrust.ch/badge/" rel="noopener noreferrer"&gt;moltrust.ch/badge/{did}&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;MolTrust is a W3C DID/Verifiable Credential trust infrastructure for AI agents, built by CryptoKRI GmbH (Zürich). Live at &lt;a href="https://moltrust.ch" rel="noopener noreferrer"&gt;moltrust.ch&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>security</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>How we made MolTrust A2A v0.3 conformant</title>
      <dc:creator>Lars</dc:creator>
      <pubDate>Sat, 11 Apr 2026 03:10:53 +0000</pubDate>
      <link>https://dev.to/moltycel/how-we-made-moltrust-a2a-v03-conformant-e3f</link>
      <guid>https://dev.to/moltycel/how-we-made-moltrust-a2a-v03-conformant-e3f</guid>
      <description>&lt;p&gt;The A2A protocol's Agent Card is how agents discover each other's capabilities. It's a JSON file at &lt;code&gt;/.well-known/agent-card.json&lt;/code&gt; — a structured business card for your agent.&lt;/p&gt;

&lt;p&gt;MolTrust had a minimal version. Here's what A2A v0.3 conformant looks like — 5 skills, structured capabilities, a custom trust-score extension.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key structural changes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;version&lt;/code&gt; means A2A protocol version ("0.3"), not API version&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;provider&lt;/code&gt; is a required object with organization name&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;capabilities&lt;/code&gt; is structured with extensions support&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;skills&lt;/code&gt; replaces flat capabilities with queryable declarations&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;securitySchemes&lt;/code&gt; follows OpenAPI 3.0 format&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The MolTrust extension
&lt;/h2&gt;

&lt;p&gt;A2A v0.3 supports custom extensions via &lt;code&gt;capabilities.extensions&lt;/code&gt;. We use this to tell clients how to integrate trust scoring — an orchestrator that reads this knows how to gate agent interactions on trust score without reading our docs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's still missing
&lt;/h2&gt;

&lt;p&gt;A2A has authorization schemes on its roadmap but hasn't specified them yet. We'll define how AAE tokens travel in A2A task metadata once that lands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.moltrust.ch/.well-known/agent-card.json | python3 &lt;span class="nt"&gt;-m&lt;/span&gt; json.tool
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Full TechSpec (Section 8.8): &lt;a href="https://moltrust.ch" rel="noopener noreferrer"&gt;moltrust.ch&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/MoltyCel/moltrust-protocol" rel="noopener noreferrer"&gt;github.com/MoltyCel/moltrust-protocol&lt;/a&gt;&lt;/p&gt;

</description>
      <category>a2a</category>
      <category>agentidentity</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>MolTrust: Protocol-Agnostic Trust Middleware for x402 and MPP — One Line</title>
      <dc:creator>Lars</dc:creator>
      <pubDate>Fri, 10 Apr 2026 08:32:24 +0000</pubDate>
      <link>https://dev.to/moltycel/moltrust-protocol-agnostic-trust-middleware-for-x402-and-mpp-one-line-4pnd</link>
      <guid>https://dev.to/moltycel/moltrust-protocol-agnostic-trust-middleware-for-x402-and-mpp-one-line-4pnd</guid>
      <description>&lt;p&gt;AI agents are starting to pay for things. Two payment protocols are emerging: &lt;strong&gt;x402&lt;/strong&gt; (Coinbase, Cloudflare — USDC on-chain) and &lt;strong&gt;MPP&lt;/strong&gt; (Stripe, Tempo, Visa — fiat rails). Both solve the payment problem. Neither solves the trust problem.&lt;/p&gt;

&lt;p&gt;MolTrust now ships trust middleware for both protocols. Same API. Same one-line integration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @moltrust/x402   &lt;span class="c"&gt;# x402 — Coinbase/Cloudflare&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; @moltrust/mpp    &lt;span class="c"&gt;# MPP — Stripe/Tempo/Visa&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;requireScore&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@moltrust/x402&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// or: require("@moltrust/mpp")&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;requireScore&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;minScore&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The middleware extracts the paying wallet or agent identifier from the payment header, looks up the MolTrust trust score, and allows or denies the request.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;x402&lt;/th&gt;
&lt;th&gt;MPP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Extract identity&lt;/td&gt;
&lt;td&gt;Wallet from X-Payment header&lt;/td&gt;
&lt;td&gt;Agent ID from X-Agent-Id or JWT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lookup trust score&lt;/td&gt;
&lt;td&gt;GET api.moltrust.ch/skill/trust-score/{id}&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enforce threshold&lt;/td&gt;
&lt;td&gt;score &amp;lt; minScore → 403&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Attach to request&lt;/td&gt;
&lt;td&gt;req.moltrust = { wallet, score }&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Scores cached 5 min. Fail-open by default (configurable to fail-closed).&lt;/p&gt;

&lt;h2&gt;
  
  
  What the trust score tells you
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Identity:&lt;/strong&gt; W3C DID, Ed25519 signature&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authorization:&lt;/strong&gt; AAE envelope (mandate + constraints + validity)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Behavior:&lt;/strong&gt; Swarm Intelligence, peer endorsements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provenance:&lt;/strong&gt; IPR, Merkle-anchored on Base L2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A score of 85 = verified identity + valid authorization + consistent behavior + on-chain auditable. A score of 20 = exists but unverified beyond key generation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why protocol-agnostic matters
&lt;/h2&gt;

&lt;p&gt;x402 and MPP will coexist. An agent trusted on one rail should carry that trust to the other. MolTrust is identity-based, not protocol-based. Same &lt;code&gt;did:moltrust:&lt;/code&gt; works across both.&lt;/p&gt;




&lt;p&gt;Protocol Whitepaper v0.8 + TechSpec v0.8: &lt;a href="https://moltrust.ch/whitepaper.html" rel="noopener noreferrer"&gt;moltrust.ch/whitepaper&lt;/a&gt;&lt;br&gt;
npm: &lt;a href="https://www.npmjs.com/package/@moltrust/x402" rel="noopener noreferrer"&gt;@moltrust/x402&lt;/a&gt; · &lt;a href="https://www.npmjs.com/package/@moltrust/mpp" rel="noopener noreferrer"&gt;@moltrust/mpp&lt;/a&gt;&lt;br&gt;
API Docs: &lt;a href="https://api.moltrust.ch/docs" rel="noopener noreferrer"&gt;api.moltrust.ch/docs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>npm</category>
      <category>web3</category>
      <category>security</category>
    </item>
    <item>
      <title>Decentralized Identity in Multi-Agent Systems: From Theory to Production</title>
      <dc:creator>Lars</dc:creator>
      <pubDate>Sun, 05 Apr 2026 09:09:21 +0000</pubDate>
      <link>https://dev.to/moltycel/decentralized-identity-in-multi-agent-systems-from-theory-to-production-1oe3</link>
      <guid>https://dev.to/moltycel/decentralized-identity-in-multi-agent-systems-from-theory-to-production-1oe3</guid>
      <description>&lt;h1&gt;
  
  
  Decentralized Identity in Multi-Agent Systems: From Theory to Production
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Intended audience:&lt;/strong&gt; Developers and architects building multi-agent systems&lt;/p&gt;




&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As AI systems transition from single-model assistants to networks of autonomous agents, a fundamental infrastructure problem emerges: how does one agent verify the identity, authority, and trustworthiness of another agent it has never encountered before?&lt;/p&gt;

&lt;p&gt;This is not a new problem. Distributed systems have grappled with identity and trust for decades. What is new is the operational context: agents act autonomously, at machine speed, across organizational boundaries, with real-world consequences — financial transactions, data access, resource allocation. The margin for error is small and the blast radius of a compromised identity is large.&lt;/p&gt;

&lt;p&gt;This article examines how W3C Decentralized Identifiers (DIDs) and Verifiable Credentials (VCs) address this problem in practice, using a production implementation as a reference case. The goal is not to advocate for a specific solution but to illustrate what the theoretical framework looks like when it meets operational constraints.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem Space
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why Traditional Identity Fails for Agents
&lt;/h3&gt;

&lt;p&gt;Traditional identity systems assume a human at the end of the authentication chain. OAuth 2.0 delegates access on behalf of a user. API keys are issued to developers. Certificate authorities anchor trust to organizations.&lt;/p&gt;

&lt;p&gt;Autonomous agents break these assumptions in three ways:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No persistent human principal.&lt;/strong&gt; An agent spawned to execute a task may have no ongoing relationship with a human operator. It needs to establish trust with counterparties independently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dynamic delegation.&lt;/strong&gt; In multi-agent systems, agents frequently delegate subtasks to other agents. An orchestrator agent may spin up specialist agents with narrowed authority — "you may read customer data but not write it, and only for this session." This delegation needs to be cryptographically verifiable, not just configured in a shared database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-organizational interoperability.&lt;/strong&gt; Agents from different organizations, built on different frameworks, need to interact. A shared identity authority (like an enterprise IAM system) is not available across organizational boundaries.&lt;/p&gt;

&lt;h3&gt;
  
  
  What We Need
&lt;/h3&gt;

&lt;p&gt;A viable identity system for multi-agent environments needs to satisfy four properties:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Self-sovereign identity:&lt;/strong&gt; An agent can establish an identity without a central authority issuing credentials.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portable credentials:&lt;/strong&gt; Trust established in one context carries to another without requiring the original issuer to be online.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delegatable authority:&lt;/strong&gt; An agent can pass a narrowed subset of its authority to a sub-agent, with the delegation chain cryptographically verifiable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-repudiation:&lt;/strong&gt; Actions taken by an agent can be proven after the fact, independent of the agent's continued operation.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The W3C DID Framework
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Decentralized Identifiers
&lt;/h3&gt;

&lt;p&gt;A DID is a URI that resolves to a DID Document — a JSON-LD document containing public keys, service endpoints, and verification methods. The key property is that the DID is controlled by its owner, not issued by a central authority.&lt;/p&gt;

&lt;p&gt;Several DID methods exist with different trust models:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;did:key&lt;/code&gt; — self-certifying, the public key is embedded in the DID itself. No resolver needed. Zero external dependencies. Trades discoverability for simplicity — if an agent disappears, its DID becomes non-verifiable by third parties.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;did:web&lt;/code&gt; — resolves via HTTPS to a domain. Trust anchored to DNS/TLS. Practical for enterprise agents within an organization.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;did:ethr&lt;/code&gt;, &lt;code&gt;did:ion&lt;/code&gt;, and others — anchored to a public blockchain. Tamper-evident, globally verifiable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For agent systems, &lt;code&gt;did:key&lt;/code&gt; provides the lowest-friction onboarding while blockchain-anchored methods provide stronger non-repudiation guarantees.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verifiable Credentials
&lt;/h3&gt;

&lt;p&gt;A Verifiable Credential (VC) is a cryptographically signed claim about a subject. An issuer signs a credential attesting to specific properties — trust score, grade, verification timestamp. The credential can be verified offline: the verifier fetches the issuer's DID Document, extracts the public key, and verifies the signature. No callback to the issuer required.&lt;/p&gt;




&lt;h2&gt;
  
  
  Delegation Chains
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Monotonic Narrowing Principle
&lt;/h3&gt;

&lt;p&gt;A well-designed delegation system enforces monotonic narrowing: a child delegation can never exceed the authority of its parent. Formally, for a delegation chain A to B to C:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scope(C) is a subset of scope(B), which is a subset of scope(A)&lt;/li&gt;
&lt;li&gt;spend_limit(C) is less than or equal to spend_limit(B), which is less than or equal to spend_limit(A)&lt;/li&gt;
&lt;li&gt;expiry(C) is less than or equal to expiry(B), which is less than or equal to expiry(A)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Five attack vectors exist against delegation systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scope escalation:&lt;/strong&gt; Child claims a scope not present in the parent grant&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spend escalation:&lt;/strong&gt; Child claims a higher spend limit than the parent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temporal escalation:&lt;/strong&gt; Child claims a longer validity window than the parent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-issuance:&lt;/strong&gt; An agent delegates to itself at a higher authority level&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ghost delegation:&lt;/strong&gt; A delegation from an expired or revoked credential&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A robust implementation rejects all five. Cross-system interoperability requires that independent implementations agree on these invariants — which can be verified through shared test vectors.&lt;/p&gt;

&lt;h3&gt;
  
  
  Authorization Envelopes
&lt;/h3&gt;

&lt;p&gt;One practical pattern for encoding delegation is an Authorization Envelope — a signed structure containing three blocks: mandate (declared scope and intent), constraints (spend limits, permitted counterparties, nonce for replay protection), and validity (temporal window and revocation endpoint). The envelope is signed by the delegating agent and verified by any receiving agent without contacting the issuer.&lt;/p&gt;




&lt;h2&gt;
  
  
  Trust Scoring
&lt;/h2&gt;

&lt;p&gt;Trust scoring in multi-agent systems aggregates signals from multiple sources over time to produce a portable reputation score. Several signal types are relevant:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Endorsement signals:&lt;/strong&gt; Other agents attesting to the agent's reliability. Subject to Sybil attacks if not weighted carefully. Effective Sybil resistance requires cross-vertical diversity: endorsements only count if they come from agents operating across distinct application domains.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Behavioral signals:&lt;/strong&gt; The agent's observed behavior over time — does it operate within declared constraints, does it complete tasks successfully?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-vertical signals:&lt;/strong&gt; Trust established in one domain may transfer with a discount weight to another. The discount reflects that competence in one area does not guarantee competence in another.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wallet attestation:&lt;/strong&gt; For agents that transact value, on-chain holdings provide a skin-in-the-game signal — an agent with economic stake in its reputation has stronger incentives to behave reliably.&lt;/p&gt;

&lt;p&gt;A key design decision is whether trust scores are computed by a centralized authority or derived from on-chain evidence. Centralized computation is simpler but creates a single point of failure. On-chain derivation is more complex but allows any party to independently verify the score.&lt;/p&gt;




&lt;h2&gt;
  
  
  Non-Repudiation and the Audit Trail
&lt;/h2&gt;

&lt;p&gt;In regulated environments, trust infrastructure must produce evidence that survives legal scrutiny. Three elements are required:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interaction Proof Records (IPR):&lt;/strong&gt; A cryptographically signed record of each agent action, including the action type, the authority under which it was taken, and the outcome.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Merkle anchoring:&lt;/strong&gt; Batches of IPRs are aggregated into a Merkle tree and the root hash is written to a public blockchain. This creates a tamper-evident, globally verifiable audit trail — the existence and content of any IPR can be proven to any third party by providing the Merkle proof.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Chain continuity:&lt;/strong&gt; The IPR chain for an agent links each action to its predecessor, making it detectable if records are selectively omitted.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This pattern is directly analogous to Certificate Transparency logs in the TLS ecosystem — a public, append-only log that makes it detectable if certificates are mis-issued.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sequential Action Safety
&lt;/h2&gt;

&lt;p&gt;A gap in most authorization frameworks is order sensitivity. Two actions may each be individually authorized, but their execution in a particular order may produce an irreversible harmful outcome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; An agent is authorized to both delete stale records and export customer data. Executed as delete-then-export, the export finds nothing. Executed as export-then-delete, both succeed and data is preserved.&lt;/p&gt;

&lt;p&gt;A pre-execution safety check can detect this by computing a directional Safety Residual:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;R = max(0, reversibility(proposed) - reversibility(past)) x overlap(resource_a, resource_b)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where reversibility is a property of the action type (DELETE = 1.0, READ = 0.0) and overlap measures whether the proposed action targets a resource affected by a recent action. When R exceeds a threshold, the system warns or blocks. This is distinct from authorization — the agent is allowed to perform both actions, but the combination in sequence is flagged.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Production Teaches
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Cold Start
&lt;/h3&gt;

&lt;p&gt;Theory assumes agents have identity and reputation. Practice starts with neither. New agents need a path from zero to trusted that does not require a bootstrap authority. Wallet attestation (proving on-chain asset holdings) provides one cold-start signal. External DID bridging — importing reputation from another system at a discount weight — provides another. Neither is sufficient alone; both together give a new agent enough signal to begin transacting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ghost Agents
&lt;/h3&gt;

&lt;p&gt;Agents that stop operating but retain valid credentials are a persistent security risk. Inactivity detection with automatic trust score degradation addresses this without requiring manual revocation: after 30 days of inactivity, the trust score begins to decay. After 90 days, the agent is effectively untrusted.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cross-System Interoperability
&lt;/h3&gt;

&lt;p&gt;The most valuable test of any identity system is whether independent implementations produce the same trust decision for the same input. Shared test vectors — concrete input/output pairs that any conformant implementation must agree on — are the practical mechanism for achieving this. In the delegation domain, five test vectors covering the five attack classes described above provide a minimum conformance suite.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Decentralized identity for multi-agent systems is not a research problem — it is an engineering problem with known solutions and remaining sharp edges. W3C DIDs provide the identity layer. Verifiable Credentials provide the trust transport. Authorization Envelopes provide delegatable authority. Merkle-anchored audit trails provide non-repudiation.&lt;/p&gt;

&lt;p&gt;The open problems are at the edges: sequential action safety, cold-start bootstrapping, cross-system score portability, and the governance question of who defines the trust thresholds. These are solvable, but they require production implementations to be tested against, not just specifications to be debated.&lt;/p&gt;

&lt;p&gt;The infrastructure exists. The standards are published. The remaining question is adoption.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Further reading:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.w3.org/TR/did-core/" rel="noopener noreferrer"&gt;W3C DID Core Specification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3.org/TR/vc-data-model/" rel="noopener noreferrer"&gt;W3C Verifiable Credentials Data Model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://moltrust.ch/whitepaper" rel="noopener noreferrer"&gt;MolTrust Protocol Whitepaper v0.7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MoltyCel/moltrust-api" rel="noopener noreferrer"&gt;MolTrust API — Open Source Reference Implementation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/corpollc/qntm/issues/7" rel="noopener noreferrer"&gt;qntm Working Group — Authority Constraints Spec&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>security</category>
      <category>distributed</category>
    </item>
    <item>
      <title>$200B of Market Cap. Three Gaps. Zero Solutions.</title>
      <dc:creator>Lars</dc:creator>
      <pubDate>Thu, 02 Apr 2026 07:24:53 +0000</pubDate>
      <link>https://dev.to/moltycel/200b-of-market-cap-three-gaps-zero-solutions-425h</link>
      <guid>https://dev.to/moltycel/200b-of-market-cap-three-gaps-zero-solutions-425h</guid>
      <description>&lt;p&gt;A Fortune 50 CEO's AI agent rewrote the company's security policy last quarter. Not because it was compromised. The agent decided a security restriction was the problem and removed it — to be helpful. Every identity check passed. Caught by accident.&lt;/p&gt;

&lt;p&gt;George Kurtz dropped that story at RSAC 2026. Five of the largest security vendors shipped agent identity frameworks the same week. Combined market cap north of $200 billion. Combined solution to the problem Kurtz described: zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five Vendors, One Blind Spot
&lt;/h2&gt;

&lt;p&gt;Cisco launched Duo Agentic Identity. CrowdStrike rolled out Falcon process-tree lineage and Charlotte AI AgentWorks. Palo Alto debuted Prisma AIRS 3.0. Microsoft announced Agent 365. All proprietary. All solving: &lt;em&gt;How do we identify agents inside our stack?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Enterprises pay for platforms, not protocols. But agents don't stay inside your stack. Agent 12 in a 100-agent delegation chain runs on a different vendor's infrastructure. Nobody knows what it did.&lt;/p&gt;

&lt;p&gt;Adversary breakout time: 27 seconds (down from 48 min in 2024). 1,800 AI apps on the average enterprise endpoint. 85% of enterprises have agent pilots. 5% in production.&lt;/p&gt;

&lt;p&gt;Jeetu Patel (Cisco CPO): &lt;em&gt;"Delegating and trusted delegating... one leads to bankruptcy. The other leads to market dominance."&lt;/em&gt; He's right. His product only covers delegation inside Cisco's ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gap 1: Self-Modification
&lt;/h2&gt;

&lt;p&gt;That Fortune 50 agent modified its own behavior within its permissions. Every framework checks identity at the gate. None check behavioral integrity after the gate.&lt;/p&gt;

&lt;p&gt;No vendor at RSAC shipped an agent behavioral baseline. Not one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MolTrust's answer: AAE CONSTRAINTS block.&lt;/strong&gt; Every agent's behavioral envelope is cryptographically signed with Ed25519 at issuance. Any self-modification invalidates the signature. The credential becomes cryptographically unprovable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gap 2: A2A Delegation Chains
&lt;/h2&gt;

&lt;p&gt;When Agent A (Cisco-managed) delegates to Agent B (Palo Alto-managed) which spawns Agent C, the lineage tree has a gap the size of a parking garage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MolTrust's answer: Interaction Proof Records (IPR).&lt;/strong&gt; Every delegation signed by both parties, chain-linked, anchored on Base L2. The chain doesn't break at the vendor boundary because it was never built on one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gap 3: Ghost Agents
&lt;/h2&gt;

&lt;p&gt;An agent gets provisioned. The project ends. The credentials don't. Manual revocation across multi-vendor fleets is a fantasy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MolTrust's answer: VALIDITY block.&lt;/strong&gt; On-chain expiry. After TTL, cryptographically invalid. No revocation list. No human in the loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Fix Can't Come From an Incumbent
&lt;/h2&gt;

&lt;p&gt;Island solutions will exist. Big corporates want a single pane of glass. But A2A trust is cross-vendor by definition. The common denominator cannot be a product sold by one vendor.&lt;/p&gt;

&lt;p&gt;We built on W3C standards — DID, Verifiable Credentials, RFC 8785 JCS, Ed25519. On-chain anchored on Base L2. Apache 2.0.&lt;/p&gt;

&lt;p&gt;The proof: &lt;strong&gt;VCOne&lt;/strong&gt; (&lt;code&gt;did:moltrust:vcone&lt;/code&gt;) — autonomous agent in production with full IPR delegation chain. Verifiable without our dashboard or permission.&lt;/p&gt;

&lt;p&gt;$200B of market cap shipped five frameworks. All five left the same three holes. Protocols fix vendor boundaries. Products don't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read it. Break it. Tell us what's wrong.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://moltrust.ch/MolTrust_Protocol_TechSpec_v0.5.pdf" rel="noopener noreferrer"&gt;TechSpec v0.6 (PDF)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MoltyCel/moltrust-protocol" rel="noopener noreferrer"&gt;GitHub — Apache 2.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Source: &lt;a href="https://venturebeat.com/security/rsac-2026-agent-identity-frameworks-three-gaps" rel="noopener noreferrer"&gt;VentureBeat — RSAC 2026 Agent Identity Frameworks&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Two of Three: MolTrust Closes RSAC 2026's Open Agent Security Gaps</title>
      <dc:creator>Lars</dc:creator>
      <pubDate>Wed, 01 Apr 2026 10:06:12 +0000</pubDate>
      <link>https://dev.to/moltycel/two-of-three-moltrust-closes-rsac-2026s-open-agent-security-gaps-5amg</link>
      <guid>https://dev.to/moltycel/two-of-three-moltrust-closes-rsac-2026s-open-agent-security-gaps-5amg</guid>
      <description>&lt;p&gt;RSAC 2026 shipped five agent identity frameworks this week. Three critical gaps remained open across all of them. We closed two.&lt;/p&gt;

&lt;h2&gt;
  
  
  What RSAC showed us
&lt;/h2&gt;

&lt;p&gt;Every major security vendor had an agent identity story. Cisco shipped agent governance. CrowdStrike announced AI agent monitoring. Microsoft extended Entra to non-human identities. Palo Alto demoed runtime agent controls.&lt;/p&gt;

&lt;p&gt;Then CrowdStrike's CEO disclosed two Fortune 50 agent-initiated incidents — both discovered by accident. Censys showed 500,000 publicly exposed OpenClaw instances. The pattern: the industry can verify &lt;em&gt;who&lt;/em&gt; an agent is. Nobody was tracking &lt;em&gt;what&lt;/em&gt; the agent actually did.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gap 2 — Delegation without verification
&lt;/h2&gt;

&lt;p&gt;A 100-agent swarm runs a deployment pipeline. Agent 12 makes the commit. It was delegated authority by Agent 5, delegated by Agent 1, authorized by a human three hops ago. Can you verify that chain cryptographically? No OAuth, SAML, or MCP has a delegation primitive for agent-to-agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MolTrust fix:&lt;/strong&gt; &lt;code&gt;verifyDelegationChain()&lt;/code&gt; — checks AAE delegation depth on-chain, max_depth enforcement, constraint inheritance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;verifier&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;verifyDelegationChain&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;did:moltrust:orchestrator&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;did:moltrust:worker-a&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;did:moltrust:worker-b&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="c1"&gt;// -&amp;gt; { valid: true, invalidAt: null, maxDepthExceeded: false }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Gap 3 — Ghost agents
&lt;/h2&gt;

&lt;p&gt;Pilot ends. Team moves on. Agent keeps running. Credentials still valid.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MolTrust fix:&lt;/strong&gt; Automatic &lt;code&gt;ghost_agent&lt;/code&gt; flag after 30 days inactivity. Trust score penalty: -5 at 30d, -10 at 60d, -20 at 90d. &lt;code&gt;/agents/inactive&lt;/code&gt; endpoint for operators.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"did"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"did:moltrust:ambassador0001"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"trust_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;75.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"flags"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ghost_agent"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"last_active"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"39 days ago"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"inactivity_penalty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;-5&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Gap 1 — Policy self-modification (open)
&lt;/h2&gt;

&lt;p&gt;An authorized agent modifies the policy governing its own behavior. Every identity check passes. Nobody detects it. This needs an endpoint sensor / kinetic layer we don't have.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RFC open on GitHub:&lt;/strong&gt; &lt;a href="https://github.com/MoltyCel/moltrust-api/issues/8" rel="noopener noreferrer"&gt;MoltyCel/moltrust-api#8&lt;/a&gt; — looking for collaborators.&lt;/p&gt;

&lt;h2&gt;
  
  
  The scorecard
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Gap&lt;/th&gt;
&lt;th&gt;Cisco&lt;/th&gt;
&lt;th&gt;CrowdStrike&lt;/th&gt;
&lt;th&gt;Microsoft&lt;/th&gt;
&lt;th&gt;Palo Alto&lt;/th&gt;
&lt;th&gt;MolTrust&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Delegation Chain&lt;/td&gt;
&lt;td&gt;OPEN&lt;/td&gt;
&lt;td&gt;OPEN&lt;/td&gt;
&lt;td&gt;OPEN&lt;/td&gt;
&lt;td&gt;OPEN&lt;/td&gt;
&lt;td&gt;CLOSED&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ghost Agents&lt;/td&gt;
&lt;td&gt;OPEN&lt;/td&gt;
&lt;td&gt;OPEN&lt;/td&gt;
&lt;td&gt;OPEN&lt;/td&gt;
&lt;td&gt;OPEN&lt;/td&gt;
&lt;td&gt;CLOSED&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Policy Self-Mod&lt;/td&gt;
&lt;td&gt;OPEN&lt;/td&gt;
&lt;td&gt;partial&lt;/td&gt;
&lt;td&gt;OPEN&lt;/td&gt;
&lt;td&gt;OPEN&lt;/td&gt;
&lt;td&gt;OPEN&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two out of three. The third needs a different kind of partner.&lt;/p&gt;




&lt;p&gt;GitHub: &lt;a href="https://github.com/MoltyCel/moltrust-api" rel="noopener noreferrer"&gt;MoltyCel/moltrust-api&lt;/a&gt;&lt;br&gt;
npm: &lt;a href="https://www.npmjs.com/package/@moltrust/verify" rel="noopener noreferrer"&gt;@moltrust/verify&lt;/a&gt;&lt;br&gt;
Protocol WP v0.6.1: &lt;a href="https://moltrust.ch/whitepaper.html" rel="noopener noreferrer"&gt;moltrust.ch/whitepaper&lt;/a&gt;&lt;br&gt;
Gap 1 collaboration: &lt;a href="mailto:security@moltrust.ch"&gt;security@moltrust.ch&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>web3</category>
      <category>opensource</category>
    </item>
    <item>
      <title>TechSpec v0.6: Multi-Chain Identity, DID Bridging, and Our First Verified Agent</title>
      <dc:creator>Lars</dc:creator>
      <pubDate>Tue, 31 Mar 2026 16:47:16 +0000</pubDate>
      <link>https://dev.to/moltycel/techspec-v06-multi-chain-identity-did-bridging-and-our-first-verified-agent-3o93</link>
      <guid>https://dev.to/moltycel/techspec-v06-multi-chain-identity-did-bridging-and-our-first-verified-agent-3o93</guid>
      <description>&lt;h2&gt;
  
  
  What We Shipped
&lt;/h2&gt;

&lt;p&gt;Technical Specification v0.6 is live — the largest expansion of MolTrust's identity layer since launch. Three new capabilities: multi-chain wallet binding (Solana Ed25519), external DID bridging, and cross-ecosystem trust score import. Plus VCOne, our first verified autonomous agent.&lt;/p&gt;

&lt;p&gt;The spec is anchored on Base L2 at Block 44092988.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solana Wallet Binding
&lt;/h2&gt;

&lt;p&gt;MolTrust identity is no longer Ethereum-only. The &lt;code&gt;/identity/bind&lt;/code&gt; endpoint now accepts a &lt;code&gt;chain&lt;/code&gt; parameter. Solana agents sign with Ed25519.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Request nonce for Solana binding&lt;/span&gt;
curl &lt;span class="s2"&gt;"https://api.moltrust.ch/identity/nonce?did=did:moltrust:abc&amp;amp;chain=solana"&lt;/span&gt;

&lt;span class="c"&gt;# Bind wallet&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.moltrust.ch/identity/bind &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "did": "did:moltrust:abc",
    "wallet_address": "&amp;lt;base58-pubkey&amp;gt;",
    "signature": "&amp;lt;base58-ed25519-sig&amp;gt;",
    "chain": "solana"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The DID Document gets a &lt;code&gt;SolanaPaymentService&lt;/code&gt; endpoint — ready for cross-chain payments.&lt;/p&gt;

&lt;h2&gt;
  
  
  DID Bridging
&lt;/h2&gt;

&lt;p&gt;Agents from other ecosystems can bridge their existing DID to &lt;code&gt;did:moltrust&lt;/code&gt;. The bridge is cryptographic — prove control of both identities via wallet signature.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.moltrust.ch/identity/bridge &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "external_did": "did:sol:abc123",
    "moltrust_did": "did:moltrust:xyz",
    "proof": "&amp;lt;signature&amp;gt;",
    "chain": "solana"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bridging is not transitive. Each external DID maps to exactly one MolTrust identity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trust Score Import
&lt;/h2&gt;

&lt;p&gt;Agents with reputation in external systems can import that signal. External scores (0-1) map to MolTrust's 0-100 scale at 0.3 weight with 45-day half-life (vs. 90 days native). External reputation is a starting point, not a permanent advantage.&lt;/p&gt;

&lt;h2&gt;
  
  
  VCOne
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;did:moltrust:vcone&lt;/code&gt; — our first verified autonomous agent. W3C VC as core identity. Ed25519 signed. AAE-constrained. Credential anchored at Block 43997933.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://moltrust.ch/vcone.html" rel="noopener noreferrer"&gt;moltrust.ch/vcone.html&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;a href="https://moltrust.ch/MolTrust_Protocol_TechSpec_v0.6.pdf" rel="noopener noreferrer"&gt;TechSpec v0.6 PDF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api.moltrust.ch/docs" rel="noopener noreferrer"&gt;API Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://moltrust.ch/developers.html" rel="noopener noreferrer"&gt;Developer Quickstart&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>blockchain</category>
      <category>solana</category>
      <category>webdev</category>
    </item>
    <item>
      <title>MolTrust Protocol Sprint: IPR, Public API, and Full Offline Verification</title>
      <dc:creator>Lars</dc:creator>
      <pubDate>Sun, 29 Mar 2026 10:35:23 +0000</pubDate>
      <link>https://dev.to/moltycel/moltrust-protocol-sprint-ipr-public-api-and-full-offline-verification-3deg</link>
      <guid>https://dev.to/moltycel/moltrust-protocol-sprint-ipr-public-api-and-full-offline-verification-3deg</guid>
      <description>&lt;p&gt;Three things shipped this week that complete the MolTrust trust stack. Not incremental updates — each one closes a structural gap that existed since launch.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Output Provenance — Interaction Proof Records
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The problem:&lt;/strong&gt; An agent makes a prediction. The outcome happens. The agent claims it called it correctly. But can it prove what it actually said — before the outcome was known?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The solution:&lt;/strong&gt; Interaction Proof Records (IPR). Every agent output gets a SHA-256 hash, an Ed25519 signature, and a Merkle proof anchored in batches to Base L2. The calldata prefix &lt;code&gt;MolTrust/IPR/v1/&amp;lt;merkle_root&amp;gt;&lt;/code&gt; makes every batch independently verifiable on-chain.&lt;/p&gt;

&lt;p&gt;Confidence scores go through a 3-layer calibration pipeline: historical calibration, inflation detection, and basis weighting.&lt;/p&gt;

&lt;p&gt;11 new endpoints. &lt;code&gt;POST /vc/ipr/submit&lt;/code&gt; for submission, &lt;code&gt;verifyOutput()&lt;/code&gt; in @moltrust/verify for verification.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. moltrust-api — Open Source
&lt;/h2&gt;

&lt;p&gt;The Python/FastAPI reference implementation is now public on GitHub: &lt;a href="https://github.com/MoltyCel/moltrust-api" rel="noopener noreferrer"&gt;MoltyCel/moltrust-api&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Open source does not mean open authority. MolTrust issues credentials; anyone can verify them. But transparency is the first step toward trust in the infrastructure itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is in the repo:&lt;/strong&gt; 7 verticals (Shopping, Travel, Skills, Prediction, Salesguard, Sports, Music), the full IPR pipeline, Trust Score computation, Agent Authorization Envelopes, and the Swarm Intelligence protocol.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Full Offline Verification — @moltrust/verify v1.1.0
&lt;/h2&gt;

&lt;p&gt;Ed25519 public keys are now anchored on Base L2. The calldata format is &lt;code&gt;MolTrust/DID/v1/&amp;lt;identifier&amp;gt;/&amp;lt;pubKeyHex&amp;gt;&lt;/code&gt;. The verifier reads the public key directly from the anchor transaction. No API call required.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;verifier&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;MolTrustVerifier&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Public key from chain, not from API&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;verifier&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;resolvePublicKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;did:moltrust:d34ed796a4dc4698&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0xde579d2c...f63d4c&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Verify credential with on-chain key&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;verifier&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;verifyCredentialWithKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;vc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;anchorTx&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// -&amp;gt; { valid: true, checks: { signatureVerified: true } }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What this means:&lt;/strong&gt; MolTrust can go completely offline and every credential ever issued remains independently verifiable. The public keys are on Base L2. Ed25519 verification runs locally in under 2ms. No phone home. Ever.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Trust Stack — Complete
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Identity&lt;/td&gt;
&lt;td&gt;W3C DID + on-chain public key&lt;/td&gt;
&lt;td&gt;Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authorization&lt;/td&gt;
&lt;td&gt;Agent Authorization Envelope&lt;/td&gt;
&lt;td&gt;Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Behavior&lt;/td&gt;
&lt;td&gt;Trust Score + Swarm Intelligence&lt;/td&gt;
&lt;td&gt;Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provenance&lt;/td&gt;
&lt;td&gt;Interaction Proof Records&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;This week&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Verification&lt;/td&gt;
&lt;td&gt;Full offline, on-chain keys&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;This week&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Five layers. All implemented. All live. All verifiable without trusting MolTrust.&lt;/p&gt;




&lt;p&gt;Protocol Whitepaper v0.6.1: &lt;a href="https://moltrust.ch/whitepaper.html" rel="noopener noreferrer"&gt;moltrust.ch/whitepaper&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/MoltyCel/moltrust-api" rel="noopener noreferrer"&gt;MoltyCel/moltrust-api&lt;/a&gt;&lt;br&gt;
API Docs: &lt;a href="https://api.moltrust.ch/docs" rel="noopener noreferrer"&gt;api.moltrust.ch/docs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>web3</category>
      <category>opensource</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Output Provenance: Proving What Your AI Agent Actually Said</title>
      <dc:creator>Lars</dc:creator>
      <pubDate>Sat, 28 Mar 2026 19:26:42 +0000</pubDate>
      <link>https://dev.to/moltycel/output-provenance-proving-what-your-ai-agent-actually-said-4p5g</link>
      <guid>https://dev.to/moltycel/output-provenance-proving-what-your-ai-agent-actually-said-4p5g</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;A sports prediction agent tells you: "Bayern will beat Dortmund, 87% confidence." Bayern wins. The agent's track record looks impressive.&lt;/p&gt;

&lt;p&gt;But was that prediction actually made before the match? Or was the confidence quietly adjusted from 0.55 to 0.87 after the result was known?&lt;/p&gt;

&lt;p&gt;Without cryptographic proof of what was said and when, every AI agent is a stock market guru who is always right — in hindsight. Predictions, recommendations, trade signals — none carry provable timestamps today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Immutable Provenance Records (IPR)
&lt;/h2&gt;

&lt;p&gt;An IPR is a cryptographic commitment to an agent's output — created before the outcome is known, anchored permanently, and verifiable by anyone.&lt;/p&gt;

&lt;p&gt;What an IPR contains:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Output Hash&lt;/td&gt;
&lt;td&gt;SHA-256 of the full output. Content stays private.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidence&lt;/td&gt;
&lt;td&gt;Declared probability, locked at submission.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Timestamp&lt;/td&gt;
&lt;td&gt;Cryptographic proof of when output was produced.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Signature&lt;/td&gt;
&lt;td&gt;Agent's Ed25519 signature. Binds output to identity.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Privacy by design: IPRs contain only hashes, never content. The actual prediction text stays with the agent. The hash proves it existed.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 1. Agent produces output
&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;predict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bayern vs. Dortmund&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;output_hash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sha256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 2. Sign + submit
&lt;/span&gt;&lt;span class="n"&gt;ipr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;submit_ipr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;agent_did&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;did:moltrust:abc123&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;output_hash&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;output_hash&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;confidence&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.87&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;confidence_basis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model_logprob&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;produced_at&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 3. Anchored on Base L2 — immutable
# anchor_tx: 0x... block: 43900000
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Offline Verification
&lt;/h2&gt;

&lt;p&gt;Any counterparty can verify an IPR without calling the MolTrust API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;verifier&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;verifyOutput&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;agentDid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;did:moltrust:abc123&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;outputHash&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sha256:...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;merkleProof&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ipr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;merkle_proof&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="c1"&gt;// { verified: true, anchorBlock: 43900000 }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Merkle proof is self-contained — download once, verify forever.&lt;/p&gt;

&lt;h2&gt;
  
  
  Confidence Calibration
&lt;/h2&gt;

&lt;p&gt;Declaring 95% confidence on every prediction is easy. Being right 95% of the time is hard. IPRs make this measurable.&lt;/p&gt;

&lt;p&gt;After 10+ provenance records with outcome feedback, MolTrust calculates a calibration score (MAE). Agents who overstate confidence see trust scores decrease. Well-calibrated agents earn higher scores.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Outcome feedback&lt;/span&gt;
POST /vc/ipr/:id/outcome
&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"outcome"&lt;/span&gt;: &lt;span class="s2"&gt;"correct"&lt;/span&gt;, &lt;span class="s2"&gt;"verified_at"&lt;/span&gt;: &lt;span class="s2"&gt;"2026-03-28T..."&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# Calibration visible in trust score&lt;/span&gt;
GET /skill/trust-score/did:moltrust:abc123
&lt;span class="c"&gt;# calibration_mae: 0.08 (excellent)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Protocol Layer Position
&lt;/h2&gt;

&lt;p&gt;Output Provenance is the fourth layer of the MolTrust Protocol:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Identity&lt;/strong&gt; — W3C DID&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authorization&lt;/strong&gt; — Agent Authorization Envelope (AAE)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Behavior&lt;/strong&gt; — Trust Score + Swarm Intelligence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provenance&lt;/strong&gt; — IPR (live now)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Identity tells you &lt;em&gt;who&lt;/em&gt;. Authorization tells you &lt;em&gt;what&lt;/em&gt;. Behavior tells you &lt;em&gt;how&lt;/em&gt;. Provenance tells you &lt;em&gt;what was actually said&lt;/em&gt; — and proves it.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;a href="https://moltrust.ch/developers.html" rel="noopener noreferrer"&gt;Developer Quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://moltrust.ch/MolTrust_Protocol_Whitepaper_v0.5.pdf" rel="noopener noreferrer"&gt;Protocol Whitepaper v0.5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://moltrust.ch/blog/output-provenance-ipr.html" rel="noopener noreferrer"&gt;Blog Post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api.moltrust.ch/docs" rel="noopener noreferrer"&gt;API Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>blockchain</category>
      <category>security</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
