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

# How do I connect publisher inventory so advertising agents can discover it?

> A publisher signs up for a Seller Account, connects its ad server as an inventory source, authorizes Apostra in adagents.json, and buyers' agents can then find it. What access each step needs.

A publisher makes its inventory discoverable to advertising agents by signing up
for an Apostra Seller Account, connecting its ad server as an inventory source,
adding its products, and authorizing Apostra to sell for its domains in its
`adagents.json` file. After Apostra's review, buyers and their agents on Apostra
can find the storefront, buy a product outright, or send a brief and get a plan
back. You set the prices and rules. A buyer on Apostra can buy only from sellers
that are listed on Apostra, whether through a Storefront Apostra hosts or a sales
agent you bring.

## Choose how you sell

| | Listing | Storefront | Your own AdCP sales agent, no Apostra |
| - | - | - | - |
| Who answers buyers | Your own sales agent, or a third party's | A storefront agent Apostra hosts | Your own agent |
| Who finds you | Buyers on Apostra | Buyers on Apostra | Whoever you reach on your own |
| Charge from Apostra | None | Per Intelligence Unit (IU), Apostra's billing unit, on the metered activities. See the Rate Card | None |
| Share of your media | 0% | 0% | Not applicable |

If you run your own sales agent, AdCP's own guide,
[Making your inventory available to AI agents](https://docs.adcontextprotocol.org/docs/building/operating/seller-integration),
covers publishing `adagents.json` and `brand.json` and implementing `get_products`,
`create_media_buy` and `get_media_buy_delivery`. Apostra builds on the same
protocol, so you can follow that guide and still list on Apostra.

Prices are in [What you pay as a seller](https://docs.apostra.com/v3/plan-and-billing.md#what-you-pay-as-a-seller),
and the live Rate Card is the authority. See
[Building on Apostra or on AdCP directly](https://docs.apostra.com/v3/apostra-vs-adcp.md) if you are deciding
whether to bring an agent at all.

## What each step needs

| Step | What you do | Access it needs |
| - | - | - |
| Sign up | Create the account at [app.apostra.com/signup?intent=storefront](https://app.apostra.com/signup?intent=storefront) | A work email on your company's domain. A personal webmail address is not accepted |
| Connect an ad server | Call `save_inventory_source` with `{"adServer":{"type":"google_ad_manager"}}`, or `freewheel`, `springserve`, `adswizz`, `broadsign` or `citrusad`. It opens a connection form | Ad-server credentials, entered in the form. They never pass through chat or a tool call |
| Give Apostra access in Google Ad Manager | Add the service account email that Apostra creates for your organization as a user in your network | Someone in GAM who can add a service account user and give it a role. Apostra recommends the built-in Administrator role. Trafficker cannot approve orders and does not work |
| Authorize the sales agent | The publisher adds one entry to its `adagents.json`. Apostra reads that file for each publisher domain, and falls back to a `MANAGERDOMAIN` line in `ads.txt` only when the publisher's own file returns 404 | Whoever edits the publisher's file. See [Publisher adagents.json entry](https://docs.apostra.com/v3/seller-publisher-adagents.md) |
| Add seller materials | Register a media kit, deck, rate card, site or instructions with `save_material` | An upload follows prepare, upload and finalize. An uploaded rate card is evidence, not approval to change published prices |
| Test | Run a sandbox booking against your own supply to verify the path without spending | A Seller Account |

Sellers that sell through an ad platform such as Meta or TikTok have no
`adagents.json` step. Their selling rights come from the platform account.

After you finish setup, Apostra does some work before buyers outside your
organization can find you. Apostra publishes no timings for that step. The whole
path, with an example, is in
[From signup to your first booking](https://docs.apostra.com/v3/seller-first-booking.md).

## Limits to check

* A configured connection is not proof of a live call. `get` returns recorded
  state and does not probe your ad server.
* Configuring an inventory source does not publish it or satisfy live campaign
  readiness.
* Publisher authorization does not prevent transactions. It lets buyers verify
  that the publisher authorized your storefront. The setup step stays open until
  every declared domain is authorized.
* Seller delivery is seller-reported. It is not buyer measurement and does not
  establish billing eligibility by itself.
* Real-time targeting with Prebid and Google Ad Manager is a separate setup. See
  [Set up TMP with Prebid](https://docs.apostra.com/v3/seller-prebid-setup.md). Connecting an inventory source
  does not install it.
* Some credential, payout, approval and reassignment work stays in the web app
  rather than in tools a model calls.

## When not to use Apostra

* You already run an AdCP sales agent and need nothing from Apostra's buyers,
  testing or certification. AdCP is open. You can run your agent anywhere.
* You need to be sold through channels Apostra does not connect. A listing makes
  you discoverable to buyers on Apostra, not elsewhere.
* Your ad server is not on the supported list. A sales agent is added only as one
  of your organization's agents or a certified partner's, never from an endpoint
  alone. See [Connect to a partner agent](https://docs.apostra.com/v3/seller-partner-connection-form.md).

## Next step

Sign up at
[app.apostra.com/signup?intent=storefront](https://app.apostra.com/signup?intent=storefront),
then follow [From signup to your first booking](https://docs.apostra.com/v3/seller-first-booking.md). To
drive the steps with a coding agent, install the developer plugin from
[Connect in five minutes](https://docs.apostra.com/v3/quickstart.md), call `get_status` from your Seller
Account, then start the ad-server connection:

```json theme={null}
{ "adServer": { "type": "google_ad_manager" } }
```

Send that as the input to `save_inventory_source`. It creates nothing and opens
the **Connect ad server** form.

## Sources

* [Sell your media on Apostra](https://docs.apostra.com/v3/sell-on-apostra.md) and
  [Connecting an ad server](https://docs.apostra.com/v3/seller-connect-ad-server.md).
* [Google Ad Manager access Apostra needs](https://docs.apostra.com/v3/seller-gam-access.md).
* [Bring data in](https://docs.apostra.com/v3/bring-data-in.md) and
  [Publisher adagents.json entry](https://docs.apostra.com/v3/seller-publisher-adagents.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.