MCP tools reference
DICE MCP tools
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
- DICE
| 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
readMCP tool dice_list_events
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 | Description |
|---|---|---|
| state | enum | draft, submitted, review, approved, declined, cancelled or archived. Default: all. |
| starts_after | date | Only events starting on or after this date. |
| starts_before | date | Only events starting before this date. |
| limit | integer | 1 to 100. Default: 25. |
| cursor | string | Next page cursor from the previous call. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "dice_list_events",
"arguments": {}
}
} Example response
{
"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
readMCP tool dice_get_event
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 | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "dice_get_event",
"arguments": {
"event_id": "event_8c41d2"
}
}
} Example response
{
"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
readMCP tool dice_get_sales_summary
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 | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| since | datetime | Only orders placed after this time. |
tools/call
JSON-RPC
{
"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
{
"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
readMCP tool dice_list_orders
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 | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| sales_channel | enum | internet, door, free or external. Default: all. |
| since | datetime | Only orders placed after this time. |
| limit | integer | 1 to 100. Default: 50. |
| cursor | string | Next page cursor from the previous call. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "dice_list_orders",
"arguments": {
"event_id": "event_8c41d2"
}
}
} Example response
{
"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
readMCP tool dice_list_ticket_holders
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 | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| ticket_type_id | string | Only one ticket type. |
| format | enum | json or csv. Default: json. |
| cursor | string | Next page cursor from the previous call. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "dice_list_ticket_holders",
"arguments": {
"event_id": "event_8c41d2"
}
}
} Example response
{
"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
readMCP tool dice_list_returns
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 | Description |
|---|---|---|
| event_id | string | Only one event. Default: all events. |
| since | datetime | Only returns after this time. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "dice_list_returns",
"arguments": {}
}
} Example response
{
"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
readMCP tool dice_list_transfers
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 | Description |
|---|---|---|
| event_id | string | Only one event. Default: all events. |
| since | datetime | Only transfers after this time. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "dice_list_transfers",
"arguments": {}
}
} Example response
{
"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
writeMCP tool dice_create_event
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 | Description |
|---|---|---|
| name required | string | Event name. |
| venue required | string | Venue name or ID from one of your past events. |
| start required | datetime | ISO 8601 with time zone. |
| end required | datetime | ISO 8601 with time zone. |
| description | string | Event description shown to fans. |
| artists | string[] | Line-up, headliner first. |
| currency | string | ISO code, e.g. USD, GBP, EUR. Default: your account currency. |
| announce_at | datetime | When the event appears on DICE. |
| on_sale_at | datetime | When tickets go on sale. |
tools/call
JSON-RPC
{
"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
{
"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
} MCP tool dice_add_ticket_type
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 | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| name required | string | e.g. Early bird, General admission. |
| price required | integer | Face value in cents. 0 for a free ticket. |
| allocation required | integer | Number of tickets. |
| description | string | Shown to fans under the name. |
| door_sales_price | integer | Price at the door in cents. |
tools/call
JSON-RPC
{
"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
{
"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
} MCP tool dice_add_price_tier
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 | Description |
|---|---|---|
| ticket_type_id required | string | Ticket type ID from get_event. |
| name required | string | e.g. Second release. |
| price required | integer | Face value in cents. |
| allocation | integer | Tickets in this tier, for allocation-based tiers. |
| time | datetime | When the tier switches, for time-based tiers. |
tools/call
JSON-RPC
{
"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
{
"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
} MCP tool dice_update_ticket_type
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 | Description |
|---|---|---|
| ticket_type_id required | string | Ticket type ID from get_event. |
| fields required | object | Any of name, description, price, allocation, door_sales_price, archived. |
tools/call
JSON-RPC
{
"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
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"ticket_type_id": "8841290",
"name": "General admission",
"price": 2200,
"allocation": 250,
"archived": false
},
"isError": false
} MCP tool dice_submit_event
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 | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "dice_submit_event",
"arguments": {
"event_id": "event_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "ev_48501",
"state": "submitted"
},
"isError": false
} MCP tool dice_update_event
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 | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| fields required | object | Any of name, start, end, venue, artists, description. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "dice_update_event",
"arguments": {
"event_id": "event_8c41d2",
"fields": "fields"
}
}
} Example response
{
"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
} MCP tool dice_message_attendees
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 | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| message required | string | Event information only, e.g. door times. |
tools/call
JSON-RPC
{
"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
{
"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
} MCP tool dice_cancel_event
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 | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "dice_cancel_event",
"arguments": {
"event_id": "event_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "ev_48213",
"state": "cancelled"
},
"isError": false
}