paybondpaybond
Sign in

Support matrix

Supported SDKs, integrations, settlement rails, and current public Kit coverage.

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

SurfaceVersion policyRuntimeNotes
Python paybond-kitCurrent stable release linePython >=3.11Published wheels include the native signing extension used by the high-level intent helpers.
TypeScript @paybond/kitCurrent stable release lineNode.js >=22ESM package for modern Node.js runtimes.
TypeScript framework meta-packagesSame version as @paybond/kitNode.js >=22Thin 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.

FrameworkTypeScriptPythonDocumentationSandbox smoke
Agent-agnosticnpm install @paybond/agent (or @paybond/kit) — createPaybondGenericAgentConfig from @paybond/agent / @paybond/kit/agentpip install paybond-kitcreate_paybond_generic_agent_config from paybond_kit.agentAgent-agnostic spend controlspaybond agent demo generic smoke
LangGraphnpm install @paybond/langgraph @langchain/langgraph @langchain/corepaybondAwrapToolCall, paybondToolNodepip install "paybond-kit[langgraph]"paybond_awrap_tool_call(run), paybond_tool_node(tools, run)LangGraph agent spend controlspaybond agent demo langgraph smoke
Claude Agents SDKnpm install @paybond/claude-agents @anthropic-ai/claude-agent-sdkcreatePaybondClaudeAgentsConfigpip install "paybond-kit[claude-agents]"create_paybond_claude_agents_config from paybond_kit.claude_agents (PyPI: claude-agent-sdk)Claude Agents agent spend controlspaybond agent demo claude-agents smoke
Vercel AInpm install @paybond/vercel-ai aipaybondVercelToolApproval, paybondVercelWrapTools— (TypeScript only; Python Kit raises with link to this doc)Vercel AI agent spend controlspaybond agent demo vercel-ai smoke
OpenAI Agentsnpm install @paybond/openai-agents @openai/agentscreatePaybondOpenAIAgentsConfigpip install "paybond-kit[openai-agents]"create_paybond_openai_agents_config from paybond_kit.openai_agents (PyPI: openai-agents)OpenAI Agents agent spend controlspaybond agent demo openai-agents smoke
MCP hostsnpm install @paybond/mcp and paybond-mcp-server (from @paybond/kit)pip install "paybond-kit[mcp]" and paybond-mcp-serverMCP agent spend controlspaybond 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.crewaiCrewAI agent spend controlspaybond 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_aiPydantic AI agent spend controlspaybond agent demo pydantic-ai smoke
Google ADKnpm install @paybond/google-adk @google/adkcreatePaybondGoogleAdkConfigpip install "paybond-kit[google-adk]"create_paybond_google_adk_config from paybond_kit.google_adkGoogle ADK agent spend controlspaybond 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_frameworkMicrosoft Agent Framework spend controlspaybond agent demo microsoft-agent-framework smoke
Mastranpm install @paybond/mastra @mastra/corecreatePaybondMastraConfig— (TypeScript only; Python Kit raises with link to this doc)Mastra agent spend controlspaybond agent demo mastra smoke
Cloudflare Agentsnpm install @paybond/cloudflare-agents agents aicreatePaybondCloudflareAgentsConfig— (TypeScript only; Python Kit raises with link to this doc)Cloudflare Agents adapterpaybond 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.

FrameworkStatusNotesDocumentationUse today
LlamaIndex WorkflowsPlannedWorkflow-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

IntegrationInstall / surfaceNotes
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 wrapperspaybond-kit or @paybond/kitRuntime-neutral pattern using paybond.spendGuard(...) / paybond.spend_guard(...) and the high-level intent helpers.
Spend guard helpers (advanced)PaybondSpendGuard, authorizeSpend / authorize_spend, guardTool / guard_toolSingle-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 adapterpaybondRuntimeToolCallAdapter / paybond_runtime_tool_call_adapterDependency-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/kitWrapper pattern using paybond.spendGuard(...) around any side-effecting tool handler.
Sandbox loginnpx -p @paybond/kit paybond login or paybond-kit-loginBrowser-approved sandbox device flow that writes PAYBOND_API_KEY to .env.local with mode 0600 and adds the default file to .gitignore when needed.
Scaffoldsnpx -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.pyGenerates 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

DocPurpose
Agent-agnostic adapterDefault createPaybondGenericAgentConfig path (TypeScript and Python)
Agent middlewareRun binding, tool registry, interceptors, auto-evidence
Vercel AI adaptertoolApproval with wrapped execute (TypeScript)
LangGraph adapterToolNode hooks (TypeScript and Python)
Claude Agents adapterClaude Agent SDK in-process MCP (TypeScript and Python)
OpenAI Agents adapterOpenAI Agents SDK guardrails (TypeScript and Python)
MCP serverStdio or Streamable HTTP MCP for coding agents and external hosts
CrewAI adapter@tool / BaseTool guards (Python)
Pydantic AI adapterTool / callable guards (Python)
Google ADK adapterFunctionTool execute guards (TypeScript and Python)
Microsoft Agent Framework adapterFunction middleware spend gates (Python)
Mastra adaptercreateTool execute guards (TypeScript)
Cloudflare Agents adaptergetTools AI SDK tool execute guards (TypeScript)
Gemini with agent-agnosticGoogle AI SDK function calling with generic middleware
Agent policy-as-codepaybond.policy.yaml format and CI workflow
Agent policy validateLocal and server-authoritative validation
Org policy inheritanceOrg base policies and tenant overlays
Policy hot-reloadRuntime policy updates for long-lived runs

