Agentic commerce · open standards

Add commerce to any agent.
Over the standards you would pick anyway.

Paygent is not a proprietary API — it is an agent that speaks the Universal Commerce Protocol: a discovery document, an agent card, and an MCP checkout endpoint. If your runtime can call a tool, it can search, pick the card that earns most, spend points, and complete the checkout.

All money and points math is deterministic and server-side — never delegated to a model.

embed_commerce.py
# 1 · Discover the agent over standard surfaces
card = fetch("https://agent.example.com/.well-known/agent_card.json")
ucp  = fetch("https://agent.example.com/.well-known/ucp")

# 2 · Open a session — bound to YOUR wallet provider
session = paygent.post("/v1/sessions")["session_id"]

# 3 · Stream a turn · typed events, never prose to parse
for ev in paygent.stream("/v1/run",
        session_id=session,
        message="5.5-quart Dutch oven under $250 — which card earns the most?"):

    match ev.type:
        case "products":         ui.offers(ev.data)
        case "checkout_summary": ui.cart(ev.data)
        case "wallet_summary":   ui.wallet(ev.data)
        case "verbatim_block":   ui.as_is(ev.data)  # money: render, never re-derive
        case "message":          ui.text(ev.data)

# → earning quoted per card on the real cart · points held in escrow
# → checkout binds to the offer shown, at the price shown
UCP · /.well-known/ucp Agent card · /.well-known/agent_card.json MCP checkout · /ucp/mcp
Standard surfaces

Integrate the way the ecosystem already works.

No proprietary SDK required to start — the same surfaces the UCP ecosystem uses for discovery and checkout are how you talk to Paygent.

🪪

Agent card

Agent card at /.well-known/agent_card.json: the commerce agent's identity, capabilities and endpoint. Signing keys are pinned out of band at onboarding, never fetched over the network.

🧭

UCP discovery

The /.well-known/ucp document advertises the checkout capability and its MCP endpoint — machine-readable and versioned.

🔧

MCP checkout tools

Create, get, add items to, complete, and cancel checkouts as MCP tool calls — completion and cancellation are idempotent on the caller's key.

The wallet contract

Bring your own wallet — against a contract, not a conversation.

Paygent moves value through a wallet agent it does not own. That seam is a versioned specification, to be published with the SDK release, that any wallet vendor can implement without reading our source.

📘

Frozen 1.x contract, currently 1.1

A self-contained guide: discovery, authentication, transport, operations, idempotency, errors, and the KYA test. Frozen at the platform's v1.0.0 release; changes since then are additive, plus coordinated errata.

🧰

Ten tool calls, plus a sandbox tool

Ten tool calls — instruments, payment credentials, loyalty balance, earning quotes, accrual, card events, and the reserve / capture / release redemption lifecycle, plus user approval requests — and a sandbox-only test-approval tool. MCP over JSON-RPC 2.0.

✍️

Signed both directions

RFC 9421 message signatures over Ed25519, verified in both directions with Content-Digest binding. Your agent authenticates us as strictly as we authenticate it.

🔁

Idempotency, specified

Durable keys with replay semantics and a defined conflict rule — the same key with different arguments is an error, not a second debit. A named error vocabulary instead of prose.

🧪

Conformance you can run

A portable harness: point it at any base URL, get pass, fail or not-implemented per checklist item, and a non-zero exit on any failure for CI. Language-neutral wire vectors — signature bases, digests, cart hashes. Public when the SDK is released.

🚪

Proven by a clean room

We built a second, clean-room implementation of the agent from the written spec alone, with no access to our source.

The signed spend path: what a wallet agent checks before value moves A host runtime calls Paygent over MCP. Paygent calls the wallet agent with an RFC 9421 Ed25519 signature. The wallet agent checks who is calling and whether the call is within the mandate. It then reserves the redemption under an idempotency key. Before capture, it checks that the user approved these items at this price, then captures and answers with a signature Paygent verifies in turn. Your host runtime Paygent Your wallet agent commerce tool call · MCP signed request · Ed25519 (RFC 9421) 1 Who is calling? signature + digest verified 2 Inside the mandate? mandate scope · cap · expiry 3 These items, at this price? approval bound to the cart hash reservation held · idempotency key recorded capture on completion signed response · verified in this direction too Cancel or timeout releases the reservation · a replayed key returns the first answer, never a second debit
  • Your host calls Paygent over MCP.
  • Paygent calls your wallet agent with an Ed25519 signature (RFC 9421).
  • Before value moves, the wallet checks who is calling and whether the call is inside the mandate (scope, cap, expiry). Before capture, it also checks that the user approved these items at this price (bound to the cart hash).
  • The reservation is held under an idempotency key, captured on completion, released on cancel or timeout.
  • The response is signed too — you authenticate us as strictly as we authenticate you.
Every spend-affecting call runs this gauntlet — which is why a bank can put its own wallet behind us and still answer to its own security review.
Why build on Paygent

The agent parts are easy. The money parts are not.

Anyone can wire an LLM to a product feed. What you do not want to build twice:

⚖️

Deterministic money math

Totals, discounts, and point earning are composed in service code and streamed as sealed verbatim blocks. The splice is structural — the model never sees the number, so correctness does not rest on prompt discipline.

🔐

KYA — Know Your Agent

Before an external wallet agent moves value, it checks who is calling and whether each spend-affecting call is within a scoped, capped, expiring mandate. Before capture, it also checks that the user approved these items at this price. Cart-bound approval, cryptographic accountability, not a chat log.

🏦

Pluggable wallet & loyalty

Bind sessions to your wallet provider — cards, balances, points. The loyalty engine handles escrow, real-time redemption, and crash-safe capture behind one interface.

🧠

Model-agnostic runtime

Any OpenAI-compatible server — LM Studio, vLLM, Ollama — or a hosted frontier model, selected by environment, with per-role overrides so routing can run smaller than composition. Correctness lives in the services, so an 8B model is a real option.

💠

Earn ingress, not only spend

Post card events and points accrue against the program ledger and settle on Stellar testnet — idempotent on the event id, with a member provisioned just in time on first sight. The earn side of the loop is an API, not a batch file.

🎯

Offer-bound checkout

Adds resolve against the offers discovery actually showed, carried on the session, at the price shown — superlatives and ordinals are arithmetic over that set, not a second keyword search that can land on the wrong item.

Integration paths

Three ways in, one engine underneath.

1

Call it as a tool

Your existing assistant delegates commerce intents to Paygent over MCP / agent-card discovery. Lightest touch.

2

Build on the /v1 API

Sessions and streamed turns over the versioned /v1 HTTP contract. Our own reference web chat consumes nothing else — what we build on is what you get.

3

White-label the stack

Run the full engine under your brand with your catalog and your wallet provider behind the interface.

Early access

Build the commerce capability
you do not want to maintain.

We are looking for our first design partners — host runtimes, platforms, and wallet providers — ahead of general availability.

Request API access Ask an integration question