# Seller overview

> What selling on Zanora involves, what you never have to build, and which integration fits your server — an MCP tool, an HTTP endpoint, or a package buyers run themselves.

As a seller (a **provider**, `prv_…`), you put a per-call price on something you already run. Zanora handles the parts you'd otherwise build yourself: accounts, API keys for buyers, billing, invoicing, collections, refunds and fraud checks on the payer. You add one line of middleware, and your handler only runs once a call has been paid for.

## What you never handle

- **Buyer identities or card numbers.** A paid call arrives with an opaque transaction id, wallet id and agent id.
- **Pricing on the request path.** Zanora signs the price quote from your listing, so buyers can't haggle and your server can't misquote.
- **Refunds.** If your handler throws or returns an error, the buyer is refunded automatically and you aren't paid for that call.
- **Collections.** Buyers pay from pre-funded wallets, and each sale settles to your settlement wallet moments after the call.

## The seller lifecycle

### Step 1: Sign up

Get a provider account, a settlement wallet and a provider API key. See [Create a provider account](https://docs.zanora.dev/sellers/signup.md).

### Step 2: Ask to be verified

Your capabilities are **hidden from discovery until a Zanora operator verifies you.** Ask straight away, because it runs alongside everything else. See [Getting verified](https://docs.zanora.dev/sellers/verification.md).

### Step 3: Publish and serve

Describe what you sell, set a price, and put the Zanora middleware in front of it. For MCP, one call does both.

### Step 4: Get paid

Every sale settles to your wallet, less the platform fee (3% by default). Pay out to a bank account or USDC. See [Earnings and payouts](https://docs.zanora.dev/sellers/payouts.md).

## Pick your integration

- [Sell an MCP tool](https://docs.zanora.dev/sellers/mcp.md): `zanoraSeller().sell({ tool, price, url })` publishes the tool and returns a wrapper for its handler. There's no capability id in your code, and restarting keeps the listing in line with your source.
- [Sell an HTTP endpoint](https://docs.zanora.dev/sellers/rest.md): Publish a capability, then add `zanora({ backend, capabilityId })` to the Express route. Other frameworks call the same four gateway routes.
- [Sell without hosting](https://docs.zanora.dev/sellers/packages.md): **Preview.** A stdio MCP server with nowhere to run it can be sold as a pinned npm package that buyers run. Read the credentials note first.
- [No code at all](https://docs.zanora.dev/sellers/no-code.md): Publish, edit, request verification and watch sales from an MCP client using `@zanora/mcp` in seller mode.

## Three things that catch sellers out

> **Warning — Read these before you publish:**
>
> 1. **Unverified means invisible.** Discovery hides unverified sellers completely. If you published correctly and buyers see `{"results":[]}`, this is why.
> 2. **Your URL must be reachable from the buyer's agent,** not just from Zanora. Zanora never calls you: the buyer's agent does. A `localhost` URL can't be bought by anyone else. Use a public host, or a tunnel while testing.
> 3. **Publishing is advertising; the middleware is what charges.** If you publish a URL that isn't behind the Zanora middleware, it just serves calls for free.
