This page describes the public Kit surface that Paybond supports today across direct SDK usage, agent runtime integrations, MCP hosts, and protocol/A2A clients. If a capability is not listed here, treat it as outside the standard SDK contract unless you have an explicit agreement with Paybond.
Language SDKs
| Surface | Version policy | Runtime | Notes |
|---|---|---|---|
Python paybond-kit | Current stable release line | Python >=3.11 | Published wheels include the native signing extension used by the high-level intent helpers. |
TypeScript @paybond/kit | Current stable release line | Node.js >=22 | ESM package for modern Node.js runtimes. |
| TypeScript framework meta-packages | Same version as @paybond/kit | Node.js >=22 | Thin npm wrappers (@paybond/vercel-ai, @paybond/langgraph, @paybond/claude-agents, @paybond/openai-agents, @paybond/google-adk, @paybond/mastra, @paybond/cloudflare-agents, @paybond/agent, @paybond/mcp) re-export @paybond/kit subpaths for npm discoverability. |
Framework adapter parity
Each bilingual framework ships TypeScript and Python docs, exports, and smoke commands on the same page — complete sandbox smoke in either language without reading the other kit's docs. TypeScript-only frameworks link to @paybond/kit from Python with a clear redirect.
| Framework | TypeScript | Python | Documentation | Sandbox smoke |
|---|---|---|---|---|
| Agent-agnostic | npm install @paybond/agent (or @paybond/kit) — createPaybondGenericAgentConfig from @paybond/agent / @paybond/kit/agent | pip install paybond-kit — create_paybond_generic_agent_config from paybond_kit.agent | Agent-agnostic spend controls | paybond agent demo generic smoke |
| LangGraph | npm install @paybond/langgraph @langchain/langgraph @langchain/core — paybondAwrapToolCall, paybondToolNode | pip install "paybond-kit[langgraph]" — paybond_awrap_tool_call(run), paybond_tool_node(tools, run) | LangGraph agent spend controls | paybond agent demo langgraph smoke |
| Claude Agents SDK | npm install @paybond/claude-agents @anthropic-ai/claude-agent-sdk — createPaybondClaudeAgentsConfig | pip install "paybond-kit[claude-agents]" — create_paybond_claude_agents_config from paybond_kit.claude_agents (PyPI: claude-agent-sdk) | Claude Agents agent spend controls | paybond agent demo claude-agents smoke |
| Vercel AI | npm install @paybond/vercel-ai ai — paybondVercelToolApproval, paybondVercelWrapTools | — (TypeScript only; Python Kit raises with link to this doc) | Vercel AI agent spend controls | paybond agent demo vercel-ai smoke |
| OpenAI Agents | npm install @paybond/openai-agents @openai/agents — createPaybondOpenAIAgentsConfig | pip install "paybond-kit[openai-agents]" — create_paybond_openai_agents_config from paybond_kit.openai_agents (PyPI: openai-agents) | OpenAI Agents agent spend controls | paybond agent demo openai-agents smoke |
| MCP hosts | npm install @paybond/mcp and paybond-mcp-server (from @paybond/kit) | pip install "paybond-kit[mcp]" and paybond-mcp-server | MCP agent spend controls | paybond agent demo mcp smoke |
| CrewAI | — (Python only; use agent-agnostic or MCP from TypeScript) | pip install "paybond-kit[crewai]" — create_paybond_crewai_config from paybond_kit.crewai | CrewAI agent spend controls | paybond agent demo crewai smoke |
| Pydantic AI | — (Python only; use agent-agnostic or MCP from TypeScript) | pip install "paybond-kit[pydantic-ai]" — create_paybond_pydantic_ai_config from paybond_kit.pydantic_ai | Pydantic AI agent spend controls | paybond agent demo pydantic-ai smoke |
| Google ADK | npm install @paybond/google-adk @google/adk — createPaybondGoogleAdkConfig | pip install "paybond-kit[google-adk]" — create_paybond_google_adk_config from paybond_kit.google_adk | Google ADK agent spend controls | paybond agent demo google-adk smoke |
| Microsoft Agent Framework (MAF) | — (Python only; use agent-agnostic or MCP from TypeScript) | pip install "paybond-kit[microsoft-agent-framework]" — create_paybond_microsoft_agent_framework_config from paybond_kit.microsoft_agent_framework | Microsoft Agent Framework spend controls | paybond agent demo microsoft-agent-framework smoke |
| Mastra | npm install @paybond/mastra @mastra/core — createPaybondMastraConfig | — (TypeScript only; Python Kit raises with link to this doc) | Mastra agent spend controls | paybond agent demo mastra smoke |
| Cloudflare Agents | npm install @paybond/cloudflare-agents agents ai — createPaybondCloudflareAgentsConfig | — (TypeScript only; Python Kit raises with link to this doc) | Cloudflare Agents adapter | paybond agent demo cloudflare-agents smoke |
Smoke flags (all frameworks): add --operation <name>, --requested-spend-cents <n>, --evidence-preset <id>, and --format json. The same command works from the TypeScript CLI (npx -p @paybond/kit paybond …) or the Python CLI (paybond-kit …). Bilingual framework docs include TypeScript and Python wiring sections on one page.
Maturity notes: Claude Agents governs custom MCP tools only — built-in SDK tools (Read, Bash, …) stay unguarded unless you remove them from allowedTools. Vercel AI and Cloudflare Agents govern locally executed registry tools; provider-executed tools bypass unless adapter.deny_provider_executed_tools: true in paybond.policy.yaml or denyProviderExecutedTools: true on adapter helpers (see adapter docs).
Python optional extras for smoke: base pip install paybond-kit is enough for agent demo generic smoke. LangGraph, Claude Agents, OpenAI Agents, MCP, CrewAI, Pydantic AI, Google ADK, and Microsoft Agent Framework smoke commands require paybond-kit[langgraph], paybond-kit[claude-agents], paybond-kit[openai-agents], paybond-kit[mcp], paybond-kit[crewai], paybond-kit[pydantic-ai], paybond-kit[google-adk], or paybond-kit[microsoft-agent-framework] respectively. TypeScript Google ADK smoke requires optional peer @google/adk (npm install @google/adk). TypeScript Mastra smoke requires optional peer @mastra/core (npm install @mastra/core). TypeScript Cloudflare Agents smoke requires optional peers agents and ai (npm install agents ai). With pipx, quote extras on zsh, use pipx install 'paybond-kit[langgraph]' (or pipx inject paybond-kit langgraph langchain-core when base paybond-kit is already installed), and pass paybond explicitly on one-shot runs: pipx run --spec 'paybond-kit[langgraph]' paybond …. See Python quickstart — pipx and LangGraph adapter — Scaffold and smoke.
Planned framework adapters
These frameworks do not have native Paybond runner helpers yet. Paybond plans to add them in the order below. Use agent-agnostic or MCP today for spend controls on any framework. Request a native adapter if your stack needs one sooner.
| Framework | Status | Notes | Documentation | Use today |
|---|---|---|---|---|
| LlamaIndex Workflows | Planned | Workflow-oriented RAG and agent orchestration stack. Most paid-tool paths are covered by generic middleware today. | — | Agent-agnostic, MCP, and published guides |
Provider-agnostic agent runtime and host integrations
| Integration | Install / surface | Notes |
|---|---|---|
| Agent middleware (recommended) | paybond.instrument() / paybond.wrapTools() (TypeScript), paybond.instrument() / paybond.wrap_tools() (Python) | One call loads policy, binds a run, and wraps side-effecting tools with auto-evidence. Framework adapters: generic, langgraph, claude-agents, crewai, pydantic-ai, google-adk, microsoft-agent-framework, vercel-ai, openai-agents, mastra, cloudflare-agents. |
| Direct SDK wrappers | paybond-kit or @paybond/kit | Runtime-neutral pattern using paybond.spendGuard(...) / paybond.spend_guard(...) and the high-level intent helpers. |
| Spend guard helpers (advanced) | PaybondSpendGuard, authorizeSpend / authorize_spend, guardTool / guard_tool | Single-handler escape hatch. Gateway-enriched verify before paid tools execute. Distinguishes approval holds (PaybondSpendApprovalRequiredError) from hard denials (PaybondSpendDeniedError). guardTool / guard_tool finalize scope reservations after handler success or failure. |
| Runtime-neutral tool-call adapter | paybondRuntimeToolCallAdapter / paybond_runtime_tool_call_adapter | Dependency-free adapter for provider SDKs, local models, queues, and custom orchestrators that expose a tool-call object plus an application-owned executor. |
| TypeScript app-side wrapper | @paybond/kit | Wrapper pattern using paybond.spendGuard(...) around any side-effecting tool handler. |
| Sandbox login | npx -p @paybond/kit paybond login or paybond-kit-login | Browser-approved sandbox device flow that writes PAYBOND_API_KEY to .env.local with mode 0600 and adds the default file to .gitignore when needed. |
| Scaffolds | npx -p @paybond/kit paybond-init --preset paid-tool-guard --framework provider-agnostic --out paybond-paid-tool-guard.ts or paybond-kit-init --preset paid-tool-guard --framework provider-agnostic --out paybond_paid_tool_guard.py | Generates a Paybond guardrail integration helper for provider-agnostic, OpenAI, Gemini, Claude/Anthropic, Vercel AI, LangGraph, or MCP-style paid-tool handlers. Agent middleware scaffolds: `paybond init agent-middleware --framework generic |
Paybond verifies tenant scope, intent capabilities, and tool operation names. The Kit does not depend on a specific model provider; callers can use the same spend-guard pattern with hosted models, local models, custom orchestrators, or MCP-compatible hosts.
Agent policy and middleware docs
| Doc | Purpose |
|---|---|
| Agent-agnostic adapter | Default createPaybondGenericAgentConfig path (TypeScript and Python) |
| Agent middleware | Run binding, tool registry, interceptors, auto-evidence |
| Vercel AI adapter | toolApproval with wrapped execute (TypeScript) |
| LangGraph adapter | ToolNode hooks (TypeScript and Python) |
| Claude Agents adapter | Claude Agent SDK in-process MCP (TypeScript and Python) |
| OpenAI Agents adapter | OpenAI Agents SDK guardrails (TypeScript and Python) |
| MCP server | Stdio or Streamable HTTP MCP for coding agents and external hosts |
| CrewAI adapter | @tool / BaseTool guards (Python) |
| Pydantic AI adapter | Tool / callable guards (Python) |
| Google ADK adapter | FunctionTool execute guards (TypeScript and Python) |
| Microsoft Agent Framework adapter | Function middleware spend gates (Python) |
| Mastra adapter | createTool execute guards (TypeScript) |
| Cloudflare Agents adapter | getTools AI SDK tool execute guards (TypeScript) |
| Gemini with agent-agnostic | Google AI SDK function calling with generic middleware |
| Agent policy-as-code | paybond.policy.yaml format and CI workflow |
| Agent policy validate | Local and server-authoritative validation |
| Org policy inheritance | Org base policies and tenant overlays |
| Policy hot-reload | Runtime policy updates for long-lived runs |
Settlement rails
| Rail | Status | Notes |
|---|---|---|
stripe_connect | Supported | Destination routing stays server-owned; SDK callers never submit payout destinations. |
stripe_ach_debit | Supported as a requestable rail | Uses delayed bank-debit confirmation through the tenant's linked Stripe destination; SDK callers never submit account or destination details. |
x402_usdc_base | Supported | Intent values stay USD-denominated (currency: "usd", amount_cents, max_spend_usd) while Harbor funds and settles the intent as USDC on Base through the x402 /fund handshake. |
stripe_mpp | Available | Stripe Machine Payments Protocol charge and Tempo session funding through Payment Auth semantics. Kit helpers: paybond.intents.fundWithMppCharge / fundWithMppSession (TypeScript) and fund_with_mpp_charge / fund_with_mpp_session (Python). Tenants self-configure stripe_mpp_profile_id in Settlement settings (profile_test_* sandbox, profile_* live). Hosted sandbox uses Stripe test-mode via Harbor PAYBOND_STRIPE_MPP_TEST_SECRET_KEY; production session funding verifies TIP-1034 reserves on-chain via Harbor PAYBOND_TEMPO_RPC_URL. Session challenges require mpp_session_enabled and a Tempo recipient. Session intents require Tempo voucher credentials on POST /verify; cumulative spend is capped at signed amount_cents. See Fund intents on Stripe MPP. |
adyen_manual_capture | Supported as a requestable rail | BYO Adyen Checkout authorization with manual capture. Agent mandates and principal intent create may request adyen_manual_capture; destination credentials (merchant account, API key, HMAC) stay server-owned in settlement config — SDK callers never submit Adyen secrets. Funding typically completes when Adyen returns Authorised at create; capture/cancel finality waits for Gateway-forwarded webhooks. CLI: paybond adyen ready / paybond adyen doctor read settlement-config readiness (no secret upsert). See Configure Adyen settlement. |
flutterwave_virtual_account | Rollout (sandbox-first; NGN/GHS) | BYO Flutterwave Virtual Account funding with Transfer payout/refund. Destination credentials (secret key, webhook secret) stay server-owned in settlement config — SDK callers never submit Flutterwave secrets. Funding waits for verified VA credit webhooks; terminal Transfer finality waits for Gateway-forwarded transfer webhooks. CLI: paybond flutterwave ready / paybond flutterwave doctor read settlement-config readiness (no secret upsert). See Configure Flutterwave settlement. |
Rail availability does not imply universal variable-cost settlement. For managed completion_budget_v1, live positive partial settlement is supported on Stripe Connect, Stripe ACH, authorized Shopify orders, and Adyen; Stripe Connect and authorized Shopify orders also support zero by cancel/void. Stripe ACH and Adyen reject zero before provider effects. Stripe MPP charge, x402/Coinbase, Shopify Payments app, Flutterwave, and Paystack reject variable-cost terminal settlement before provider effects; Tempo sessions keep their existing cumulative voucher metering. See the exact public per-rail matrix.
Sandbox tenants can request stripe_ach_debit through the same SDK and admin routing surfaces, but Paybond routes those sandbox intents to simulator destinations. Tenant sandbox testing does not require STRIPE_SECRET_KEY or a real Stripe test-mode Connect account; those credentials are only needed for Paybond's optional Stripe ACH provider smoke tests.
Completion presets
Paybond ships a shared completion preset catalog (kit/completion-presets/catalog.json) consumed by Harbor, Gateway, CLI, and docs. Archetypes (api_response_ok, webhook_confirmed, …) and vendor packs (stripe_charge, ach_travel_booking, x402_saas_api_purchase, x402_travel_booking, invoice_payment_confirmed, …) define evidence schemas and Harbor template bindings.
| Workflow | Command |
|---|---|
| List presets | paybond policy templates |
| Scaffold evidence helper | paybond init completion --preset <id> |
| Local schema check | paybond policy validate-evidence --preset <id> --vendor-file vendor.json |
| Catalog integrity | node kit/scripts/sync-completion-catalog.mjs --check (CI gate) |
Pick a preset aligned with your settlement rail — see Funding vs completion.
Gateway contracts (service accounts)
| Endpoint | Purpose |
|---|---|
GET /v1/auth/principal | Resolve the service-account tenant realm and environment for hosted SDK and MCP sessions. |
POST /verify | Harbor capability check plus Gateway spend policy enrichment (decision_id, approval_request_id, reason_codes, approval_required, etc.). For stripe_mpp session intents, Harbor may also require a Tempo voucher credential (mpp_voucher_required / mpp_voucher_rejected) and enforces cumulative spend ≤ intent amount_cents. |
POST /v1/spend/decisions/{decision_id}/complete | Finalize active scope reservations as consumed or released after tool execution (called automatically by guardTool / guard_tool). |
The Gateway deployment must accept service-account credentials on GET /v1/auth/principal and proxy recognition-gated intent mutations under /harbor/*.
Intent HTTP API (Kit-facing)
| Route | Used by Kit |
|---|---|
POST /intents | Principal-signed intent creation through PaybondIntents.create / paybond.intents.create and spend-named aliases createSpendIntent / create_spend_intent. |
POST /intents/{intent_id}/fund | x402 funding through PaybondIntents.fund / paybond.intents.fund. |
POST /verify | Capability checks and spend authorization (Biscuit token, operation, requested spend, optional vendor/task/workflow/tool metadata, optional approval token). Gateway may enrich the response with spend-policy fields. |
POST /intents/{intent_id}/evidence | Signed evidence submission (often after sign_payee_evidence_binding). |
GET /ledger/v1/* | Tenant-scoped provenance reads (tip, authority, events, merkle/latest). |
Signal HTTP API (Kit-facing)
| Route / session | Used by Kit |
|---|---|
ServiceAccountSignalSession.open | Resolves tenant_id from GET /v1/auth/principal using the service-account credential. |
GET /reputation/{operator_did} | Tenant-bound signed receipt lookup. |
GET /signal/v1/portfolio/summary | Tenant-bound portfolio summary lookup. |
GET /signal/v1/portfolio/signed-export | Tenant-bound signed portfolio artifact lookup through getSignedPortfolioArtifact / get_signed_portfolio_artifact. |
GET /signal/v1/operators/{operator_did}/explanation | Tenant-bound explanation delta lookup. |
GET /signal/v1/operators/{operator_did}/review-status | Tenant-bound review-state and trust-policy lookup. |
ServiceAccountFraudSession.open | Resolves tenant_id from GET /v1/auth/principal for fraud review and metrics sessions. |
GET /signal/v1/operators/{operator_did}/review-status | Tenant-bound fraud assessment lookup through GatewayFraudClient.getFraudAssessment / get_fraud_assessment. |
GET /signal/v1/review-queue | Tenant-bound fraud review queue listing with optional state, severity, limit, and score-version filters. |
GET /signal/v1/fraud/metrics | Tenant-bound fraud backtesting and monitoring metrics lookup for 24h, 7d, or 30d windows. |
GET /signal/v1/fraud/release-gate | Tenant-bound fraud release-gate config and metrics reliability lookup. |
PUT /signal/v1/fraud/release-gate | Tenant-admin release-gate mode update for review_only or critical_hold. |
POST /signal/v1/operators/{operator_did}/review-events | Records allowed review workflow/outcome events; SDKs reject non-review and money-movement event types before sending and pass optional signal_code, intent_id, and provider_event_id feedback context. |
Protocol and A2A Gateway API (Kit-facing)
| Route / client | Used by Kit |
|---|---|
GatewayA2AClient | Created by Paybond.open(...) as paybond.a2a for protocol-trust discovery. |
GET /.well-known/agent-card.json | A2A agent card discovery. |
GET /protocol/v2/a2a/task-contracts | A2A task-contract catalog discovery. |
GET /protocol/v2/a2a/task-contracts/{contract_id} | A2A task-contract detail lookup. |
GatewayProtocolClient | Created by Paybond.open(...) as paybond.protocol for protocol-v2 receipts and recognition-gated Gateway intent mutations. |
POST /protocol/v2/mandates/verify | Signed AgentMandateV1 verification, exposed through MCP verifier tooling. |
POST /protocol/v2/recognition/verify | Agent recognition proof verification, exposed through MCP verifier tooling. |
POST /protocol/v2/mandates | Recognition-gated mandate import through GatewayProtocolClient.importAgentMandateV1 / import_agent_mandate_v1. |
GET /protocol/v2/receipts/{receipt_id} | Protocol settlement receipt lookup. |
POST /protocol/v2/receipts/verify | Protocol receipt verification. |
POST /harbor/intents | Recognition-gated Gateway Harbor intent creation through paybond.protocol. |
POST /harbor/intents/{intent_id}/fund | Recognition-gated Gateway Harbor funding through paybond.protocol. |
POST /harbor/intents/{intent_id}/evidence | Recognition-gated Gateway Harbor evidence submission through paybond.protocol. |
POST /harbor/intents/{intent_id}/settlement/confirm | Recognition-gated settlement confirmation through paybond.intents.confirmSettlement / confirm_settlement, paybond.protocol, and MCP. The helper confirms the action implied by stored evidence; it does not choose release or refund. |
CLI intent mutations (paybond intents create, fund, evidence, and settlement-confirm) delegate to paybond.harbor.* with replay-safe x-paybond-agent-recognition-proof headers rather than raw Gateway POSTs. Read-only operator commands (paybond intents list|get) stay on direct HTTP.
Compliance audit export API (Kit-facing)
| Route / client | Used by Kit |
|---|---|
PaybondAuditExports | Created by Paybond.open(...) as paybond.audit.exports for compliance export create/list/get/delete and local manifest verification. |
POST /v1/compliance/audit-exports | Create a tenant-scoped export job through paybond.audit.exports.create / create (SDK only — no CLI subcommand). Tenant scope comes from the API key; never pass a tenant id. |
GET /v1/compliance/audit-exports | List tenant-scoped export jobs through paybond.audit.exports.list / list. |
GET /v1/compliance/audit-exports/{job_id} | Job detail; optional ?issue_download=1 mints a bundle download token through paybond.audit.exports.get / get. |
DELETE /v1/compliance/audit-exports/{job_id} | Delete job through paybond.audit.exports.delete / delete (CLI requires --yes). |
| Local bundle verify | Offline Ed25519 manifest verification through paybond.audit.exports.verify / verify and paybond audit exports verify — not exposed via MCP. |
| MCP readonly tools | paybond_list_audit_exports, paybond_get_audit_export when --tool-policy readonly. |
CLI paybond audit exports list|get|delete|verify delegates to the SDK rather than duplicating Gateway HTTP. Export job creation is SDK-only (paybond.audit.exports.create); use the Operator Console or SDK for POST /v1/compliance/audit-exports. See Ledger and provenance for bundle structure and verification.
Boundaries
| Scenario | Preferred API |
|---|---|
| CLI operator with upstream-signed Harbor JSON | paybond intents create / fund / evidence → paybond.harbor.createIntent / fundIntent / submitEvidence with recognition proof |
| In-process agent with evidence already submitted | paybond.intents.confirmSettlement() / confirm_settlement() |
| Protocol/A2A automation with recognition | paybond.protocol.confirmHarborSettlement() / confirm_harbor_settlement() |
| MCP coding agent | paybond_confirm_settlement (non-readonly policy) |
| Create a compliance export job (SDK only) | paybond.audit.exports.create / create — tenant scope from API key |
| List or inspect compliance export jobs (SDK, CLI, or MCP readonly) | paybond.audit.exports.list / get or MCP paybond_list_audit_exports / paybond_get_audit_export |
| Verify a downloaded audit export bundle offline | paybond.audit.exports.verify / paybond audit exports verify — not MCP |
| Human dispute / ambiguous evidence | Operator Console — not programmatic confirm |
Local dev mocks (x402 fund parity)
| Surface | Command / path | x402 /fund behavior |
|---|---|---|
| Offline Gateway mock | paybond dev loop --offline, paybond dev smoke --offline | In-process 402 → 202 → 200 state machine on POST /harbor/intents/{id}/fund |
| WireMock Gateway | paybond dev up → --gateway http://127.0.0.1:18089 | Scenario mappings 11–13 under kit/dev/wiremock/mappings/ |
| Partner dry run | examples/partner-dry-run-wiremock/ | Same mappings; fixed intent aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa, tenant dry-run-tenant |
Use paybond.intents.fundWithX402 / fund_with_x402 against these mocks to rehearse signing and polling without Coinbase or a remote sandbox API.
Compatibility expectations
Paybond validates the supported SDK and integration surfaces in automated testing before release. If you depend on a specific runtime or framework combination, validate it in your own CI against the public quickstarts and examples before rollout.
Sandbox access
To try Kit with a tenant-bound sandbox, create a self-serve Free Developer workspace, issue sandbox service-account keys from the console, and start with one-command guardrails.