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

# Get an account ready to buy

> Use when a buyer account cannot place a media buy yet: work through the blockers get_status reports (advertiser, currency, seller connections, terms and billing) until the account is ready.

Skill `get-account-ready-to-buy` · version 1.0.0 · for buyers.

## When to use

* `get_status` on a buyer account lists readiness blockers.
* A person asks why they cannot request proposals or launch a campaign.
* A new buyer account needs its first advertiser and sellers before any campaign work.

## Before you start

* You are connected and have run [Build with Semicola](/skills/build-with-semicola).
* The active account is the buyer account the person means.
* For an advertiser, you know or can ask for: its name, brand domain, primary currency, and whether
  it is a sandbox advertiser for testing.

## Steps

1. Call `get_status`. Read `blockers` and `nextActions`. If `canBuyAnywhere` is true and
   `readyDestinations` has at least one entry, the account is ready: say so and stop.

2. If the account is wrong, call `switch_account`, then `get_status` again.

3. Advertiser. Call `search` with `kind: "advertiser"` and reuse a match. If there is none:

   * call `save_advertiser` with `resolveBrand` set to the brand domain and show the person the brand
     it finds;
   * call `save_advertiser` with `name`, `brand`, `primaryCurrency`, `sandbox` and an
     `idempotencyKey`.

   In hosts that render widgets, `open_add_advertiser` lets the person fill in the same task
   themselves.

4. Currency. Confirm `primaryCurrency` with the person in so many words before creating the
   advertiser. It locks after the first campaign, and `sandbox` cannot change after creation.

5. Sellers. Call `open_connections_page` with `tab: "available"`, or `search` with `kind: "seller"`,
   to see who can be reached. For each seller the person chooses, call `save_connection` with one
   intent:
   * `selection` of `ALWAYS_INCLUDE`, `ALWAYS_EXCLUDE` or `DEFAULT` for the whole account; or
   * `advertiserActivation` with the `advertiserId` and `decision: "ENABLED"` for one advertiser.

6. Terms and billing. An organization admin accepts the terms and sets up payment in the app under
   **Settings → Plan & billing** at `https://app.semicola.com`. Tell the person exactly which step is
   pending; see [Account & billing](/buy/billing).

7. Call `get_status` again and repeat from step 1 until no buying blocker remains.

## Guardrails

* Never accept terms, choose a plan or handle payment details for the person. Those steps belong to
  an admin in the app.
* Do not create a second advertiser for a brand that already has one; update the existing record
  with `save_advertiser` and its `advertiserId`.
* Send one intent per `save_connection` call, and never flip a seller the person excluded.
* Use a sandbox advertiser for rehearsals. No money moves and delivery is simulated.
* Stop at `needs_input` and `pending_confirmation`, as in every skill.

## Done when

* `get_status` shows `canBuyAnywhere: true` and at least one entry in `readyDestinations`.
* The person knows which advertiser and sellers are set up, and any warnings that remain.
