Skip to main content
Cookbooks

Multi-Provider Agent

Route payments across Stripe, Asaas, and Mercado Pago automatically. The agent calls codespar_pay — CodeSpar picks the best provider for each transaction.

View MarkdownEdit on GitHub
TIME
~10 min
PROVIDER
Vercel AIgpt-4o
SERVERS
stripeasaasmercadopago

Route payments across Stripe, Asaas, and Mercado Pago automatically. The agent calls codespar_pay — CodeSpar picks the best provider for each transaction.

↻ ROUTING
One meta-tool, multiple providers
method:pix
method:credit_card
method:boleto
codespar_pay
meta-tool
Asaaspix
Stripecard
Mercado Pagoboleto
agent calls codespar_pay({ method: 'pix' }) — CodeSpar routes to Asaas based on lowest Pix fees

Prerequisites

npm install @codespar/sdk @codespar/vercel ai @ai-sdk/openai

You need active accounts on Stripe, Asaas, and Mercado Pago. CodeSpar prompts for authentication on first use.

How routing works

When the agent calls codespar_pay, CodeSpar inspects the arguments and picks the optimal provider for the region and method:

PAYMENT METHODPROVIDERWHY
pixAsaasLowest Pix fees, instant settlement
credit_cardStripeBest international card support
boletoMercado PagoBest boleto infrastructure
debit_cardStripeCard processing via Stripe

Override automatic routing by passing provider: "stripe" explicitly:

await session.execute("codespar_pay", {
  method: "pix",
  provider: "mercadopago", // force Mercado Pago instead of default Asaas
  amount: 35000,
});

Full agent code

multi-provider.ts
import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";
import { CodeSpar } from "@codespar/sdk";
import { getTools } from "@codespar/vercel";

const codespar = new CodeSpar({ apiKey: process.env.CODESPAR_API_KEY });

async function multiProviderAgent(userMessage: string) {
  const session = await codespar.sessions.create({
    servers: ["stripe", "asaas", "mercadopago"],
  });

  try {
    const tools = await getTools(session);

    const result = await generateText({
      model: openai("gpt-4o"),
      tools,
      maxSteps: 10,
      system: `Ask customer which payment method they prefer (Pix, card, boleto).
Use codespar_pay — CodeSpar routes to the right provider automatically.`,
      prompt: userMessage,
    });

    return result.text;
  } finally {
    await session.close();
  }
}

Automatic fallback

If the primary provider fails, CodeSpar tries the next available provider for that method — no extra code needed:

// If Asaas is down for Pix, CodeSpar automatically falls back to Mercado Pago
const result = await session.execute("codespar_pay", {
  method: "pix",
  amount: 35000,
  currency: "BRL",
  // No provider specified — CodeSpar picks best available
});

Checking available providers

Use codespar_discover to inspect what's available in your session:

const discovery = await session.execute("codespar_discover", {
  domain: "payments",
});

// Returns:
// {
//   servers: ["stripe", "asaas", "mercadopago"],
//   capabilities: ["pix", "boleto", "credit_card"],
//   methods: {
//     pix: ["asaas", "mercadopago"],
//     boleto: ["mercadopago", "asaas"],
//     credit_card: ["stripe", "mercadopago"]
//   }
// }

Next steps