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.jsThe 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:
| Route | Purpose |
|---|---|
POST /verify | read-only PolicyVault simulation |
GET /receipt/:paymentIdHashHex | feedback log lookup |
POST /settle | atomic settlement surface |
POST /dispute | negative 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: CounterpartyTierBelowMinPinned devnet IDs
policy_vault
8Y6fGeNEHgmWmbt8JsRcF72jxbeBfJhomMjG6SuoJQTRtrustgate
HF8zHfoyA7b5mhLViopTnRMprc6ZT5KActHTdkFrih2Nvalidation_registry
Cx4RFa6ysw3qXYhugPkF8pFSWBkmKq59h2dWgF2tKhtvSource references
- SDK package:
@agenttrust-sdk/trustgate - Repository:
github.com/mohit-1710/agenttrust - SDK source:
trustgate/sdk/src/client.ts,trustgate/sdk/src/express.ts