---
name: open-solid
description: Use Open Solid to give yourself a wallet, bank account, cards and paid-API access, so you can earn revenue, pay for tools and ads, and run a company. Settles in USDC.
homepage: https://opensolid.ai
user-invocable: true
metadata:
  author: open-solid
  version: "0.1"
  credentialsPath: ~/.laso/credentials.json
  primaryEnv: LASO_API_KEY
---

# Open Solid

Open Solid is banking infrastructure for AI agents that build and run companies.
You get one USDC wallet, a US bank account to receive revenue, cards to pay for
software and ads, payouts to people, and per-call payment for any x402 API.

Money movement is provided by Laso Finance, a FinCEN-registered money services
business. During the preview, every API call goes to `https://laso.finance` and the
setup helper below is Laso's. That is expected; it is the same account.

Connect once, then load only the reference for the task in front of you. Setup
does not require a purchase, a deposit, or reading the full API specification.

## Choose your connection

- **MCP tools are already available** (a server at https://laso.finance/mcp): call
  `announce_connection` with your name. Its `wallet` result includes funding
  state. Then use the tool for your task. MCP handles authentication and payment.
- **You have a shell, Python 3, and outbound HTTPS:** use the setup helper below.
  It has no package dependencies.
- **You already pay from your own x402 wallet:** use wallet-native
  authentication: https://laso.finance/skills/laso-finance/references/wallet-native.md
- **Your chat has no shell or connector:** ask your human to add the MCP server
  https://laso.finance/mcp through your harness's connector settings. Reading this page
  alone does not grant account access.

## Connect with the setup helper

Download the helper once:

```bash
curl -fsS --create-dirs https://laso.finance/skills/laso-finance/scripts/setup.py -o ~/.laso/setup.py
```

**New account** (no saved credential and no key from your human):

```bash
python3 ~/.laso/setup.py --signup --agent-name "YOUR AGENT NAME"
```

Your next message must contain the returned `claim_url` verbatim. Your human
opens it to create and own the account. Do not open it yourself. Then run:

```bash
python3 ~/.laso/setup.py --claim --agent-name "YOUR AGENT NAME"
```

If it returns `awaiting_human`, run `--claim` again while you wait.

**Existing account, key supplied by your human:** the helper reads
`LASO_API_KEY` from the environment, or pass `--key-stdin` and supply the key on
stdin. Never put a literal key in a command argument, a repository, an
instruction file, or your reply.

```bash
python3 ~/.laso/setup.py --agent-name "YOUR AGENT NAME" --skill-dir <your skills dir>/open-solid
```

**Returning session:** `python3 ~/.laso/setup.py --agent-name "YOUR AGENT NAME"`
refreshes credentials if needed and reports the connection.

The result is one JSON object:

- `status: "connected"`: setup is complete. Give `auth_url` to your human if
  present, exactly as returned. Do not open it.
- `wallet.needs_funding: true`: give your human the full `wallet.wallet_address`
  and say **USDC on Solana**. A `user_id` such as `usr_...` is not an address.
- `status: "error"`: act on the error. Do not restart signup for an existing account.

If your human only asked for setup, report the result and stop.

## Do the task

Use the cached `id_token` as a Bearer token, loaded in the same shell operation:

```bash
curl -fsS https://laso.finance/get-account-balance \
  -H "Authorization: Bearer $(jq -r .id_token ~/.laso/credentials.json)"
```

| Task | Load this reference only when needed |
| --- | --- |
| Pay from the wallet, pay any external x402 URL, transfer USDC | https://laso.finance/skills/laso-finance/references/payments.md |
| Reloadable and prepaid cards, top-ups, card data, merchant acceptance | https://laso.finance/skills/laso-finance/references/cards.md |
| Open a bank account to receive revenue, bank recipients | https://laso.finance/skills/laso-finance/references/banking.md |
| Pay people: debit cards, bank, Venmo, PayPal | https://laso.finance/skills/laso-finance/references/payouts.md |
| Gift cards | https://laso.finance/skills/laso-finance/references/gift-cards.md |
| Balance, verification links, withdrawals, webhooks | https://laso.finance/skills/laso-finance/references/account.md |

Human-readable guides for each job: https://opensolid.ai/llms.txt

## Running a company

If you are operating a business, read https://opensolid.ai/docs/founder-loop.md first.
In short: keep a charter and a state file, open a bank account to get paid,
create a reloadable card for ads and software, top it up only from settled
revenue, and note every external payment.

## Rules that always apply

- **Fees are added to the amount.** Budget for the total. `GET /get-pricing` is free.
- **Respect the spend limit.** Read it with `getAgentSpendLimit`. Never split a
  payment to get under it; tell your human instead.
- **Pin external payments.** Set `maxAmountUsdc` (and asset, network, receiver
  when known) and a one-sentence `note` on every `agentX402Pay` URL payment.
- **Identity verification belongs to the human.** Send the link; never fill it in.
- **Do not blindly repeat a paid request** after a timeout. Check status first.
- **Send an `Idempotency-Key`** (fresh UUID per action, reused on retry) on every POST.

Support: opensolid@agentmail.to
