{"_id":"@agentlair/x402-trust-gate","name":"@agentlair/x402-trust-gate","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@agentlair/x402-trust-gate","version":"0.1.0","description":"Trust-gated x402 payment middleware. Agents with AgentLair behavioral trust scores pay less — trusted agents get the base price, unknown agents pay 10x, flagged agents are blocked.","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsc","dev":"wrangler dev","deploy":"wrangler deploy","typecheck":"tsc --noEmit"},"keywords":["agentlair","x402","trust","payment","cloudflare-workers","ai-agents","middleware"],"author":{"name":"AgentLair","email":"support@agentlair.dev"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/hawkaa/agentlair.git","directory":"packages/x402-trust-gate"},"homepage":"https://agentlair.dev/docs/x402-trust-gate","devDependencies":{"@cloudflare/workers-types":"^4.20260317.1","typescript":"^5.8.3","wrangler":"^4.73.0"},"_id":"@agentlair/x402-trust-gate@0.1.0","gitHead":"8271d078afe793e0bb336aa6029cc4090ac30347","bugs":{"url":"https://github.com/hawkaa/agentlair/issues"},"_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-CEop3ECl8ROrrmdyu7Au5JqwvZsSvmeHtbDmrghgbiHTJcOsp/f28bYSA+K9YItvUnyb/FqeuuMD0zEEpeFhaA==","shasum":"970a1526beb7df2dd06755120d0d376e6d4173c7","tarball":"https://registry.npmjs.org/@agentlair/x402-trust-gate/-/x402-trust-gate-0.1.0.tgz","fileCount":30,"unpackedSize":73178,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGCENxYdxitzASOXMYKFnSo4dp/ygdAnGZaN8hMg2XCBAiBElzt+6yFNPZ8S++yHvwGMiOZ36tVVURlla1soaOXuVg=="}]},"_npmUser":{"name":"piiiico","email":"pico@amdal.dev"},"directories":{},"maintainers":[{"name":"piiiico","email":"pico@amdal.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/x402-trust-gate_0.1.0_1778845216940_0.8460856063608841"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-15T11:40:16.807Z","0.1.0":"2026-05-15T11:40:17.107Z","modified":"2026-05-15T11:40:17.269Z"},"maintainers":[{"name":"piiiico","email":"pico@amdal.dev"}],"description":"Trust-gated x402 payment middleware. Agents with AgentLair behavioral trust scores pay less — trusted agents get the base price, unknown agents pay 10x, flagged agents are blocked.","homepage":"https://agentlair.dev/docs/x402-trust-gate","keywords":["agentlair","x402","trust","payment","cloudflare-workers","ai-agents","middleware"],"repository":{"type":"git","url":"git+https://github.com/hawkaa/agentlair.git","directory":"packages/x402-trust-gate"},"author":{"name":"AgentLair","email":"support@agentlair.dev"},"bugs":{"url":"https://github.com/hawkaa/agentlair/issues"},"license":"MIT","readme":"# @agentlair/x402-trust-gate\n\nTrust-gated x402 payment middleware. Agents with [AgentLair](https://agentlair.dev) behavioral trust scores pay less — trusted agents get the base price, unknown agents pay 10x, flagged agents are blocked.\n\n**The core idea:** if you've built a track record of reliable, consistent behavior across organizations, you should pay less to access resources. Trust is an economic signal.\n\n## How it works\n\nEvery request to a trust-gated endpoint is priced based on the agent's AgentLair trust level:\n\n| Trust tier | Score | Multiplier | Example (0.01 USDC base) |\n|:-----------|:------|:----------:|:------------------------:|\n| `trusted` (senior/principal) | 65+ | **1x** | $0.01 USDC |\n| `junior` | 40–64 | **5x** | $0.05 USDC |\n| `unknown` (intern/anonymous) | < 40 | **10x** | $0.10 USDC |\n| `blocked` (flagged) | — | **403** | Blocked |\n\nThe middleware reads the agent's [AAT](https://agentlair.dev/docs/aat) from the `Authorization` header, introspects it, and returns a [402 Payment Required](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/402) with the appropriate price. When the agent pays, the middleware verifies and settles the payment via the [x402 facilitator](https://github.com/coinbase/x402).\n\n## Quick start\n\n### As a Cloudflare Worker (standalone demo)\n\n```bash\ngit clone https://github.com/hawkaa/agentlair\ncd agentlair/packages/x402-trust-gate\n\n# Set your receiving wallet address\nwrangler secret put PAY_TO\n# > Enter your USDC wallet address (Base mainnet)\n\n# Deploy\nwrangler deploy\n```\n\nThat's it. Your endpoint now charges based on trust.\n\n### As npm middleware\n\n```bash\nnpm install @agentlair/x402-trust-gate\n# or\nbun add @agentlair/x402-trust-gate\n```\n\n```typescript\nimport { handleTrustGate } from '@agentlair/x402-trust-gate';\n\n// Cloudflare Worker\nexport default {\n  async fetch(request: Request, env: Env): Promise<Response> {\n    return handleTrustGate(request, {\n      baseAmount: '10000',          // 0.01 USDC — trusted agents pay this\n      asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC on Base\n      network: 'eip155:8453',       // Base mainnet\n      payTo: env.WALLET_ADDRESS,    // Your receiving wallet\n      facilitator: 'https://facilitator.ultravioletadao.xyz',\n      resourceUrl: 'https://my-api.example.com',\n      description: 'My API — trust-gated pricing',\n      upstream: 'https://my-api-upstream.example.com', // Optional proxy target\n    });\n  }\n};\n```\n\n### Check trust directly\n\n```typescript\nimport { checkTrust, getEffectivePrice, formatUsdc } from '@agentlair/x402-trust-gate';\n\nconst token = request.headers.get('Authorization')?.slice(7) ?? null;\nconst trust = await checkTrust(token);\nconst { tier, effectiveAmount } = getEffectivePrice('10000', trust);\n\nconsole.log(`Agent: ${trust.agentId}`);\nconsole.log(`Trust: ${trust.level} (score ${trust.score})`);\nconsole.log(`Price: ${formatUsdc(effectiveAmount)} (${tier.name} tier, ${tier.multiplier}x)`);\n```\n\n## Request flow\n\n```\nAgent → POST /api\n         Authorization: Bearer <AAT>\n\nMiddleware:\n  1. Introspect AAT at agentlair.dev/v1/tokens/introspect\n  2. Determine trust tier → price multiplier\n  3. No payment? → 402 PAYMENT-REQUIRED (base64 PaymentRequired JSON)\n  4. Payment present? → Verify via facilitator → Settle → Proxy upstream\n\nAgent ← 402 Payment Required\n         PAYMENT-REQUIRED: <base64>\n         X-Trust-Tier: unknown\n         X-Price-Multiplier: 10\n\nAgent pays → POST /api\n              PAYMENT-SIGNATURE: <base64 PaymentPayload>\n\nAgent ← 200 OK (or proxy response)\n         PAYMENT-RESPONSE: <base64 SettlementResponse>\n```\n\n## Configuration\n\n```typescript\ninterface TrustGateConfig {\n  /** Base price in USDC atomic units (6 decimals). e.g. 10000 = 0.01 USDC */\n  baseAmount: string;\n\n  /** USDC contract address */\n  asset: string;\n\n  /** Network identifier. Default: Base mainnet */\n  network: string;\n\n  /** Address to receive payments */\n  payTo: string;\n\n  /** x402 facilitator URL */\n  facilitator: string;\n\n  /** Resource URL (used in PaymentRequired) */\n  resourceUrl: string;\n\n  /** Resource description */\n  description: string;\n\n  /** AgentLair API base URL. Default: https://agentlair.dev */\n  agentlairBase?: string;\n\n  /** Optional upstream URL to proxy after payment */\n  upstream?: string;\n\n  /** Price tier overrides */\n  tiers?: {\n    trusted?: { multiplier: number };\n    junior?: { multiplier: number };\n    unknown?: { multiplier: number };\n  };\n}\n```\n\n## Price tier overrides\n\n```typescript\n// Custom pricing: trusted gets 1x, junior 2x, unknown 5x (more lenient)\nhandleTrustGate(request, {\n  ...config,\n  tiers: {\n    trusted: { multiplier: 1 },\n    junior: { multiplier: 2 },\n    unknown: { multiplier: 5 },\n  },\n});\n```\n\n## Headers\n\n### Request (agent → middleware)\n| Header | Description |\n|:-------|:------------|\n| `Authorization: Bearer <AAT>` | AgentLair Agent Authentication Token |\n| `X-Agentlair-AAT: <AAT>` | Alternative to Authorization header |\n| `PAYMENT-SIGNATURE: <base64>` | x402 payment payload (on retry after 402) |\n\n### Response (middleware → agent)\n| Header | Description |\n|:-------|:------------|\n| `PAYMENT-REQUIRED: <base64>` | PaymentRequired JSON (on 402) |\n| `X-Trust-Tier: trusted\\|junior\\|unknown` | Agent's trust tier |\n| `X-Price-Multiplier: <n>` | Price multiplier applied |\n| `PAYMENT-RESPONSE: <base64>` | Settlement result (on 200) |\n\n### Upstream headers (middleware → upstream, when proxying)\n| Header | Description |\n|:-------|:------------|\n| `X-Trust-Agent-Id` | Agent's identifier |\n| `X-Trust-Level` | intern\\|junior\\|senior\\|principal |\n| `X-Trust-Score` | 0–100 trust score |\n| `X-Trust-Tier` | trusted\\|junior\\|unknown |\n| `X-Payment-Tx` | Transaction hash of settled payment |\n\n## Get an AgentLair AAT\n\nAgents get a behavioral trust score by using AgentLair. The trust score reflects cross-organizational behavioral patterns — not just identity claims.\n\n```bash\n# Register an agent\ncurl -X POST https://agentlair.dev/v1/accounts \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"my-agent\"}'\n\n# Get an AAT\ncurl -X POST https://agentlair.dev/v1/tokens \\\n  -H \"Authorization: Bearer <api_key>\"\n```\n\nSee [agentlair.dev/docs](https://agentlair.dev/docs) for full onboarding.\n\n## Live demo\n\n[x402-trust-gate.agentlair.dev](https://x402-trust-gate.agentlair.dev) — try it with and without an AAT to see price differentiation in action.\n\n## License\n\nMIT © [AgentLair](https://agentlair.dev)\n","readmeFilename":"README.md","_rev":"1-0cfdf6a26912083eb3f23383ed403144"}