# DICE MCP tools

> Every DICE MCP tool on the Cotlet server: tool names, input schemas, a tools/call example and an example result for each tool.

Source: https://cotlet.dev/docs/mcp/dice

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

15 tools for DICE on the Cotlet MCP server. Your agent picks them from tools/list.

- MCP server: `https://cotlet.dev/mcp/v1`
- Connects with: Your own DICE partner (MIO) account, with email and password
- Integration page: https://cotlet.dev/integrations/dice-api-mcp-server

## Endpoints

| Endpoint | Access | Description |
|---|---|---|
| `dice_list_events` | read | Your events in MIO with state, dates, venue and total allocation. |
| `dice_get_event` | read | Full event: description, artists, venue, announce and on-sale dates, ticket types and price tiers. |
| `dice_get_sales_summary` | read | Tickets sold and face value, split by ticket type and sales channel. |
| `dice_list_orders` | read | Orders with time, quantity, sales channel, totals and promo code used. |
| `dice_list_ticket_holders` | read | Who holds a ticket now: name, ticket type and whether it was claimed. |
| `dice_list_returns` | read | Tickets returned by fans, with date, reason and the original order. |
| `dice_list_transfers` | read | Tickets passed from one fan to another, with date and orders. |
| `dice_create_event` | write | New event as a draft in MIO. Fans see nothing until you submit it and DICE approves it. |
| `dice_add_ticket_type` | write | Add a ticket type to an event, with price, allocation and optional door price. |
| `dice_add_price_tier` | write | Add a release to a ticket type that moves on after an allocation sells out or at a set time. |
| `dice_update_ticket_type` | write | Change the name, price, allocation or door price of a ticket type, or archive it to stop sales. |
| `dice_submit_event` | write | Send a draft to DICE for review. Once approved it is announced and goes on sale on its dates. |
| `dice_update_event` | write | Change the date, times, venue, line-up or description of an event fans may already hold tickets for. |
| `dice_message_attendees` | write | Send an operational message to ticket holders with MIO Connect, e.g. door times or entry info. |
| `dice_cancel_event` | write | Cancel an event in MIO. Fans are told and refunds follow your DICE agreement. |

## List events

MCP tool: `dice_list_events`

Access: read.

Lists the events of your MIO account, soonest first. Filter by state or start date to find tonight's show or everything still in draft. Use the event_id from each item in the other tools. Pages hold up to 100 events; pass next_cursor back as cursor.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `state` | enum | no | draft, submitted, review, approved, declined, cancelled or archived. Default: all. |
| `starts_after` | date | no | Only events starting on or after this date. |
| `starts_before` | date | no | Only events starting before this date. |
| `limit` | integer | no | 1 to 100. Default: 25. |
| `cursor` | string | no | Next page cursor from the previous call. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_list_events",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "events": [
      {
        "event_id": "ev_48213",
        "name": "Club Night",
        "state": "approved",
        "start": "2026-11-14T22:00:00+00:00",
        "venue": "The Warehouse",
        "allocation": 350
      },
      {
        "event_id": "ev_48377",
        "name": "Rooftop Session",
        "state": "draft",
        "start": "2026-12-05T19:00:00+00:00",
        "venue": "Skyline Terrace",
        "allocation": 200
      }
    ],
    "next_cursor": null
  },
  "isError": false
}
```

## Get event

MCP tool: `dice_get_event`

Access: read.

Returns one event with its description, line-up, venue and dates, and every ticket type with its price tiers. Read it before changing prices, so your agent sees which tier is current.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_get_event",
    "arguments": {
      "event_id": "event_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "event_id": "ev_48213",
    "name": "Club Night",
    "state": "approved",
    "currency": "USD",
    "venue": "The Warehouse",
    "start": "2026-11-14T22:00:00+00:00",
    "end": "2026-11-15T04:00:00+00:00",
    "artists": [
      "DJ Orla",
      "Kest"
    ],
    "announce_at": "2026-10-01T10:00:00+00:00",
    "on_sale_at": "2026-10-02T10:00:00+00:00",
    "ticket_types": [
      {
        "ticket_type_id": "8841273",
        "name": "Early bird",
        "price_tier_type": "allocation",
        "tiers": [
          {
            "id": "510922",
            "name": "Early bird",
            "price": 1500,
            "allocation": 100
          }
        ]
      }
    ]
  },
  "isError": false
}
```

