AgentTrust
AgentTrust
Getting started
Getting started

Quickstart

Install the SDK, run a read-only gate, and mount the Express x402 routes.

This page gets a facilitator from zero to a read-only gatePayment() check against devnet.

Install

pnpm add @agenttrust-sdk/trustgate express @solana/web3.js

The public package is @agenttrust-sdk/trustgate. The source lives at github.com/mohit-1710/agenttrust.

Read a decision

gatePayment() simulates PolicyVault and returns one of three decision shapes. It does not settle funds.

import { Keypair, PublicKey } from "@solana/web3.js";
import { gatePayment } from "@agenttrust-sdk/trustgate/client";

const facilitator = Keypair.fromSecretKey(secretKey);

const decision = await gatePayment({
  rpcUrl: "https://api.devnet.solana.com",
  caller: facilitator,
  payerAgentAsset: new PublicKey("payer-agent-asset-pubkey"),
  payeeAgentAsset: new PublicKey("payee-agent-asset-pubkey"),
  amount: 1_000_000n,
  mint: new PublicKey("mint-pubkey"),
  policyId: 1,
});

switch (decision.kind) {
  case "Allow":
    break;
  case "Deny":
    console.error(decision.reasonCode, decision.reasonName);
    break;
  case "RequireValidation":
    console.error(decision.capabilityHash);
    break;
}

Mount the x402 routes

mountTrustGate() binds four endpoints to an Express app:

RoutePurpose
POST /verifyread-only PolicyVault simulation
GET /receipt/:paymentIdHashHexfeedback log lookup
POST /settleatomic settlement surface
POST /disputenegative feedback surface
import express from "express";
import { Keypair } from "@solana/web3.js";
import { mountTrustGate } from "@agenttrust-sdk/trustgate/express";

const app = express();
app.use(express.json());

await mountTrustGate(app, {
  rpcUrl: "https://api.devnet.solana.com",
  facilitatorKeypair: Keypair.fromSecretKey(secretKey),
  defaultPolicyId: 1,
  network: "solana-devnet",
  atomicityEnforced: true,
});

app.listen(3000);

Headers returned by /verify

TrustGate maps PolicyVault decisions into x402-compatible headers.

X-Payment-Network: solana-devnet
X-Agent-Trust-Decision: Deny
X-Payment-Required: denied
X-Payment-Reason-Code: 6
X-Payment-Reason-Name: CounterpartyTierBelowMin

Pinned devnet IDs

policy_vault8Y6fGeNEHgmWmbt8JsRcF72jxbeBfJhomMjG6SuoJQTR
trustgateHF8zHfoyA7b5mhLViopTnRMprc6ZT5KActHTdkFrih2N
validation_registryCx4RFa6ysw3qXYhugPkF8pFSWBkmKq59h2dWgF2tKhtv

Source references

  • SDK package: @agenttrust-sdk/trustgate
  • Repository: github.com/mohit-1710/agenttrust
  • SDK source: trustgate/sdk/src/client.ts, trustgate/sdk/src/express.ts
repo github.com/mohit-1710/agenttrustnpm @agenttrust-sdk/trustgateMIT

On this page

⌘I