# Call your first Verb

URL: /code/mcp/guides/call-your-first-verb · Id: `page:code/mcp/guides/call-your-first-verb`

> Place one Order through the API, SDK, CLI, or MCP: one name, one JSON input, one test key, and the same Action on every Interface.

Every [Verb](/business/nouns/verb) has one name, `Noun.verb`, and one JSON input on every [Interface](/business/nouns/interface). You preview and run `Order.place` against a test [Startup](/business/nouns/startup), then read the [Action](/business/nouns/action) it records.

## Prerequisites
- `node` 20 or later and a terminal.
- A Startup in the test environment, such as the one the [quickstart](/code/quickstart) creates.

The examples follow `quietbooks.app`, which sells a month of bookkeeping catch-up for $149 as the [Offer](/business/nouns/offer) `offer_1`.

## Steps
1. To sign in and store a test key, run `login`, then check who you are:

   ```bash
   npx startup-builder login
   npx startup-builder whoami
   ```

   ```text
   Worker       human_1 (you)
   Namespace    quietbooks.app
   Environment  test
   ```

2. To see the input `Order.place` takes, print its schema:

   ```bash
   npx startup-builder schema Order.place
   ```

   ```json
   {
     "offer": { "type": "Offer", "required": true },
     "quantity": { "type": "integer", "default": 1 }
   }
   ```

3. To preview the call, run it in the `try` [Mode](/business/nouns/mode). It checks your [Permissions](/business/nouns/permission) and the input, and stores nothing.

**Ask**

   ```text
   Show me what ordering this would do, without placing it.
   ```

**API**

   ```bash
   curl "https://api.sb/quietbooks.app/orders/place?mode=try" \
     -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{"offer":"offer_1"}'
   ```

**SDK**

   ```ts
   import { $ } from 'startup-builder'

   const preview = await $.try.Order.place({ offer: 'offer_1' })
   ```

**CLI**

   ```bash
   npx startup-builder do Order.place --json '{"offer":"offer_1"}' --try
   ```

**MCP**

   ```json
   {
     "name": "do",
     "arguments": {
       "code": "return await $.Order.place({ offer: 'offer_1' })",
       "mode": "try"
     }
   }
   ```

4. To place the [Order](/business/nouns/order), send the same call without the preview:

**Ask**

   ```text
   Place the order.
   ```

**API**

   ```bash
   curl -X POST https://api.sb/quietbooks.app/orders/place \
     -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{"offer":"offer_1"}'
   ```

**SDK**

   ```ts
   const order = await $.Order.place({ offer: 'offer_1' })
   ```

**CLI**

   ```bash
   npx startup-builder do Order.place --json '{"offer":"offer_1"}'
   ```

**MCP**

   ```json
   {
     "name": "do",
     "arguments": { "code": "return await $.Order.place({ offer: 'offer_1' })" }
   }
   ```


   ```json
   {
     "api": "https://api.sb/quietbooks.app",
     "action": {
       "$id": "https://api.sb/quietbooks.app/actions/action_1",
       "operation": "Order.place",
       "status": "done"
     },
     "order": {
       "$id": "https://api.sb/quietbooks.app/orders/order_1",
       "$type": "Order",
       "total": { "amount": 149, "currency": "USD" },
       "status": "placed"
     },
     "actions": {
       "pay": "https://api.sb/quietbooks.app/orders/order_1/pay"
     }
   }
   ```

5. To read what happened, fetch the Action:

   ```bash
   npx startup-builder show /actions/action_1
   ```

   It names who ran the Verb (`by`), whom it served (`for`), its input, its status, and the [Event](/business/nouns/event) it emitted, [`Order.placed`](/business/events/Order.placed).

## Result
`quietbooks.app` holds one Order, `order_1`, in the test environment, and one Action, `action_1`, with status `done`. The response lists `pay` under `actions`, the Verb you may run next.

Each Interface is a view of the same operation. An `sk_live_` key places a real Order, and nothing else in the call changes.

## Next steps
- [The envelope](/code/api/guides/envelope): every field of the response.
- [Modes](/code/api/guides/modes): `try`, `send`, and `do`.
- [place](/business/nouns/order/place): the Verb's inputs, outputs, and effects.
- [Connect an agent](/code/mcp/guides/connect-an-agent): the same call, made by your agent.