## Get sales summary

MCP tool: `dice_get_sales_summary`

Access: read.

Adds up the orders of one event: tickets sold and face value per ticket type and per sales channel (internet, door, free, external). Face value is in cents. Both splits add up to the totals. Set since to count only newer orders.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `since` | datetime | no | Only orders placed after this time. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_get_sales_summary",
    "arguments": {
      "event_id": "ev_48213",
      "since": "2026-10-05T00:00:00+01:00"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "event_id": "ev_48213",
    "currency": "USD",
    "tickets_sold": 182,
    "face_value": 314000,
    "by_ticket_type": [
      {
        "ticket_type_id": "8841273",
        "name": "Early bird",
        "tickets": 100,
        "face_value": 150000
      },
      {
        "ticket_type_id": "8841290",
        "name": "General admission",
        "tickets": 82,
        "face_value": 164000
      }
    ],
    "by_channel": [
      {
        "channel": "internet",
        "tickets": 160,
        "face_value": 276000
      },
      {
        "channel": "door",
        "tickets": 22,
        "face_value": 38000
      }
    ]
  },
  "isError": false
}
```

## List orders

MCP tool: `dice_list_orders`

Access: read.

Lists the orders of one event, newest first, with time, number of tickets, sales channel and total in cents. Use it when the summary is not enough. Pages hold up to 100 orders; pass next_cursor back as cursor.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `sales_channel` | enum | no | internet, door, free or external. Default: all. |
| `since` | datetime | no | Only orders placed after this time. |
| `limit` | integer | no | 1 to 100. Default: 50. |
| `cursor` | string | no | Next page cursor from the previous call. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_list_orders",
    "arguments": {
      "event_id": "event_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "orders": [
      {
        "order_id": "or_90412",
        "placed_at": "2026-10-09T18:22:00+00:00",
        "channel": "internet",
        "tickets": 2,
        "total": 3600,
        "promo_code": null
      },
      {
        "order_id": "or_90398",
        "placed_at": "2026-10-09T16:05:00+00:00",
        "channel": "internet",
        "tickets": 1,
        "total": 1800,
        "promo_code": "FRIENDS"
      }
    ],
    "next_cursor": "eyJvZmZzZXQiOjUwfQ"
  },
  "isError": false
}
```

## List ticket holders

MCP tool: `dice_list_ticket_holders`

Access: read.

Lists who holds a ticket for one event right now, so returned and transferred tickets are reflected. Filter by ticket type for a door list per type. Set format to csv to get a file your door team can open. Pages hold up to 100 rows; pass next_cursor back as cursor.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `ticket_type_id` | string | no | Only one ticket type. |
| `format` | enum | no | json or csv. Default: json. |
| `cursor` | string | no | Next page cursor from the previous call. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_list_ticket_holders",
    "arguments": {
      "event_id": "event_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "ticket_holders": [
      {
        "ticket_id": "tk_1182034",
        "name": "Sam Ortiz",
        "ticket_type": "Early bird",
        "claimed": true
      },
      {
        "ticket_id": "tk_1182035",
        "name": "Jo Marsh",
        "ticket_type": "General admission",
        "claimed": false
      }
    ],
    "next_cursor": null
  },
  "isError": false
}
```

## List returns

MCP tool: `dice_list_returns`

Access: read.

Lists tickets that fans returned, newest first, with the date, the reason and the order they came from. Leave event_id out to cover all your events. Set since to see only the latest returns.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | no | Only one event. Default: all events. |
| `since` | datetime | no | Only returns after this time. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_list_returns",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "returns": [
      {
        "return_id": "rt_3301",
        "event_id": "ev_48213",
        "returned_at": "2026-10-08T12:40:00+00:00",
        "reason": "Can't make it",
        "order_id": "or_90102"
      }
    ]
  },
  "isError": false
}
```

