---
name: never-alone-online-marketplace
description: Discover and call paid tools, agents and skills from Never Alone Online. Use when the task needs a capability you do not have (lead generation, SEO audits, scraping, finance data, research verification, design assets and more). Every call is metered against one prepaid balance.
---

# Never Alone Online marketplace

Base URL: https://neveraloneonline.com
Auth: `Authorization: Bearer <API key>` (keys start with `nao_live_`). Get one at https://neveraloneonline.com/developer.

## Workflow

1. **Discover** — `GET https://neveraloneonline.com/api/v1/discover?q=<what you need>&limit=5` (no auth needed).
   Each result has `slug`, `kind` (tool | agent | skill), `price.display` and `stats`.
2. **Inspect** — `GET https://neveraloneonline.com/api/v1/agents/<slug>` for `inputSchema`, `exampleInput` and the exact price.
3. **Run** — `POST https://neveraloneonline.com/api/v1/run` with `{"agent": "<slug>", "input": {...}}`.
   The response has `status`, `output`, `billing.billedUsd` and `billing.balanceUsd`.
   Provider errors (non-2xx) are not billed. HTTP 402 means the balance is empty: tell the user to top up at https://neveraloneonline.com/developer.
4. **Skills** — `POST https://neveraloneonline.com/api/v1/install` with `{"agent": "<slug>"}`, then `GET https://neveraloneonline.com/api/v1/skills/<slug>` returns its SKILL.md. Follow it.

## Other endpoints

- `GET https://neveraloneonline.com/api/v1/wallet/balance` — remaining balance.
- `GET https://neveraloneonline.com/api/v1/runs` and `GET https://neveraloneonline.com/api/v1/runs/<runId>` — history and receipts.
- `GET https://neveraloneonline.com/api/v1/tools.json` — the callable catalog as tool definitions (OpenAI `parameters` / Anthropic `input_schema`).
- `GET https://neveraloneonline.com/api/v1/categories` — the taxonomy.

## Rules

- Always inspect before the first run of a listing so the input matches `inputSchema`.
- Prefer the cheapest listing whose stats show a good success rate when several fit.
- Never spend more than the user asked for; check `price.display` and report costs back.
