Skip to main content

Why meta-tools

CodeSpar provides 14 meta-tools that abstract every connected MCP server into a unified commerce interface, reducing context window cost and simplifying agent development.

4 min read
View MarkdownEdit on GitHub

CodeSpar integrates MCP servers covering every major LatAm commerce API — payments, fiscal compliance, logistics, messaging, banking, ERP, and crypto. Instead of requiring your agent to understand each server's API individually, CodeSpar provides 14 meta-tools that intelligently route calls to the right provider, plus codespar_get_started, the onboarding planner: it moves no money and is counted apart.

This design is intentional. A typical commerce workflow in Brazil might touch Stripe (cards), Mercado Pago (Pix), SEFAZ (NF-e), Melhor Envio (shipping), and Z-API (WhatsApp). That is 5 providers, each with 10-20 tools, totaling 50-100 tool definitions in the LLM's context window. Meta-tools compress this to 15 stable interfaces regardless of how many providers are connected.

Why a few meta-tools, not 99 raw tools

Context window economics

Every tool definition consumes tokens in the LLM's context window. A typical MCP server exposes 10-15 tools, each with a JSON Schema input_schema averaging 200-400 tokens. Connect 5 servers and you consume 5,000-15,000 tokens just on tool definitions -- before the conversation even starts.

Meta-tools solve this by providing 15 fixed interfaces that never change regardless of how many servers are connected:

ApproachTools in contextTokens consumedAgent complexity
Raw server tools (5 servers)50-7510,000-30,000Agent must know each provider
Meta-tools15~3,000Agent uses unified interface

Routing abstraction

When your agent calls codespar_pay, CodeSpar inspects the arguments (payment method, currency, amount) and routes to the optimal provider:

  1. Inspects the arguments to determine payment method and region
  2. Selects the best available provider for that rail (e.g. Asaas for Pix in Brazil, Conekta for card in Mexico)
  3. Translates the request to the provider's native API format
  4. Normalizes the response into a consistent schema
  5. Returns the result to your agent

Your agent never needs to know which provider handles Pix vs. boleto vs. SPEI. It calls codespar_pay with the intent, and CodeSpar handles the routing.

The 14 meta-tools, plus codespar_get_started

Meta-toolPurposeTypical latency
codespar_get_startedRead-only setup planner: the ordered happy path for this workspace. Moves no money50-150ms
codespar_discoverSemantic + lexical search across the catalog for tools and servers50-150ms
codespar_manage_connectionsInspect connected providers and start connection flows50-200ms
codespar_payOutbound transfers — payouts via Pix, card, wire, or bank transfer. method: "boleto" settles an existing boleto rather than issuing one400-1200ms
codespar_chargeInbound charges — buyer pays merchant via Pix, boleto, card, PSE, or wallet across BR, MX, PE, CO, CL, AR, EC and USD400-1200ms
codespar_checkoutSell-side merchant checkout — assemble a cart and dispatch it as an inbound charge. Pix x BRL x BR is the only rail with catalog lines; boleto and card refuse with no_eligible_providers600-2000ms
codespar_shopBuy-side shopping — act as the shopper: search a store and buy, minting the store's real Pix (VTEX guest checkout, Mercado Livre)600-2000ms
codespar_invoiceIssue fiscal documents (NFS-e default, NF-e, CFDI, Factura AR)500-2000ms
codespar_shipDomestic shipping via Melhor Envio (domestic-quote, domestic-label, domestic-track)200-600ms
codespar_notifySend notifications via WhatsApp, SMS, or email100-300ms
codespar_crypto_payCrypto rails — Coinbase Commerce (hosted checkout), Bitso and Foxbit (BR), plus fiat on/offramp300-1000ms
codespar_kycKYC / identity verification via Persona, Sift, Konduto, or Truora300-1500ms
codespar_walletThe agent's governed wallet: balance and Pix key, ledger statement, top-up via minted Pix copia-e-cola100-400ms
codespar_ledgerDouble-entry ledger (Lerian Midaz) — entry, balance, account100-400ms
codespar_issueIssue + control payment cards via our card-issuing partner — virtual/physical/freeze/cancel300-1000ms

Each one, on its own page

Each meta-tool has its own page with the argument shape, the result shape, how it routes between rails, and what the operator has to configure. This page does not repeat that: two copies of one reference diverge, and the one with less detail wins by being closer.

Meta-toolWhat it does
codespar_chargeCharges, producing the rail's instrument
codespar_checkoutCloses an e-commerce cart
codespar_crypto_payPays in stablecoin, settling on-chain
codespar_discoverFinds the server and the tool for an intent
codespar_get_startedThe first-integration path
codespar_invoiceIssues a fiscal document
codespar_issueIssues a card
codespar_kycVerifies identity and onboards
codespar_ledgerReads and writes the ledger
codespar_manage_connectionsConnects and revokes provider credentials
codespar_notifySends a message over WhatsApp, SMS or email
codespar_payPays, routing between Pix, card and crypto
codespar_shipBooks and tracks a delivery
codespar_shopSearches for a product in connected stores
codespar_walletReads the balance and moves the wallet

Server-specific tools

In addition to the 14 meta-tools, each connected MCP server exposes its own native tools. These are useful when you need provider-specific features that meta-tools do not cover, such as Stripe subscription management or Mercado Pago installment configuration.

import { CodeSpar } from "@codespar/sdk";
const cs = new CodeSpar({ apiKey: process.env.CODESPAR_API_KEY });
const session = await cs.create("user_123", { servers: ["asaas"] });
// ---cut---
import { tools } from "@codespar/sdk";

const available = await tools(session);

// The 14 meta-tools plus codespar_get_started, on every session, whatever `servers` holds.
// A provider's own tools are not in this list: call them by name,
// `<server>/<tool>`, and the catalog resolves them.
//   "stripe/create_subscription"
//   "asaas/get_balance"
//   "mercado-pago/create_preference"
//   "melhor-envio/calculate_deadline"

The tool schema field is input_schema (snake_case), following the MCP specification. Not inputSchema (camelCase).

Next steps

Why meta-tools | CodeSpar