Getting Started
For AI Agents
Connect an AI agent to FurlPay through MCP and scoped tools, then apply identity and spend controls to the actions it prepares. Agent connectivity is available; payment settlement still depends on the status of the selected production rail and the user's approval.
Agent access does not enable settlement
/api/rails before exposing a money-moving tool; if it cannot return a status, treat the rail as unavailable.The mental model
Path 1 — MCP (Claude, Cursor, any MCP client)
FurlPay exposes an MCP endpoint at /api/mcp. The tools presented to a client depend on the scopes the user grants. The connector can read authorized data and prepare financial actions for approval; it cannot bypass the payment rail or make an unavailable service live:
https://furlpay.com/api/mcpFor Claude setup and the exact read-only and prepare-only tools, see the Claude connector guide. Travel MCP examples are integration previews; production travel booking is not currently available.
Path 2 — LangChain / LlamaIndex
Framework adapters may expose FurlPay tools to an agent, but the tool set and available operations depend on the integration and user's permissions. Treat read, prepare and execute as different capabilities; never assume a tool can complete a production payment.
Path 3 — x402: metered HTTP requests
x402 lets an API return 402 Payment Required with a payment challenge. The FurlPay x402 endpoint currently returns 503 because operational controls are unavailable, and production settlement is also in development. Agents cannot rely on completing paid requests through FurlPay. Read the x402 guide for the protocol shape and check /api/rails before use:
import { withX402 } from "@furlpay/x402";
export const GET = withX402(
async () => Response.json({ signal: "premium market data" }),
{ payTo: "0xYourAddress", network: "base", amount: "10000" }
);Illustrative user-signed spend mandate
Budgets cap how much; mandates prove who allowed what. The user signs once, the agent signs each intent, and an integrating service can verify the chain. This example is a library pattern only; it does not enable FurlPay production travel or payment settlement.
import { AgentTrust, generateKeypair, issueMandate, createBookingToken } from "@furlpay/agent-trust";
const user = generateKeypair("user"), agent = generateKeypair("agent");
// 1 · User consents: $500 trip, lodging+airlines, 7 days
const mandate = issueMandate({
userPrivateKeyPem: user.privateKeyPem, userPublicKeyPem: user.publicKeyPem,
agentKeyId: agent.keyId,
constraints: { maxTotalUsd: 500, mccAllowlist: ["7011", "4511"],
expiresAt: new Date(Date.now() + 7 * 864e5).toISOString() },
});
// 2 · Agent signs ONE exact intent per booking
const mandateToken = createBookingToken({
mandate, agentPrivateKeyPem: agent.privateKeyPem, agentPublicKeyPem: agent.publicKeyPem,
intent: { amountUsd: 320, source: "legacy", mcc: "7011" },
});
// 3 · The rail verifies the full chain — wrong amount, wrong MCC,
// replayed token, exhausted budget: all fail closed.Deep dive: Agent Trust & Mandates (TAP) · applied to bookings: FurlPay Travels.
Why builders pick Furlpay for agents