## List transfers

MCP tool: `dice_list_transfers`

Access: read.

Lists tickets that fans passed to another fan, newest first, with the date and the orders involved. Leave event_id out to cover all your events. Set since to see only the latest transfers.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | no | Only one event. Default: all events. |
| `since` | datetime | no | Only transfers after this time. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_list_transfers",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "transfers": [
      {
        "transfer_id": "tf_7710",
        "event_id": "ev_48213",
        "transferred_at": "2026-10-09T09:15:00+00:00",
        "from_order_id": "or_90102",
        "to_order_id": "or_90415"
      }
    ]
  },
  "isError": false
}
```

## Create event

MCP tool: `dice_create_event`

Access: write.

Saves a new event as a draft in MIO. Fans see nothing until you submit it with submit_event and DICE approves it. Venue is a name or an ID from one of your past events. Add ticket types with add_ticket_type. create_event reaches no one, so it runs without asking first.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `name` | string | yes | Event name. |
| `venue` | string | yes | Venue name or ID from one of your past events. |
| `start` | datetime | yes | ISO 8601 with time zone. |
| `end` | datetime | yes | ISO 8601 with time zone. |
| `description` | string | no | Event description shown to fans. |
| `artists` | string[] | no | Line-up, headliner first. |
| `currency` | string | no | ISO code, e.g. USD, GBP, EUR. Default: your account currency. |
| `announce_at` | datetime | no | When the event appears on DICE. |
| `on_sale_at` | datetime | no | When tickets go on sale. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_create_event",
    "arguments": {
      "name": "Club Night",
      "venue": "The Warehouse",
      "start": "2026-11-14T22:00:00+00:00",
      "end": "2026-11-15T04:00:00+00:00",
      "artists": [
        "DJ Orla",
        "Kest"
      ],
      "currency": "USD",
      "announce_at": "2026-10-15T10:00:00+00:00",
      "on_sale_at": "2026-10-16T10:00:00+00:00"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "event_id": "ev_48501",
    "name": "Club Night",
    "state": "draft",
    "venue": "The Warehouse",
    "start": "2026-11-14T22:00:00+00:00",
    "end": "2026-11-15T04:00:00+00:00",
    "artists": [
      "DJ Orla",
      "Kest"
    ],
    "currency": "USD"
  },
  "isError": false
}
```

## Add ticket type

MCP tool: `dice_add_ticket_type`

Access: write. Confirm: waits for the user's OK before it runs.

