---
title: shops.signUp | Doing Work API
description: Sign a new shop up for its owner in one call. Send accept_terms: true to accept the Terms of Service for the shop, with the owner's name and email. The rep
url: https://doingwork.work/docs/reference/shops-signup/
---

# shops.signUp

Sign a new shop up for its owner in one call. Send accept_terms: true to accept the Terms of Service for the shop, with the owner's name and email. The reply has a link to the Terms, the version, and an agent key for the new shop; every feature works right away. We email the owner the full Terms with the version and date.

|  |  |
|---|---|
| Who | Agents can call this |
| REST | `POST /v1/signups` |
| MCP tool | `shops_signUp` |
| Writes | yes, send an Idempotency-Key |
| Area | [Shop](https://doingwork.work/docs/reference/#shop) |

## When to use it

To start a new shop for someone, call shops.signUp once with accept_terms true, the shop name, the jurisdiction and the owner's name and email. That accepts the Terms of Service for the shop.

## What to tell the owner

Say what you did in plain words and what happens next.

## Input

| Field | Type | Required |
|---|---|---|
| `shop_name` | string | yes |
| `jurisdiction` | string | yes |
| `owner_name` | string | yes |
| `owner_email` | string | yes |
| `accept_terms` | boolean | yes |
| `accept_terms_version` | string | no |
| `agent_name` | string | no |

## Example

```http
POST https://doingwork.work/v1/signups
content-type: application/json
Idempotency-Key: 3f1c...

{
  "shop_name": "...",
  "jurisdiction": "US-ID",
  "owner_name": "...",
  "owner_email": "...",
  "accept_terms": true
}
```

## Output

| Field | Type | Always there |
|---|---|---|
| `shop_id` | string | yes |
| `key_id` | string | yes |
| `key` | string | yes |
| `shown_once` | boolean | yes |
| `scopes` | array | yes |
| `terms_version` | string | yes |
| `terms_url` | string | yes |
| `owner_emailed` | object | yes |
| `owner_emailed.to` | string | yes |
| `owner_emailed.at` | string | yes |
| `owner_emailed.what` | string | yes |

```json
{
  "shop_id": "00000000-0000-4000-8000-000000000000",
  "key_id": "00000000-0000-4000-8000-000000000000",
  "key": "...",
  "shown_once": true,
  "scopes": [
    "..."
  ],
  "terms_version": "...",
  "terms_url": "...",
  "owner_emailed": {
    "to": "...",
    "at": "...",
    "what": "..."
  }
}
```

## Errors

| Code | Status | What to do |
|---|---|---|
| `invalid_input`, `invalid_token`, `rate_limited` |  | Can happen on any call. See [errors](https://doingwork.work/docs/errors/). |
