# Vivino MCP Server - AI Wine Recommendations (`mrbridge/vivino-mcp-server`) Actor

Connect AI assistants to Vivino wine data via MCP. Search wines, explore by rating, price and style, fetch details and recommend bottles for meals, budgets and occasions. Works with Claude Desktop, ChatGPT and any MCP-compatible client.

- **URL**: https://apify.com/mrbridge/vivino-mcp-server.md
- **Developed by:** [MrBridge](https://apify.com/mrbridge) (community)
- **Categories:** AI, MCP servers, E-commerce
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.00 / 1,000 wine recommendations

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Vivino MCP Server - AI Wine Recommendations

Vivino MCP Server connects AI assistants — Claude Desktop, ChatGPT, and any MCP-compatible agent — to live Vivino wine data via the Model Context Protocol. Let an LLM search wines, compare ratings and prices, inspect regions and styles, and recommend bottles for a meal, budget, occasion or cellar shortlist.

Ask Claude: *"Find a white wine for shellfish under $50, using Vivino ratings and prices, and explain why you picked it."* The server calls Vivino data tools and returns ranked recommendations with rating, price, region, grape/style, food-pairing signals and caveats.

**No Vivino account, no browser automation, no coding.** Connect your AI assistant and start asking wine questions in plain language.

### What is Vivino MCP Server?

Vivino MCP Server runs in Apify Standby mode as a persistent MCP server. Conversational AI assistants call it over Streamable HTTP at `/mcp` to retrieve and reason over Vivino wine data.

It is designed as the AI-facing companion to MrBridge's Vivino scrapers:

- [Vivino Wine Scraper](https://apify.com/mrbridge/vivino-powerful-scraper?fpr=mrbridge) discovers wines by region, producer, grape, type, price, rating and vintage.
- [Vivino Wine Data Scraper](https://apify.com/mrbridge/vivino-wine-data-scraper?fpr=mrbridge) enriches known wines from names or Vivino URLs with ratings, prices, taste profiles, reviews and details.

This MCP server focuses on live LLM workflows: quick lookup, filtered exploration, wine details and recommendation reasoning.

- **Recommendation answers grounded in Vivino data** — ratings, ratings count, price, origin, style, grapes, image, URL and food-pairing signals.
- **Meal and budget aware** — ask for Champagne alternatives, Chablis for shellfish, steak reds under $40, or highly rated Burgundy whites.
- **Search by text or structured filters** — query by wine name, appellation, producer, style or use filters for rating, price, country, grape, type and food IDs.
- **Currency-aware pricing** — choose one of five supported currencies for Vivino prices.
- **LLM-ready normalized output** — compact JSON designed for Claude, ChatGPT, agents and RAG workflows.
- **Apify-hosted MCP endpoint** — no local server to run; connect through Apify token auth.

### Quick Start - Connect in 2 minutes

Your connection URL is the same for every MCP client — replace `YOUR_APIFY_TOKEN` with your [Apify API token](https://console.apify.com/account/integrations):

````

https://mrbridge--vivino-mcp-server.apify.actor/mcp?token=YOUR\_APIFY\_TOKEN

```

#### 1. Connect your AI assistant

- **Claude Desktop** — **Settings -> Connectors -> Add custom connector**, paste the URL above, save.
- **ChatGPT** (Plus / Pro / Team / Enterprise) — **Settings -> Connectors**, enable developer mode, **Add custom connector**, paste the URL, save.
- **Apify Universal MCP** — already using [`mcp.apify.com`](https://mcp.apify.com?fpr=mrbridge)? Add this server as a tool: `https://mcp.apify.com?tools=mrbridge/vivino-mcp-server`.

#### 2. Start asking questions

Try:

> "Recommend 3 white wines for oysters under $50. Prefer France, explain rating, price and food-pairing evidence."

The endpoint speaks Streamable HTTP at `/mcp`.

### Real Example: AI wine recommendation from Vivino data

A user asks:

> "Recommend a white wine for shellfish under 50 USD. I like Chablis."

The assistant calls `recommend_wines` with `searchQuery: "Chablis"`, `foods: ["shellfish"]`, `preferredStyles: ["white"]`, and `maxBudget: 50`.

A typical result:

| Wine | Rating | Price | Why it fits |
|------|-------:|------:|-------------|
| Daniel-Etienne Defaix Chablis Premier Cru 'Vaillon' 2015 | 4.2 | $49.44 | Burgundy Chablis, Chardonnay, shellfish pairing, under budget |
| La Chablisienne Chablis 1er Cru 'L'Homme Mort' 2022 | 4.2 | $48.43 | White Burgundy style, shellfish pairing, strong rating count |

The assistant can then explain the tradeoff: both fit the budget and pairing; choose Defaix for a mature 2015 Premier Cru profile, or La Chablisienne for a younger Chablis with similar score and slightly lower price.

> Every recommendation is derived from the wine records returned by Vivino-facing tools, not from a generic wine-pairing list.

### What tools are available? (4 tools)

#### Wine search and exploration

| Tool | What it does |
|------|-------------|
| `search_wines` | Search Vivino by free text: wine, producer, appellation, grape, region or style. Uses Vivino exploration search and returns normalized wine records. |
| `explore_wines` | Explore wines with structured filters: country codes, grape IDs, wine type IDs, food IDs, rating, price, sort and pagination. |

#### Details and recommendations

| Tool | What it does |
|------|-------------|
| `get_wine_details` | Fetch richer details for a Vivino wine or vintage by `wineId`, `vintageId` or Vivino URL. |
| `recommend_wines` | Rank wines for an LLM user request using Vivino data, budget, food, style and country preferences. Returns fit score, reasons and caveats. |

### What data can AI use?

The MCP normalizes the same families of data exposed by the MrBridge Vivino scrapers:

| Data | Used by the MCP |
|------|-----------------|
| Wine identity | Wine name, winery, vintage/year, Vivino IDs and URL |
| Ratings | Average rating, ratings count and `ratingScope` (`vintage`, `wine`, `unknown`) when Vivino exposes the distinction |
| Market data | Price, currency and market availability when Vivino returns a current listing |
| Origin | Region, country, appellation/style signals |
| Wine style | Red, white, sparkling, rose, dessert, fortified; style names such as Burgundy Chablis |
| Grapes | Grape varieties when present, with `grapesReliability`; appellation/style grapes should be treated as directional, not producer-specific truth |
| Food pairing | Vivino style food pairings such as shellfish, pork, rich fish, poultry, beef, lamb, cheese |
| Media | Bottle or label image URL when available |
| Taste structure | Vivino `body`, `acidity`, `tannin`, `sweetness`, `intensity`, `fizziness`, style descriptions and `taste.reliability` when present |
| Search match | `searchMatch` shows whether a free-text query matched exactly, partially or weakly, including missing producer/appellation terms |
| Caveats | Missing price, unavailable rating, wine-level rating aggregation, generic grapes, unavailable taste structure, above-budget result, inferred food fit |

For large batch extraction, scheduled market monitoring, reviews, full taste profiles or 250+ named wine enrichment, use the dedicated scrapers. For interactive AI recommendations, use this MCP server.

### What can AI do with Vivino data?

- **Meal pairing** — "Find a red for lamb under EUR 35 with at least 4.0 Vivino rating."
- **Restaurant shortlist** — "Build a 10-bottle by-the-glass shortlist: 3 sparkling, 3 whites, 3 reds, 1 dessert."
- **Retail discovery** — "Show highly rated Italian reds under $30 with enough ratings to trust the score."
- **Cellar planning** — "Compare Chablis, Sancerre and white Burgundy options for a seafood dinner."
- **Gift selection** — "Recommend a Champagne-style sparkling wine under $60 for a birthday."
- **Agent workflows** — pair with the full Vivino scrapers to enrich a catalog, then use this MCP for conversational selection.

### Example prompts

- "Search Vivino for Opus One and summarize the top 3 results with ratings and prices."
- "Explore French white wines rated 4.1+ under 40 USD and recommend the safest pick."
- "Recommend 5 sparkling wines for aperitif under EUR 30. Mention caveats if price is missing."
- "I have roast chicken and soft cheese. Find wines that match both and explain why."
- "Get details for this Vivino URL and turn it into a product-card summary."

### Configuration

The server works in English by default. Optional Actor input fields tune currency, response size and timeout:

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `currencyCode` | select | `USD` | Currency used for price data: USD, EUR, CNY, JPY or KRW. The Vivino market is derived automatically from the selected currency. |
| `maxToolResults` | integer | `10` | Maximum results any MCP tool can return. |
| `requestTimeoutSecs` | integer | `20` | Timeout for upstream Vivino HTTP requests. |

### Standby mode and performance

The server runs in Apify Standby mode as a hosted HTTP MCP server.

- **Warm requests:** fast enough for conversational use once the Actor is running.
- **Cold start:** the first request after inactivity may take longer while Apify starts the container.
- **Upstream dependency:** Vivino can rate-limit or change internal endpoints. The server returns clear tool errors when upstream data is unavailable.

### How much does it cost?

This Actor is designed for Apify pay-per-event monetization. Check the [Pricing tab](https://apify.com/mrbridge/vivino-mcp-server/pricing?fpr=mrbridge) for the live configuration on your Apify plan.

Recommended pay-per-event setup in Apify Console:

| Event name | What it bills |
|------------|---------------|
| `tool-read` | Read operations such as `search_wines` and `explore_wines` |
| `tool-action` | Higher-value operations such as `get_wine_details` and `recommend_wines` |
| `apify-actor-start` | Actor startup at Apify's default low price |

Do not enable `apify-default-dataset-item`; tool calls already record dataset rows for observability, and charging both the tool event and the dataset item would double bill the same user action.

For high-volume extraction priced per delivered wine row, use:

- [Vivino Wine Scraper](https://apify.com/mrbridge/vivino-powerful-scraper/pricing?fpr=mrbridge) for regional discovery.
- [Vivino Wine Data Scraper](https://apify.com/mrbridge/vivino-wine-data-scraper/pricing?fpr=mrbridge) for name/URL enrichment.

### When should I use this MCP vs the scrapers?

| Need | Best tool |
|------|-----------|
| Ask Claude or ChatGPT for wine recommendations in conversation | **Vivino MCP Server** |
| Search a few wines and reason over fit, budget and food pairing | **Vivino MCP Server** |
| Extract hundreds or thousands of wines by region, grape, producer or type | [Vivino Wine Scraper](https://apify.com/mrbridge/vivino-powerful-scraper?fpr=mrbridge) |
| Enrich a known list of wine names or Vivino URLs with reviews/taste profiles | [Vivino Wine Data Scraper](https://apify.com/mrbridge/vivino-wine-data-scraper?fpr=mrbridge) |
| Build scheduled market monitoring datasets | The scrapers, then optionally query summaries through an LLM |

### Apify Universal MCP and other clients

Already using the [Apify Universal MCP](https://mcp.apify.com?fpr=mrbridge)? Include this server as a tool:

```

https://mcp.apify.com?tools=mrbridge/vivino-mcp-server

````

Any MCP-compatible client can call the same Streamable HTTP endpoint at `/mcp` with your Apify token in the `Authorization: Bearer` header or `?token=` query parameter.

### Integrate with Zapier, Make and n8n

Vivino MCP Server runs on Apify, so it can be invoked from automation platforms via Actor ID `sviYkC8LecqIBeb9N` using the standard Apify integrations for [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/en/integrations/apify) and [n8n](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.apify/).

For real-time AI conversations, use the MCP connection URL. For batch jobs, call the Actor through the Apify API or use the dedicated Vivino scrapers.

### FAQ

#### Does Vivino have an official API?
No public API is available for these use cases. This server uses publicly reachable Vivino endpoints and normalizes their responses for LLM use. Upstream endpoint changes can require maintenance.

#### Do I need a Vivino account?
No. The MCP server does not require a Vivino login or browser session.

#### Does this return reviews and full taste profiles?
The MCP focuses on compact live recommendation data. For full reviews and detailed taste profiles, use [Vivino Wine Data Scraper](https://apify.com/mrbridge/vivino-wine-data-scraper?fpr=mrbridge). For taste profiles across regional discovery runs, use [Vivino Wine Scraper](https://apify.com/mrbridge/vivino-powerful-scraper?fpr=mrbridge).

#### Why is price sometimes missing?
Vivino price availability depends on country, currency, merchant listings and the wine itself. Missing price is returned as a caveat; the assistant should not claim availability unless a current price or URL is present. Grapes may be generic appellation/style metadata, and ratings can be aggregated at wine level when the same counter repeats across multiple fetched vintages; inspect `grapesReliability`, `ratingScope`, `taste.reliability`, `searchMatch` and `dataWarnings`. If `searchMatch.level` is `partial` or `weak`, say which requested terms were not matched before using the result.

#### Can I use it with ChatGPT?
Yes. Use ChatGPT connectors with developer mode and add the MCP URL from the Quick Start section. Claude Desktop and other MCP clients work the same way.

#### Is this affiliated with Vivino?
No. This Actor is built by MrBridge and is not affiliated with or endorsed by Vivino.

### Other wine-data Actors by MrBridge

| Actor | Best for |
|------|----------|
| [Vivino Wine Scraper](https://apify.com/mrbridge/vivino-powerful-scraper?fpr=mrbridge) | Discover wines by region, grape, producer, rating, price and vintage |
| [Vivino Wine Data Scraper](https://apify.com/mrbridge/vivino-wine-data-scraper?fpr=mrbridge) | Enrich known wine names or Vivino URLs with ratings, prices, reviews and taste profiles |
| [Millesima Wine Scraper](https://apify.com/mrbridge/millesima-wine-scraper?fpr=mrbridge) | Wine prices and critic ratings from major reviewers |
| [Wine-Searcher Scraper from List](https://apify.com/mrbridge/wine-searcher-scraper-from-list?fpr=mrbridge) | Popularity, critic scores and prices from known wine lists |

### Built by MrBridge

This MCP server is built by **MrBridge**. Explore more wine data tools and MCP servers at [mr-bridge.com](https://mr-bridge.com) and the [MrBridge MCP server catalog](https://mr-bridge.com/mcp-servers).

### Resources

- [Apify MCP documentation](https://docs.apify.com/platform/integrations/mcp?fpr=mrbridge)
- [Model Context Protocol](https://modelcontextprotocol.io/)
- [Vivino Wine Scraper](https://apify.com/mrbridge/vivino-powerful-scraper?fpr=mrbridge)
- [Vivino Wine Data Scraper](https://apify.com/mrbridge/vivino-wine-data-scraper?fpr=mrbridge)

### Legal and responsible use

This Actor retrieves publicly available wine information from Vivino-facing endpoints. You are responsible for ensuring your use complies with Vivino's Terms of Service and applicable law. Do not use the output to misrepresent wine availability, pricing or endorsements. Vivino MCP Server is not endorsed by and is not affiliated with Vivino.

# Actor input Schema

## `currencyCode` (type: `string`):

Currency used for Vivino price data. The market country is selected automatically from the currency.
## `maxToolResults` (type: `integer`):

Upper bound for wine results returned by MCP tools.
## `requestTimeoutSecs` (type: `integer`):

Timeout for upstream Vivino HTTP requests.

## Actor input object example

```json
{
  "currencyCode": "USD",
  "maxToolResults": 10,
  "requestTimeoutSecs": 20
}
````

# Actor output Schema

## `runUrl` (type: `string`):

Link to the Actor run details page

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("mrbridge/vivino-mcp-server").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("mrbridge/vivino-mcp-server").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call mrbridge/vivino-mcp-server --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=mrbridge/vivino-mcp-server",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Vivino MCP Server - AI Wine Recommendations",
        "description": "Connect AI assistants to Vivino wine data via MCP. Search wines, explore by rating, price and style, fetch details and recommend bottles for meals, budgets and occasions. Works with Claude Desktop, ChatGPT and any MCP-compatible client.",
        "version": "0.1",
        "x-build-id": "qEwr9ZDUiuEa9YfuT"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/mrbridge~vivino-mcp-server/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-mrbridge-vivino-mcp-server",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/mrbridge~vivino-mcp-server/runs": {
            "post": {
                "operationId": "runs-sync-mrbridge-vivino-mcp-server",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/mrbridge~vivino-mcp-server/run-sync": {
            "post": {
                "operationId": "run-sync-mrbridge-vivino-mcp-server",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "currencyCode": {
                        "title": "Currency",
                        "enum": [
                            "USD",
                            "EUR",
                            "CNY",
                            "JPY",
                            "KRW"
                        ],
                        "type": "string",
                        "description": "Currency used for Vivino price data. The market country is selected automatically from the currency.",
                        "default": "USD"
                    },
                    "maxToolResults": {
                        "title": "Maximum tool results",
                        "minimum": 1,
                        "maximum": 25,
                        "type": "integer",
                        "description": "Upper bound for wine results returned by MCP tools.",
                        "default": 10
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout",
                        "minimum": 5,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Timeout for upstream Vivino HTTP requests.",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
