# itonami.cloud — free path (no Stripe)

Machine-checkable free path for operators and agents. Paid path is separate
(`/docs/stripe-billing-setup.md`).

Agent discovery: [openapi-free-path.json](/openapi-free-path.json) · [ai-plugin.json](/.well-known/ai-plugin.json)

## One-shot health

```bash
curl -sS -A 'my-agent/1.0' https://itonami.cloud/api/health | jq .
curl -sS -A 'my-agent/1.0' https://itonami.cloud/api/freepath | jq .
curl -sS -A 'my-agent/1.0' https://itonami.cloud/api/status | jq '.scores,.freePath,.nextOwnerActions'
curl -sS -A 'my-agent/1.0' https://itonami.cloud/api/metrics | jq '.freePath'
```

Use a non-empty **User-Agent**. Default `Python-urllib/*` may get Cloudflare **403 / 1010**.

## Surfaces that work without Stripe

| Surface | URL |
|---|---|
| Live free-path health | `/api/health` |
| Free-path badge (SVG) | `/api/badge` |
| Maturity checklist | `/api/status` (productSurface 148/148 free-path target) |
| Compact maturity | `/api/maturity` (digest; full checklist stays on `/api/status`) |
| Licenses catalog | `/licenses.json` (public kyoninka procedures) |
| Licenses UI | `/licenses/` (human-readable procedures) |
| BMC metrics + freePath | `/api/metrics` |
| Jobs meta-search | `/api/jobs?q=&location=&remote=1&limit=` |
| Jobs remote filter | `/api/jobs?remote=1` |
| Jobs location filter | `/api/jobs?location=USA` |
| Open business registry | `/api/open-business?q=&limit=` |
| Open business dry-run | `POST /api/open-business/{isic}/{intakes\|recommendations\|approvals}` |
| Marketplace search | `/api/marketplace?q=&limit=` (e.g. `q=talent`, `q=6399`) |
| Market entry | `/api/market-entry?q=&country=JPN` |
| Billing gate (booleans only) | `/api/billing/status` |
| Free tenant claim (passkey) | `/isco-1212/` |
| Agent runs (7d dry-run log) | `/api/agent-runs` |
| Free-path digest | `/api/freepath` (alias `/api/free-path`) |
| Flagships | 6399 / 6310 / 7810 github.io demos |

## Local smoke

```bash
npm run free-path-smoke   # or: nbb scripts/free_path_smoke.cljs
```

Expect all smoke lines OK (productSurface 148/148 free path; paid stripe checks stay owner-only).

## Claim a free tenant

1. Open https://itonami.cloud/isco-1212/ (unique org/repo prefilled)
2. **Sign up with Passkey (claim free tenant)** — no Stripe
3. Re-check `/api/fleet/metrics` → `selfRegisteredOwners` / `externalTotal`

Dogfood seeds already present (free tenants — not paid):

- `ops-maturity-seed/hr-practice` (ISIC 8299)
- `ops-placement-seed/agency` (ISIC 7810)
- `ops-jobs-seed/meta-search` (ISIC 6399)
- `ops-talent-seed/practice` (ISIC 6310)

## What free path does **not** clear

- `stripe-configured` / `paid-tenant` on `/api/status`
- `hyp/itonami-smb-pay` (needs ≥1 external **paid** org)

Owner: `/docs/stripe-billing-setup.md` (`sk_test_` is enough to clear `stripe-configured`).