> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentcard.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Choose a quickstart

> Pick the Agentcard quickstart for what you're building: a web app, a messaging agent, a backend agent, an iOS or React Native app, or company-funded accounts. Each one runs in sandbox and ends at a purchase.

Agentcard has one quickstart per type of product, because what differs between integrations is the shape, not the language: where the wallet opens, and how the agent buys. Every quickstart has the same five steps, takes ten to fifteen minutes, runs entirely in sandbox, and ends the same way, with the user's agent running a real purchase conversation at a real merchant up to the sandbox wall, where the confirm is refused by design because no sandbox call ever moves money.

**If you're unsure, start with the [web app quickstart](/get-started/quickstart).** It's the most complete path, its wallet step is the simplest to run on your own machine, and everything you wire there (credentials, connecting users, the agent's `buy` loop, webhooks) carries over unchanged to every other shape.

| If you're building...                                               | Start with                                                         | Why                                                                                                               |
| ------------------------------------------------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- |
| A web app where the user is in your page and an agent buys for them | [Web app](/get-started/quickstart)                                 | The wallet opens as a sheet over your page from one script tag, and the agent buys over MCP or `POST /buy`.       |
| An agent that lives in iMessage, WhatsApp, or SMS                   | [Messaging agent](/get-started/quickstarts/messaging-agent)        | Nothing to embed: the agent texts a wallet link, tapping it opens the hosted wallet, and the agent buys over MCP. |
| A backend or CLI agent with no frontend                             | [Backend or CLI agent](/get-started/quickstarts/backend-agent)     | Your server prints or emails a hosted wallet link and calls `POST /buy` itself, getting the cart back as data.    |
| A native iOS app                                                    | [iOS app](/get-started/quickstarts/ios-app)                        | The wallet is a SwiftUI sheet from the AgentcardWalletKit package, and the agent buys over MCP.                   |
| A React Native app                                                  | [React Native app](/get-started/quickstarts/react-native-app)      | One component renders the wallet with the same events as the web SDK, and the agent buys over MCP.                |
| A product where your company pays and users never open a wallet     | [Company-funded accounts](/get-started/quickstarts/company-funded) | You create cardholders and buy tokens, and purchases draw on the company balance instead of a user's wallet.      |

The first five rows share one wallet. Your server creates a wallet link the same way in every one of them, and the shape only changes how that link opens: a sheet over your page, a tap in a thread, a hosted page, a native view. The last row has no end-user wallet at all. The agent acts as a cardholder you created, with a buy token as its bearer, and the money behind every purchase is your company balance.

**Use a wallet shape when** your users pay with their own cards or their own Agentcard balance, which is the case for almost every consumer product. **Use company-funded accounts when** your company is the one paying, for example an internal agent that buys supplies, or a service whose price already includes what the agent spends.

## What every quickstart covers

1. **Credentials.** Your sandbox `client_id` and `client_secret` from the dashboard, exchanged for a bearer token, plus a sandbox webhook destination so the last step has something to read.
2. **Connect a user.** Start a connection, verify it with the sandbox code `111111`, record consent. You keep the user's id and their connection token. (Company-funded accounts create a cardholder and a buy token here instead.)
3. **The wallet for your shape.** A wallet link, opened the way your shape opens it, and the test card `4242 4242 4242 4242`. (Company-funded accounts fund the company balance here instead.)
4. **The agent buys.** The MCP `buy` tool, or `POST /buy`, with the connection token as the bearer. Sandbox refuses the confirm on purpose; that refusal is the finish line.
5. **See what happened.** The deliveries in the dashboard, every one with `livemode: false`.

The steps that are identical across shapes are literally the same text on every page, so if you switch shapes later you only reread the wallet step.

<CardGroup cols={2}>
  <Card title="Web app whose agent buys" href="/get-started/quickstart">
    The default. Register your origin, embed the wallet on localhost, and let the agent buy over MCP or HTTP.
  </Card>

  <Card title="Messaging agent (iMessage, WhatsApp, SMS)" href="/get-started/quickstarts/messaging-agent">
    Text a wallet link, let the user add a card on the hosted wallet, and buy over MCP.
  </Card>

  <Card title="Backend or CLI agent, no frontend" href="/get-started/quickstarts/backend-agent">
    Hand the user a hosted wallet link and call `POST /buy` from your server.
  </Card>

  <Card title="iOS app" href="/get-started/quickstarts/ios-app">
    Present the AgentcardWalletKit sheet and buy over MCP.
  </Card>

  <Card title="React Native app" href="/get-started/quickstarts/react-native-app">
    Render the wallet component and buy over MCP.
  </Card>

  <Card title="Company-funded accounts (no end-user wallet)" href="/get-started/quickstarts/company-funded">
    Create cardholders and buy tokens, fund the company balance, and buy with the buy token.
  </Card>
</CardGroup>