Adds a ticket type to an event with its face value in cents, allocation and an optional door price. A price of 0 makes a free ticket. On an event fans can already buy from, it changes what they can buy. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `name` | string | yes | e.g. Early bird, General admission. |
| `price` | integer | yes | Face value in cents. 0 for a free ticket. |
| `allocation` | integer | yes | Number of tickets. |
| `description` | string | no | Shown to fans under the name. |
| `door_sales_price` | integer | no | Price at the door in cents. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_add_ticket_type",
    "arguments": {
      "event_id": "event_8c41d2",
      "name": "Jane Doe",
      "price": 1,
      "allocation": 1
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "ticket_type_id": "8841290",
    "event_id": "ev_48213",
    "name": "General admission",
    "price": 2000,
    "allocation": 250,
    "door_sales_price": 2500
  },
  "isError": false
}
```

## Add price tier

MCP tool: `dice_add_price_tier`

Access: write. Confirm: waits for the user's OK before it runs.

Adds a price tier to a ticket type. A tier takes over after the earlier tier's allocation sells out (pass allocation) or at a set time (pass time). Price is in cents. The response lists all tiers of the ticket type in order. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `ticket_type_id` | string | yes | Ticket type ID from get_event. |
| `name` | string | yes | e.g. Second release. |
| `price` | integer | yes | Face value in cents. |
| `allocation` | integer | no | Tickets in this tier, for allocation-based tiers. |
| `time` | datetime | no | When the tier switches, for time-based tiers. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_add_price_tier",
    "arguments": {
      "ticket_type_id": "8841273",
      "name": "Second release",
      "price": 1800,
      "allocation": 150
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "ticket_type_id": "8841273",
    "price_tier_type": "allocation",
    "tiers": [
      {
        "id": "510922",
        "name": "Early bird",
        "price": 1500,
        "allocation": 100
      },
      {
        "id": "510987",
        "name": "Second release",
        "price": 1800,
        "allocation": 150
      }
    ]
  },
  "isError": false
}
```

## Update ticket type

MCP tool: `dice_update_ticket_type`

Access: write. Confirm: waits for the user's OK before it runs.

Changes a ticket type: name, description, price, allocation, door price, or archived to stop sales. Only the fields you pass change. Price and allocation changes affect what fans pay and what is left. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `ticket_type_id` | string | yes | Ticket type ID from get_event. |
| `fields` | object | yes | Any of name, description, price, allocation, door_sales_price, archived. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_update_ticket_type",
    "arguments": {
      "ticket_type_id": "ticket_type_8c41d2",
      "fields": "fields"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "ticket_type_id": "8841290",
    "name": "General admission",
    "price": 2200,
    "allocation": 250,
    "archived": false
  },
  "isError": false
}
```

## Submit event

MCP tool: `dice_submit_event`

Access: write. Confirm: waits for the user's OK before it runs.

Sends a draft to DICE for review. Under the MIO terms DICE decides at its sole discretion which events it promotes, so the event can be declined. Once approved, it is announced and goes on sale on its dates. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_submit_event",
    "arguments": {
      "event_id": "event_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "event_id": "ev_48501",
    "state": "submitted"
  },
  "isError": false
}
```

## Update event

MCP tool: `dice_update_event`

Access: write. Confirm: waits for the user's OK before it runs.

Changes the name, times, venue, line-up or description of an event. Only the fields you pass change. Fans may already hold tickets, so tell them with message_attendees. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `fields` | object | yes | Any of name, start, end, venue, artists, description. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_update_event",
    "arguments": {
      "event_id": "event_8c41d2",
      "fields": "fields"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "event_id": "ev_48213",
    "state": "approved",
    "updated": [
      "start"
    ],
    "start": "2026-11-14T20:00:00+00:00"
  },
  "isError": false
}
```

## Message attendees

MCP tool: `dice_message_attendees`

Access: write. Confirm: waits for the user's OK before it runs.

Sends one message to the ticket holders of an event with MIO Connect. Keep it to event information such as door times. It reaches every ticket holder at once and cannot be unsent. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `message` | string | yes | Event information only, e.g. door times. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_message_attendees",
    "arguments": {
      "event_id": "ev_48213",
      "message": "Doors now open at 20:00. Your ticket is still valid."
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "event_id": "ev_48213",
    "status": "sent",
    "recipients": 182,
    "sent_at": "2026-11-14T12:00:00+00:00"
  },
  "isError": false
}
```

## Cancel event

MCP tool: `dice_cancel_event`

Access: write. Confirm: waits for the user's OK before it runs.

Cancels an event in MIO. Under the MIO terms, you are responsible for refunds due to customers when an event is cancelled or rescheduled. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "dice_cancel_event",
    "arguments": {
      "event_id": "event_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "event_id": "ev_48213",
    "state": "cancelled"
  },
  "isError": false
}
```
