Description
Signatrust
The trust, verification, and accountability layer for autonomous AI agents.


signatrust.net · Documentation · ADR Specification · Verify a receipt
—
What is Signatrust?
Signatrust generates and verifies cryptographically signed AI Decision Receipts. Each receipt is independently verifiable evidence of an autonomous AI action — without exposing prompts, outputs, or sensitive business data.
Every AI decision becomes a verifiable, non-repudiable fact.
—
Core capabilities
| Capability | Description |
|—|—|
| Ed25519-signed receipts | Every AI decision is sealed into a tamper-evident, hash-chained receipt |
| Decision Boundary Disclosure | Receipts declare which domains were evaluated and excluded — backed by versioned sector schemas |
| Independent verification | Any party can verify a receipt without accessing raw data or your systems |
| Chain of custody | Tool-call-level sealing with shared trace_id across agent steps |
| Privacy-preserving | Only SHA-256 fingerprints leave your infrastructure — never raw content |
| Sector schemas | 8 pre-built schemas (automotive, medical, credit, insurance, HR, legal, industrial IoT, generic) |
| AI Agent agnostic | Works with any model, framework, or orchestration platform |
—
Packages & integrations
| Directory | Description | Status |
|—|—|—|
| sdk-js/ | JavaScript/TypeScript SDK (signatrust on npm) | ✅ Live |
| n8n-node/ | Official n8n Community Node | ✅ Live |
| langchain-signatrust/ | LangChain integration | ✅ Live |
| crewai-signatrust/ | CrewAI integration | ✅ Live |
| autogen-signatrust/ | AutoGen integration | ✅ Live |
| openai-agents-signatrust/ | OpenAI Agents SDK integration | ✅ Live |
—
Quick start (JavaScript/TypeScript)
import { Signatrust } from 'signatrust';const str = new Signatrust({ apiKey: process.env.SIGNATRUSTAPIKEY });
const { receipt } = await str.sign({
model: { provider: 'openai', name: 'gpt-4o', version: '2026.4' },
decision: {
type: 'loan_rejection',
input, // hashed locally — raw data never leaves
output, // hashed locally
risk_level: 'high',
human_review: true,
policies: ['eu-ai-act-high-risk'],
},
});
const { valid } = await str.verify(receipt.id); // true
—
Decision Boundary Disclosure (DBD)
Not just what the AI decided — what it didn’t consider. DBD extends receipts with a signed scope declaration:
const { receipt } = await str.sign({
decision: { type: 'collisionassessment', input, output, risklevel: 'high' },
scope_declaration: {
sectorschemaid: 'automotive_collision.v1',
domains_evaluated: [
{ domainid: 'physicsimpact_force', status: 'computed' },
{ domainid: 'vehiclestructural_integrity', status: 'computed' },
],
domains_excluded: [
{ domainid: 'occupantbiologicalimpact', reason: 'nodatasourceavailable', excludedby: 'datagap' },
{ domainid: 'pedestrianthirdpartyimpact', reason: 'notinscopeofthismodule', excludedby: 'design' },
// ... all remaining domains must be declared
],
},
});console.log(receipt.scopedeclaration.coverageclassification); // 'partial'
Key rules:
- Every domain in the sector schema must be classified as evaluated or excluded — silent omission is rejected at signing time.
- Coverage classification (full/partial/minimal), disclosure statement, and schema hash are computed server-side.
- The scope declaration is inside the signed body — non-repudiable.
Browse schemas: GET https://signatrust.net/api/v1/schemas
—
Chain of custody — tool-call-level sealing
const trace = str.trace({ mode: 'everytoolcall' });await trace.step({ steptype: 'toolcall', toolname: 'search', decision: { type: 'searchresult', output: results } });
await trace.step({ steptype: 'toolcall', toolname: 'dblookup', decision: { type: 'lookup', output: rows } });
await trace.step({ steptype: 'finalresponse', decision: { type: 'loandecision', input, output, risklevel: 'high' } });
console.log(trace.traceid, trace.receipts.length); // trace..., 3
—
How it works
AI Agent makes a decision
↓
POST /api/v1/receipts (with optional scope_declaration)
↓
Returns: receipt + signature + hash + verify_url
↓
Anyone verifies at: https://signatrust.net/verify
No raw prompts, no model outputs, no sensitive data leaves your system.
—
Links
—
© 2026 Signatrust — Apache-2.0