> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ezforge.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Ready — Businesses

> Retrieve the ReadyConfig for a business

## Get business config

```
GET /api/v1/ready/businesses/:id/config
```

Returns the stored `ReadyConfig` for the specified business. This is the same configuration injected into the business's Ready MCP server at deploy time as `EZFORGE_READY_CONFIG`.

Responses are cached client-side with `Cache-Control: private, max-age=10`. Config changes propagate to clients within 10 seconds.

***

## Authentication

This endpoint accepts two auth modes:

| Mode    | Mechanism                     | Required scope |
| ------- | ----------------------------- | -------------- |
| Session | Cookie or JWT                 | —              |
| API key | `Authorization: Bearer <key>` | `servers:read` |

Session callers are scoped to their own businesses. API-key callers are scoped to businesses owned by the user associated with the key's project. In both cases, if the business does not belong to the authenticated caller, the endpoint returns `404` (not `403`) to avoid leaking existence.

***

## Path parameters

| Parameter | Type   | Description                         |
| --------- | ------ | ----------------------------------- |
| `id`      | string | ULID of the business (max 26 chars) |

***

## Response `200`

```json theme={null}
{
  "data": {
    "version": "2.0",
    "serverId": "01HZ9QXYZ1234567890ABCDE1",
    "templateType": "restaurant",
    "business": {
      "name": "Rosario's Kitchen",
      "description": "Family-owned Italian restaurant serving the Midwest since 1987.",
      "category": "restaurant"
    },
    "contact": {
      "phone": "+1-313-555-0198",
      "email": "hello@rosarioskitchen.com",
      "website": "https://rosarioskitchen.com",
      "address": {
        "line1": "4821 Michigan Ave",
        "city": "Detroit",
        "state": "MI",
        "zip": "48210",
        "country": "US"
      },
      "coordinates": { "lat": 42.3314, "lng": -83.0458 }
    },
    "hours": {
      "monday": { "open": "11:00", "close": "21:00" },
      "tuesday": { "open": "11:00", "close": "21:00" },
      "wednesday": { "open": "11:00", "close": "21:00" },
      "thursday": { "open": "11:00", "close": "21:00" },
      "friday": { "open": "11:00", "close": "22:00" },
      "saturday": { "open": "10:00", "close": "22:00" },
      "sunday": "closed"
    },
    "catalog": {
      "categories": [
        { "id": "01HZ9CAT0000000000000001", "name": "Pasta", "sortOrder": 0 },
        { "id": "01HZ9CAT0000000000000002", "name": "Desserts", "sortOrder": 1 }
      ],
      "items": [
        {
          "id": "01HZ9ITEM000000000000001",
          "name": "Spaghetti Carbonara",
          "description": "Classic Roman pasta with guanciale, egg, and Pecorino Romano.",
          "categoryId": "01HZ9CAT0000000000000001",
          "priceCents": 1895,
          "priceType": "fixed",
          "isAvailable": true,
          "metadata": {}
        }
      ]
    },
    "featureFlags": {
      "appointmentBooking": false,
      "onlineOrdering": true,
      "quoteRequests": false,
      "faq": true,
      "menuBrowsing": true
    }
  }
}
```

### `ReadyConfig` schema

| Field          | Type    | Required | Description                                                                                                          |
| -------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------- |
| `version`      | `"2.0"` | ✓        | Schema version                                                                                                       |
| `serverId`     | string  | ✓        | Platform server ID for traceability                                                                                  |
| `templateType` | string  | ✓        | Industry vertical: `restaurant`, `salon`, `home_services`, `retail`, `professional_services`, `custom`               |
| `business`     | object  | ✓        | Business identity (name, description, category)                                                                      |
| `contact`      | object  | ✓        | Phone, email, website, address, coordinates                                                                          |
| `hours`        | object  | ✓        | Operating hours keyed by day-of-week (e.g. `"monday"`) or date. Each value is either `"closed"` or `{ open, close }` |
| `catalog`      | object  | —        | Catalog categories and items; may be absent before the first catalog sync                                            |
| `featureFlags` | object  | ✓        | Feature toggles: `appointmentBooking`, `onlineOrdering`, `quoteRequests`, `faq`, `menuBrowsing`                      |
| `integrations` | object  | —        | External integration credentials (calendar, CRM, webhook). Values are sensitive — never log                          |
| `analytics`    | object  | —        | Analytics configuration (`enabled`, optional `reportingEndpoint`)                                                    |

***

## Error codes

| HTTP  | Code                   | Description                                                                                                                                        |
| ----- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `400` | `bad_request`          | `id` is missing or exceeds 26 characters                                                                                                           |
| `401` | `unauthorized`         | Request is not authenticated (no valid session or API key)                                                                                         |
| `403` | `forbidden`            | API-key caller is missing the `servers:read` scope                                                                                                 |
| `404` | `not_found`            | Business does not exist or does not belong to the authenticated caller                                                                             |
| `404` | `config_not_generated` | Business exists but no template config has been generated yet. Trigger config generation from the Ready setup wizard or via the platform dashboard |
