Skip to main content
For teams deploying AI agents under audit

Prove what your AI agent actually did.

Cryptographically signed, independently timestamped receipts for every action your agent takes — scoped to a human-granted authorization, verifiable by anyone without trusting your servers. A log you wrote yourself is a claim. A CertNode receipt is evidence.

Why this, and why now

When an agent issues a refund, sends a record, or executes a transfer, “what did it actually do, and was it allowed to?” becomes a question you may have to answer to a regulator, an auditor, or a court.

EU AI Act Article 12 & 14

High-risk obligations phasing in through 2026 require traceable records of automated decisions and evidence that human-oversight measures actually fired — not documentation that they exist. A self-reported log requires trusting the operator; a cryptographic receipt does not.

Records you cannot repudiate

Every action is signed (ES256 JWS) over a content hash, timestamped by an independent RFC 3161 authority, and anchored to Bitcoin. Structured to the FRE 902(13)/(14) self-authenticating standard for electronic records.

Human authorization chains

“Human X authorized Agent Y to do Z, within constraints W, until time T” — signed, with explicit scope, prohibited actions, and expiry. Every action is checked against it.

Model- and framework-neutral

Works with Claude, OpenAI, or any agent stack. A one-line wrapper for the Vercel AI SDK ships in the package; any framework integrates through one POST per action.

Log, do not gate

CertNode records every action and flags the ones outside scope, integrating in one line around your existing agent — no blocking gate to wire into every step. Recording is the default because most teams need the audit trail first. If you also want hard enforcement, turn it on per tool and an out-of-scope action throws before it returns.

How the three-layer stack works →

One line around a Vercel AI SDK tool

import { tool } from 'ai'
import { AgentClient, accountableTool } from '@certnode/agent-sdk'

const agent = new AgentClient({
  apiKey: process.env.CERTNODE_API_KEY,
  agentType: 'support-agent',
  agentName: 'Support Bot',
})

const auth = await agent.createAuthorization({
  grantedByUserId: 'u_1',
  grantedByName: 'Sarah Chen',
  scope: ['issue_refund'],
  prohibitedActions: ['close_account'],
})

// Every call to this tool is now signed, timestamped, and scope-checked:
const refundTool = accountableTool(
  agent,
  { authorizationId: auth.id, actionType: 'issue_refund' },
  tool({ /* description, parameters, execute */ })
)

Start with one signed action.

Install the SDK, authorize an agent, log an action, and verify the receipt — anyone can check it without access to your systems.