@fretumai/express
v0.1.0
Published
Drop-in Fretum paymentMiddleware for x402-express — adds compliance, 0xSplits syndication, and dual Fretum + Agentic.Market listing with the same call signature as x402.
Maintainers
Readme
@fretumai/express
Drop-in Fretum paymentMiddleware for x402-express. Same signature as x402-express — adds compliance, 0xSplits syndication, and dual listing on the Fretum marketplace + Agentic.Market.
Installed as
@fretumai/express— imports arefrom '@fretumai/express'.
Install
npm install @fretumai/express @fretumai/facilitatorQuick Start
import express from "express";
import { paymentMiddleware } from "@fretumai/express";
import { facilitator } from "@fretumai/facilitator";
const app = express();
app.use(paymentMiddleware(
"0xYourMerchantPayoutAddress", // raw EOA is fine — auto-wrapped in 0xSplits
{
"POST /lead-research": {
price: "$1.00",
network: "base",
config: {
name: "Lead Research",
description: "Dallas-area B2B prospect enrichment",
discoverable: true,
inputSchema: { /* JSON Schema */ },
outputSchema: { /* JSON Schema */ },
},
},
},
{ facilitator }
));
app.post("/lead-research", (req, res) => {
// ...do the work...
res.json({ leads: [] });
});
app.listen(3000);What Fretum adds over plain x402-express
- 0xSplits auto-wrap — Pass a raw merchant EOA; we deploy (or resolve) an immutable 0xSplits contract that pays 98% to the merchant and 2% to the Fretum treasury, then hand that split address to x402 as
payTo. No custody, no money-transmitter risk. - Dual listing — Every
discoverable: trueroute is mirrored tofretum.ai/marketplaceand optionally syndicated to Coinbase's Agentic.Market. Devs get distribution without extra work. - Graceful degradation — If the Fretum API is unreachable, the middleware falls through to raw x402-express behavior so your server never hard-fails on our outages.
Configuration
Environment variables:
FRETUM_API_BASE default: https://api.fretum.ai
FRETUM_API_KEY optional — required for listings/complianceOr pass options directly:
paymentMiddleware(payTo, routes, {
facilitator,
fretumApiBase: "https://api.fretum.ai",
fretumApiKey: process.env.FRETUM_API_KEY,
autoWrapSplit: true, // default true
syncListings: true, // default true
merchantMetadata: { merchantId: "mcf-agentic" },
});Advanced
import { fretumClient } from "@fretumai/express";
const client = fretumClient();
const split = await client.resolveSplit("0xMerchant", "base");License
MIT — Cameron Fagan / MCF Agentic
