---
title: "Overview"
description: Nineteen runnable recipes. Each one is a working agent that solves one real commerce problem end to end, with the refusals you will actually hit.
---

import { Callout } from "fumadocs-ui/components/callout";

## Find the shape of your problem

Each row is a kind of problem, not a kind of agent. Find the sentence that sounds like what you are building: every recipe sits in exactly one row, and the time beside it is the one the recipe declares.

{/* GERADO por scripts/cookbooks/gerar-indice.mjs — não editar à mão */}

<ShapeGrid formas={[
  {
    nome: "Pay out",
    familia: "sai",
    icone: "↗",
    quando: "Your software already decided who gets paid, and how much.",
    receitas: [
      { titulo: "Marketplace Payout", href: "/docs/cookbooks/marketplace-payout", tempo: "~15 min" },
      { titulo: "Agent with a Wallet", href: "/docs/cookbooks/agent-with-wallet", tempo: "~15 min" },
    ],
  },
  {
    nome: "Buy",
    familia: "sai",
    icone: "⌕",
    quando: "Your agent is the buyer, on a checkout somebody else owns.",
    receitas: [
      { titulo: "Shopping Agent", href: "/docs/cookbooks/shopping-agent", tempo: "~15 min" },
    ],
  },
  {
    nome: "Collect",
    familia: "entra",
    icone: "↙",
    quando: "Someone else has to pay you, and you need to know when they did.",
    receitas: [
      { titulo: "Pix Payment Agent", href: "/docs/cookbooks/pix-payment-agent", tempo: "~10 min" },
      { titulo: "E-Commerce Checkout", href: "/docs/cookbooks/ecommerce-checkout", tempo: "~15 min" },
      { titulo: "Crypto Pay Agent", href: "/docs/cookbooks/crypto-pay-agent", tempo: "~10 min" },
    ],
  },
  {
    nome: "Act on settlement",
    familia: "entra",
    icone: "⇥",
    quando: "The work starts only once the money actually landed.",
    receitas: [
      { titulo: "Webhook Listener", href: "/docs/cookbooks/webhook-listener", tempo: "~15 min" },
      { titulo: "Webhook Providers Reference", href: "/docs/cookbooks/webhook-providers" },
    ],
  },
  {
    nome: "Bound authority",
    familia: "autoridade",
    icone: "⧉",
    quando: "An agent may spend, but only inside something a person signed.",
    receitas: [
      { titulo: "Card Bound to a Mandate", href: "/docs/cookbooks/issue-card-on-mandate", tempo: "~25 min" },
      { titulo: "What an Allowance Spent", href: "/docs/cookbooks/consumer-spend-ledger", tempo: "~20 min" },
    ],
  },
  {
    nome: "Hold for a human",
    familia: "autoridade",
    icone: "⏸",
    quando: "Some spends have to stop and wait for a decision.",
    receitas: [
      { titulo: "Hold a Spend for Approval", href: "/docs/cookbooks/approval-guardrail", tempo: "~20 min" },
    ],
  },
  {
    nome: "Open an account",
    familia: "registro",
    icone: "◈",
    quando: "Somebody has to exist before money can move.",
    receitas: [
      { titulo: "KYC Onboarding", href: "/docs/cookbooks/kyc-onboarding", tempo: "~20 min" },
      { titulo: "Open Finance Consent", href: "/docs/cookbooks/open-finance-consent", tempo: "~20 min" },
    ],
  },
  {
    nome: "Prove afterwards",
    familia: "registro",
    icone: "✦",
    quando: "Someone will ask what happened, and you have to show it.",
    receitas: [
      { titulo: "Verify the Audit Chain", href: "/docs/cookbooks/audit-chain-verify", tempo: "~25 min" },
    ],
  },
  {
    nome: "Find the capability",
    familia: "operar",
    icone: "◎",
    quando: "You know the intent, not the tool name.",
    receitas: [
      { titulo: "Find a Capability by Intent", href: "/docs/cookbooks/discover-capability", tempo: "~20 min" },
    ],
  },
  {
    nome: "Operate it",
    familia: "operar",
    icone: "⚙",
    quando: "Environments, tenancy, and the move to live.",
    receitas: [
      { titulo: "Projects, Keys and Environments", href: "/docs/cookbooks/projects-and-keys", tempo: "~20 min" },
      { titulo: "Sandbox to First Live Charge", href: "/docs/cookbooks/sandbox-to-live", tempo: "~20 min" },
      { titulo: "Multi-Tenant Agent", href: "/docs/cookbooks/multi-tenant", tempo: "~15 min" },
      { titulo: "Streaming Chat Agent", href: "/docs/cookbooks/streaming-chat-agent", tempo: "~20 min" },
    ],
  },
]} />

{/* fim do bloco gerado */}

## How a recipe works

Each one is a **single runnable file**, not pseudo-code. Copy it, put your `csk_test_` key in the environment, and run it: a test key resolves to a sandbox project, so the whole flow completes without provider OAuth and without moving real money.

Each one also documents the order its handlers run in, what already exists when a refusal arrives, and which refusal a retry can fix. That is usually the part you need at 2am.

<Callout type="info">
For output that never touches an upstream, declare per-session fixtures with `cs.create({ mocks: {...} })`. [Test Mode](/docs/concepts/test-mode) has the strict-mode contract and the envelope reference.
</Callout>

## Next steps

<NextStepsGrid items={[
  { label: "QUICKSTART", title: "5-minute quickstart", description: "Before the cookbooks: install the SDK and get a session running.", href: "/docs/quickstart" },
  { label: "CONCEPT", title: "Sessions", description: "The primitive every cookbook builds on.", href: "/docs/concepts/sessions" },
  { label: "CONCEPT", title: "Triggers", description: "Signed HTTP callbacks on settled events, for the webhook recipes.", href: "/docs/concepts/triggers" },
  { label: "REFERENCE", title: "SDK reference", description: "Every method, type and signature the cookbooks use.", href: "/docs/api/sdk" },
]} />
