Passport SDK

Official, free, MIT-licensed clients. No payment required for the core protocol, the SDK, or receipt verification.

Open source & free: TypeScript @passport7/sdk and Python passport-sdk. Install — don't pay.

TypeScript — install

npm install @passport7/sdk
import { PassportClient } from "@passport7/sdk";

const p = new PassportClient({
  apiKey: "pp_…",                 // free developer tier from /dashboard
  baseUrl: "https://passport.metis.gold",
});

// Issue a signed receipt for agent work
const r = await p.issueReceipt({
  agent_id: "agent_fulfillment_1",
  receipt_type: "competence",
  input_digest: "<sha256 hex>",
  authority_scope: "fulfillment.example.com",
  expiry: "2026-08-01T00:00:00.000Z",
});

await p.finalizeReceipt(r.receipt_id, {
  status: "success",
  output_hash: "<sha256 hex>",
});

Framework hooks

  • LangChain: @passport7/sdk/langchain PassportCallbackHandler posts OTel evidence on every LLM call.
  • Mastra: @passport7/sdk/mastra createMastraPassportMiddleware anchors every agent/workflow run with a receipt.
  • Vercel AI: @passport7/sdk/vercel-ai passportMiddleware gates + audits LLM calls.

Sovereign Haven / RWA clients

The SDK bundles typed clients for the reserve stack — all free, protocol-level:

const por      = await p.reserves.getPoR({ commodity: "GOLD" });
const regime   = await p.reserves.getRegimeState();
const escrow   = await p.reservesEscrow.createCommodityEscrow({ ... });
const intake   = await p.artisanal.intakeOre({ ... });
const proposal = await p.quorum.proposeQuorum({ ... });
const waybill  = await p.transit.dispatch({ ... });
const run      = await p.industrial.recordSmelting({ ... });
const project  = await p.fund.registerProject({ ... });

Python — stdlib only

from passport_sdk import PassportClient

p = PassportClient(api_key="pp_…", base_url="https://passport.metis.gold")
receipt = p.issue_receipt(
    agent_id="agent_1", receipt_type="competence",
    input_digest="<sha256 hex>",
    authority_scope="example.com",
    expiry="2026-08-01T00:00:00.000Z",
)
p.finalize_receipt(receipt["receipt_id"], status="success", output_hash="<sha256 hex>")

Verification is public & keyless

Anyone can verify a receipt with no auth:

GET /api/v1/receipts/{id}/public-manifest
GET /api/v1/public-key

More