Settlement rails

RailStatusNotes
stripe_connectSupportedDestination routing stays server-owned; SDK callers never submit payout destinations.
stripe_ach_debitSupported as a requestable railUses delayed bank-debit confirmation through the tenant's linked Stripe destination; SDK callers never submit account or destination details.
x402_usdc_baseSupportedIntent 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_mppAvailableStripe 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_captureSupported as a requestable railBYO 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_accountRollout (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.

WorkflowCommand
List presetspaybond policy templates
Scaffold evidence helperpaybond init completion --preset <id>
Local schema checkpaybond policy validate-evidence --preset <id> --vendor-file vendor.json
Catalog integritynode 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)

EndpointPurpose
GET /v1/auth/principalResolve the service-account tenant realm and environment for hosted SDK and MCP sessions.
POST /verifyHarbor 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}/completeFinalize 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)

RouteUsed by Kit
POST /intentsPrincipal-signed intent creation through PaybondIntents.create / paybond.intents.create and spend-named aliases createSpendIntent / create_spend_intent.
POST /intents/{intent_id}/fundx402 funding through PaybondIntents.fund / paybond.intents.fund.
POST /verifyCapability 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}/evidenceSigned 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 / sessionUsed by Kit
ServiceAccountSignalSession.openResolves 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/summaryTenant-bound portfolio summary lookup.
GET /signal/v1/portfolio/signed-exportTenant-bound signed portfolio artifact lookup through getSignedPortfolioArtifact / get_signed_portfolio_artifact.
GET /signal/v1/operators/{operator_did}/explanationTenant-bound explanation delta lookup.
GET /signal/v1/operators/{operator_did}/review-statusTenant-bound review-state and trust-policy lookup.
ServiceAccountFraudSession.openResolves tenant_id from GET /v1/auth/principal for fraud review and metrics sessions.
GET /signal/v1/operators/{operator_did}/review-statusTenant-bound fraud assessment lookup through GatewayFraudClient.getFraudAssessment / get_fraud_assessment.
GET /signal/v1/review-queueTenant-bound fraud review queue listing with optional state, severity, limit, and score-version filters.
GET /signal/v1/fraud/metricsTenant-bound fraud backtesting and monitoring metrics lookup for 24h, 7d, or 30d windows.
GET /signal/v1/fraud/release-gateTenant-bound fraud release-gate config and metrics reliability lookup.
PUT /signal/v1/fraud/release-gateTenant-admin release-gate mode update for review_only or critical_hold.
POST /signal/v1/operators/{operator_did}/review-eventsRecords 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 / clientUsed by Kit
GatewayA2AClientCreated by Paybond.open(...) as paybond.a2a for protocol-trust discovery.
GET /.well-known/agent-card.jsonA2A agent card discovery.
GET /protocol/v2/a2a/task-contractsA2A task-contract catalog discovery.
GET /protocol/v2/a2a/task-contracts/{contract_id}A2A task-contract detail lookup.
GatewayProtocolClientCreated by Paybond.open(...) as paybond.protocol for protocol-v2 receipts and recognition-gated Gateway intent mutations.
POST /protocol/v2/mandates/verifySigned AgentMandateV1 verification, exposed through MCP verifier tooling.
POST /protocol/v2/recognition/verifyAgent recognition proof verification, exposed through MCP verifier tooling.
POST /protocol/v2/mandatesRecognition-gated mandate import through GatewayProtocolClient.importAgentMandateV1 / import_agent_mandate_v1.
GET /protocol/v2/receipts/{receipt_id}Protocol settlement receipt lookup.
POST /protocol/v2/receipts/verifyProtocol receipt verification.
POST /harbor/intentsRecognition-gated Gateway Harbor intent creation through paybond.protocol.
POST /harbor/intents/{intent_id}/fundRecognition-gated Gateway Harbor funding through paybond.protocol.
POST /harbor/intents/{intent_id}/evidenceRecognition-gated Gateway Harbor evidence submission through paybond.protocol.
POST /harbor/intents/{intent_id}/settlement/confirmRecognition-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 / clientUsed by Kit
PaybondAuditExportsCreated by Paybond.open(...) as paybond.audit.exports for compliance export create/list/get/delete and local manifest verification.
POST /v1/compliance/audit-exportsCreate 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-exportsList 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 verifyOffline Ed25519 manifest verification through paybond.audit.exports.verify / verify and paybond audit exports verify — not exposed via MCP.
MCP readonly toolspaybond_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

ScenarioPreferred API
CLI operator with upstream-signed Harbor JSONpaybond intents create / fund / evidencepaybond.harbor.createIntent / fundIntent / submitEvidence with recognition proof
In-process agent with evidence already submittedpaybond.intents.confirmSettlement() / confirm_settlement()
Protocol/A2A automation with recognitionpaybond.protocol.confirmHarborSettlement() / confirm_harbor_settlement()
MCP coding agentpaybond_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 offlinepaybond.audit.exports.verify / paybond audit exports verify — not MCP
Human dispute / ambiguous evidenceOperator Console — not programmatic confirm

Local dev mocks (x402 fund parity)

SurfaceCommand / pathx402 /fund behavior
Offline Gateway mockpaybond dev loop --offline, paybond dev smoke --offlineIn-process 402 → 202 → 200 state machine on POST /harbor/intents/{id}/fund
WireMock Gatewaypaybond dev up--gateway http://127.0.0.1:18089Scenario mappings 1113 under kit/dev/wiremock/mappings/
Partner dry runexamples/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.